MySQL: инструменты и утилиты для тестирования сервера

Утилиты для тестирования (бенчмаркинга) MySQLИтак, на текущий момент мы изучили для чего, что измерять и какими способами тестировать производительность БД MySQL. Теперь обратим внимание на то, какие программные средства, инструменты и утилиты для этого используются. Если нет веских оснований считать, что готовые инструменты не подходят для ваших целей, то не стоит создавать собственную систему эталонного тестирования баз данных MySQL, а использовать готовые проверенные решения. В этой статье я расскажу о некоторых из этих инструментов.


Оглавление статьи[Показать]


 

Полностековые инструменты

Вспомним, что существует два типа эталонного тестирования: полностековое и по­компонентное. Нет ничего удивительного в том, что имеются инструменты для тестирования всего приложения и тестирования под нагрузкой MySQL и других компонентов по отдельности. Полностековое тестирование — обычно лучший способ получить полное представление о производительности всей системы. В число инструментов полностекового тестирования входят следующие:

 

Инструменты покомпонентного тестирования

Предусмотрены несколько полезных инструментов для тестирования производитель­ности MySQL и операционной системы, на которой она работает. Далее приведем примеры эталонных тестов, в которых эти инструменты используются.

 

Функция MySQL BENCHMARK()

В MySQL имеется удобная функция BENCHMARK(), которую можно использовать для тестирования скорости выполнения определенных типов операций. Для этого нужно указать количество прогонов и подлежащее выполнению выражение. Им может быть любое скалярное выражение, например скалярный подзапрос или функция. Это удоб­но для тестирования относительных скоростей некоторых операций, в частности для оценки того, какая из функций, MD5() или SHA1(), работает быстрее:

mysql> SET @input := 'hello world';
mysql> SELECT BENCHMARK(1000000, MD5(@input));
+---------------------------------+
| BENCHMARK(1000000, MD5(@input)) |
+---------------------------------+
| 0 |
+---------------------------------+
1 row in set (2.78 sec)
mysql> SELECT BENCHMARK(1000000, SHA1(@input));
+----------------------------------+
| BENCHMARK(1000000, SHA1(@input)) |
+----------------------------------+
| 0 |
+----------------------------------+
1 row in set (3.50 sec)

 

Возвращаемым значением всегда является 0, клиентское приложение сообщает, сколько времени потребовалось на выполнение запроса. В данном случае, похоже, быстрее работает MD5(). Однако корректно использовать функцию BENCHMARK() не­просто, если вы не совсем понимаете, что она делает. А она просто определяет, как быстро сервер может выполнить выражение, но не сообщает ничего об издержках на синтаксический анализ и оптимизацию. И если выражение не включает в себя пользовательскую переменную, как в нашем примере, то второй и последующие случаи выполнения сервером данного выражения могут оказаться обращением к кэшу.

Несмотря на удобство функции BENCHMARK(), мы никогда не применяем ее для реаль­ного эталонного тестирования: слишком трудно определить, что она в действитель­ности измеряет. Кроме того, ее результаты относятся лишь к небольшой части всего процесса выполнения.

Теперь рассмотрим на конкретных примерах, как работает каждая утилита. Начнем с http_load.

 

Вас заинтересует / Intresting for you:

Подсистемы (движки) хранения в...
Подсистемы (движки) хранения в... 4617 просмотров Дэйзи ак-Макарова Wed, 04 Aug 2021, 18:11:43
Эталонное тестирование MySQL (...
Эталонное тестирование MySQL (... 2390 просмотров Ирина Светлова Sun, 13 Jan 2019, 07:30:59
Введение в большие данные и My...
Введение в большие данные и My... 742 просмотров Дэйзи ак-Макарова Tue, 03 Aug 2021, 16:50:01
dbt2 TPC-C: оценка производите...
dbt2 TPC-C: оценка производите... 1912 просмотров Ирина Светлова Fri, 18 Jan 2019, 17:15:58
Печать
Войдите чтобы комментировать