MySQL Benchmark Suite: тест производительности MySQL на примере

Утилита Benchmark Suite для тестирования (бенчмаркинга) MySQLВ предыдущей статье мы рассмотрели утилиту http_load. Теперь рассмотрим MySQL Benchmark Suite. Это ПО состоит из набора эталонных тестов, написанных на языке Perl, так что для их запуска вам потребуется Perl. Эталонные тесты находятся в под­каталоге sql-bench/ установочного каталога MySQL. В системах Debian GNU/Linux, например, они хранятся в каталоге /usr/share/mysql/sql-bench/.

Прежде чем приступать к работе, прочитайте файл README, в котором объясняется, как использовать этот комплект инструментов, и описываются аргументы командной строки. Для запуска любых тестов применяются примерно такие команды:

$ cd /usr/share/mysql/sql-bench/
sql-bench$ ./run-all-tests --server=mysql --user=root --log --fast
Test finished. You can find the result in:
output/RUN-mysql_fast-Linux_2.4.18_686_smp_i686

Эталонное тестирование длится довольно долго — возможно, больше часа в зави­симости от оборудования и конфигурации. Если вы укажете параметр командной строки --log, то сможете отслеживать состояние теста во время его выполнения. Каждый тест записывает свои результаты в подкаталог output. Все файлы содержат последовательности временных меток, соответствующих операциям, реализуемым в каждом эталонном тесте. Вот немного переформатированный для удобства печати образец:

sql-bench$ tail −5 output/select-mysql_fast-Linux_2.4.18_686_smp_i686
Time for count_distinct_group_on_key (1000:6000):
   34 wallclock secs ( 0.20 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.28 CPU)
Time for count_distinct_group_on_key_parts (1000:100000):
   34 wallclock secs ( 0.57 usr 0.27 sys + 0.00 cusr 0.00 csys = 0.84 CPU)
Time for count_distinct_group (1000:100000):
   34 wallclock secs ( 0.59 usr 0.20 sys + 0.00 cusr 0.00 csys = 0.79 CPU)
Time for count_distinct_big (100:1000000):
   8 wallclock secs ( 4.22 usr 2.20 sys + 0.00 cusr 0.00 csys = 6.42 CPU)
Total time:
   868 wallclock secs (33.24 usr 9.55 sys + 0.00 cusr 0.00 csys = 42.79 CPU)

Например, выполнение теста count_distinct_group_on_key (1000:6000) заняло 34 секунды. Это общее время, которое потребовалось клиенту. Другие значения (usr, sys, cursr, csys), которые добавили до 0,28 секунды, составляют издержки для этого теста. Данное значение показывает, сколько времени клиентский код реально работал, а не ожидал ответа от сервера MySQL. Таким образом, интересующее нас значение — время, потраченное на неконтролируемую клиентом обработку, — составило 33,72 секунды.

Тесты можно запускать и по отдельности, а не в составе комплекта. Например, вы можете решить сфокусироваться только на тестировании операций вставки. Полу­ченная информация будет более подробной, чем в сводном отчете, созданном при запуске полного набора тестов:

sql-bench$ ./test-insert
Testing server 'MySQL 4.0.13 log' at 2003-05-18 11:02:39
Testing the speed of inserting data into 1 table and do some selects on it.
The tests are done with a table that has 100000 rows.
Generating random keys
Creating tables
Inserting 100000 rows in order
Inserting 100000 rows in reverse order
Inserting 100000 rows in random order
Time for insert (300000):
   42 wallclock secs ( 7.91 usr 5.03 sys + 0.00 cusr 0.00 csys = 12.94 CPU)
Testing insert of duplicates
Time for insert_duplicates (100000):
   16 wallclock secs ( 2.28 usr 1.89 sys + 0.00 cusr 0.00 csys = 4.17 CPU)

 

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

Модель развития базы данных My...
Модель развития базы данных My... 1407 просмотров Ирина Светлова Thu, 10 Jan 2019, 12:29:03
Выбор оптимальных типов данных...
Выбор оптимальных типов данных... 9718 просмотров Валерий Павлюков Sun, 27 Oct 2019, 15:24:19
Транзакции в базе данных MySQL
Транзакции в базе данных MySQL 21416 просмотров Ирина Светлова Mon, 07 Jan 2019, 05:18:23
Обзор архитектуры MySQL
Обзор архитектуры MySQL 4524 просмотров Ирина Светлова Wed, 09 Jan 2019, 04:25:21
Войдите чтобы комментировать