Как можно искусственно создать медленный запрос в MySQL?


15

Я готовлю презентацию через пару недель. Часть этой демонстрации предназначена для устранения проблем с MySQL, включая использование медленного журнала запросов. Я сгенерировал базу данных и установил наше приложение, но это чистая база данных, и поэтому сложно создать достаточно проблем.

Я пробовал следующее, чтобы получить запросы в медленном журнале запросов:

Установите медленное время запроса на 1 секунду.

Удалил несколько индексов.

Подчеркнул систему:

stress --cpu 100 --io 100 --vm 2 --vm-bytes 128M --timeout 1m

Сценарии некоторых основных вызовов веб-страницы с помощью wget.

Ничто из этого не вызвало медленных запросов. Есть ли другой способ искусственного напряжения базы данных для создания проблем? У меня недостаточно навыков, чтобы написать сложный Jmeter или другой генератор нагрузки. Я надеюсь, что, возможно, что-то встроенное в MySQL или другой трюк Linux вне стресса.


1
+1 За просьбу получать медленные запросы. Если бы только это было так в реальных случаях: D
красный

Ответы:


5

Оформить заказ mysqlslap . Вы можете передать один из запросов вашего веб-приложения с помощью --query и указать одновременных клиентов с --concurrency.


Это работало лучше всего ... используя это и комбинацию отмены настройки базы данных.
Серая гонка

34

Совершенно искусственно, но вы можете использовать sleep()функцию:

select sleep(10);

В журнале:

Time                 Id Command    Argument
# Time: 110629 16:19:13
# User@Host: mysql[mysql] @ localhost []
# Query_time: 10.000218  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1309389553;
select sleep(10);

Спасибо за предложение ... Журнал растет, но я бы хотел, чтобы они были законными запросами для приложения. Таким образом, я могу демо объяснить и другие диагностические инструменты.
Серая гонка

:) Хм ... может быть стратегическое LOCK TABLESсработает. Это может быть слишком глупо, как хорошо.
Марк Вагнер

1
Обычно выбираю * из ((выберите * из базы данных) x) и продолжаю получать все более и более рекурсивное решение для меня.
alexyorke

Используйте, DO SLEEP(10);если вы не хотите, чтобы результат SLEEP в вашем запросе.
Расмус Фрис

1

Возможно, может помочь де-настройка базы данных? Например, уменьшить размер key_buffers?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.