Percona TPCC-MySQL: оценка производительности базы данных

Утилита dbt2 TPC-C для тестирования (бенчмаркинга) MySQLВ предыдущих публикациях мы уже рассказали как оценить производительность сервера MySQL или MariaDb с помощью утилит Sysbench, dbt2 TPC-CMySQL Benchmark Suite и http_load. В сегодняшней статье мы рассмотрим еще одну программу для тестирования - Percona TPCC-MySQL. Рабочая нагрузка, которую генерирует sysbench, отлично подходит для простых тестов и сравнений, однако она не вполне релевантна для реальных приложений. Для этого намного лучше подходит эталонный тест ТРС-С. Хотя инструмент dbt2 представляет собой одну приличную реали­зацию этого теста, он имеет некоторые недостатки. Это побудило нас создать еще один инструмент, похожий на ТСР-С, но более подходящий для запуска множества очень больших эталонных тестов. Код этого инструмента доступен через Launchpad по этому адресу, там же находится небольшой файл README, в котором объясняется, как создавать и использовать этот инструмент. Это довольно просто. При большом количестве хранилищ данных вы, возможно, задействуете утилиту параллельной загрузки данных, включенную в ин­струмент, потому что в противном случае потребуется много времени для создания набора данных.

Для того чтобы использовать этот инструмент, необходимо создать структуру базы данных и таблиц, загрузить данные и выполнить эталонный тест. Структура базы данных и таблиц создается простым скриптом SQL, входящим в исходный код, а загрузка данных осуществляется с помощью программы tpccload на языке С, которую вам придется скомпилировать. Тест поработает некоторое время и выдаст большой объем информации. (Всегда целесообразно перенаправлять вывод про­граммы в файлы для документирования, но здесь вам особенно нужно это сделать, иначе вы рискуете потерять даже историю прокрутки.) Далее приведен пример установки, создающий небольшой (пять хранилищ данных) набор данных в базе с именем tpcc5:

$ ./tpcc_load localhost tpcc5 username p4ssword 5

*************************************
*** ###easy### TPC-C Data Loader  ***
*************************************
<Parameters>
       [server]: localhost
         [port]: 3306
       [DBname]: tpcc5
         [user]: username
         [pass]: p4ssword
    [warehouse]: 5
TPCC Data Load Started...
Loading Item
.................................................. 5000
.................................................. 10000
.................................................. 15000

[output snipped for brevity]

Loading Orders for D=10, W= 5
.......... 1000
.......... 2000
.......... 3000
Orders Done.

...DATA LOADING COMPLETED SUCCESSFULLY.

Далее нужно запустить эталонный тест, для которого требуется программа tpccstart на языке С. Здесь опять будет много выходных данных, которые следует перена­править в файл. Ниже приведен очень короткий пример, который запускает пять потоков для пяти хранилищ данных, «прогревается» 30 секунд, а затем в течение 30 секунд проводит эталонное тестирование:

$ ./tpcc_start localhost tpcc5 username p4ssword 5 5 30 30
***************************************
*** ###easy### TPC-C Load Generator ***
***************************************
<Parameters>
    [server]: localhost
      [port]: 3306
    [DBname]: tpcc5
      [user]: username
      [pass]: p4ssword
 [warehouse]: 5
[connection]: 5
    [rampup]: 30 (sec.)
   [measure]: 30 (sec.)

RAMP-UP TIME.(30 sec.)

MEASURING START.

10, 63(0):0.40, 63(0):0.42, 7(0):0.76, 6(0):2.60, 6(0):0.17
20, 75(0):0.40, 74(0):0.62, 7(0):0.04, 9(0):2.38, 7(0):0.75
30, 83(0):0.22, 84(0):0.37, 9(0):0.04, 7(0):1.97, 9(0):0.80
STOPPING THREADS.....

<RT Histogram>

1.New-Order
2.Payment
3.Order-Status
4.Delivery
5.Stock-Level

<90th Percentile RT (MaxRT)>
   New-Order : 0.37 (1.10)
     Payment : 0.47 (1.24)
Order-Status : 0.06 (0.96)
    Delivery : 2.43 (2.72)
 Stock-Level : 0.75 (0.79)

<Raw Results>
 [0] sc:221 lt:0 rt:0 fl:0
 [1] sc:221 lt:0 rt:0 fl:0
 [2] sc:23 lt:0 rt:0 fl:0
 [3] sc:22 lt:0 rt:0 fl:0
 [4] sc:22 lt:0 rt:0 fl:0
in 30 sec.

<Raw Results2(sum ver.)>
 [0] sc:221 lt:0 rt:0 fl:0
 [1] sc:221 lt:0 rt:0 fl:0
 [2] sc:23 lt:0 rt:0 fl:0
 [3] sc:22 lt:0 rt:0 fl:0
 [4] sc:22 lt:0 rt:0 fl:0

<Constraint Check> (all must be [OK])
 [transaction percentage]
     Payment: 43.42% (>=43.0%) [OK]
Order-Status: 4.52% (>= 4.0%) [OK]
    Delivery: 4.32% (>= 4.0%) [OK]
 Stock-Level: 4.32% (>= 4.0%) [OK]
[response time (at least 90% passed)]
   New-Order: 100.00% [OK]
     Payment: 100.00% [OK]
Order-Status: 100.00% [OK]
    Delivery: 100.00% [OK]
 Stock-Level: 100.00% [OK]

<TpmC>
             442.000 TpmC

Последняя строка — это результат эталонного теста: количество транзакций в ми­нуту, достигнутое в  процессе его выполнения


Если вы видите результаты, отклоняющиеся от нормы, в строках, непосредственно предшествующих этой (например в строках проверки ограничений), для поиска ошибок можете проверить гистограммы времени отклика и другую выведенную информацию. Естественно, вы должны были использовать скрипты, аналогичные показанным в моем блоге. Кроме того, вам нужны детальные диагностические данные, а также информация о производительности сервера во время выполнения эталонных тестов.

 

Некоторые итоги по оценки производительности MySQL

У каждого, кто использует MySQL, есть причины разобраться в эталонном тести­ровании. Эталонное тестирование — это не просто практическая деятельность для решения бизнес-задач, но и образовательный процесс. Изучение того, как струк­турировать задачу таким образом, чтобы эталонный тест мог помочь найти ответ, аналогично широкому спектру проблем — от работы с лексическими задачами до со­ставления уравнений в математическом курсе. Формулировка правильного вопроса, выбор правильного эталонного теста для ответа на него, определение продолжитель­ности и параметров эталонного теста, его запуск, сбор данных и анализ результатов превратят вас в более грамотного пользователя MySQL.

Если вы еще не знаете sysbench, мы рекомендуем хотя бы ознакомиться с ним. Как минимум узнайте, как использовать его эталонные тесты oltp и fileio. Эталонные тесты oltp очень удобны для быстрого сравнения разных систем. В то же время эталонные тесты файловой системы и диска неоценимы для устранения неполадок и изолирования ошибочных компонентов при возникновении проблем с производи­тельностью системы. Мы часто использовали такие эталонные тесты, чтобы доказать: несмотря на утверждения администратора, у SAN действительно был ошибочный диск, а политика кэширования RAID-контроллера на самом деле не была настрое­на так, как могло показаться, если судить по информации от утилиты. И когда вы проводите эталонное тестирование диска, который, по его информации, способен выполнять 14 000 произвольных чтений в секунду, вы понимаете, что либо сами допустили ошибку, либо в системе серьезные ошибки, либо она неправильно скон­фигурирована.


Если вы планируете часто проводить эталонное тестирование систем, целесообразно упорядочить этот процесс. Выберите несколько инструментов эталонного тестиро­вания, которые соответствуют вашим потребностям, и хорошо их изучите. Создайте библиотеку скриптов, помогающих вам при настройке тестов, фиксации программ­ного вывода, выводе информации о производительности системы и статусных сообщений, а затем при ее анализе. Освойтесь с утилитой построения графиков, например gnuplot или R, — не тратьте время на электронные таблицы, они слишком громоздки и медленны. Стройте графики своевременно и регулярно, чтобы выявлять проблемы и неудачи в своих эталонных тестах и системах. Ваши глаза быстрее обна­ружат аномалию, чем любой скрипт или инструмент.


 

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

Модель развития базы данных My...
Модель развития базы данных My... 790 просмотров Ирина Светлова Thu, 10 Jan 2019, 12:29:03
Выбор оптимальных типов данных...
Выбор оптимальных типов данных... 3614 просмотров Валерий Павлюков Sun, 27 Oct 2019, 15:24:19
Обзор версий MySQL - какой рел...
Обзор версий MySQL - какой рел... 4974 просмотров Ирина Светлова Fri, 05 Feb 2021, 17:19:41
Транзакции в базе данных MySQL
Транзакции в базе данных MySQL 8485 просмотров Ирина Светлова Mon, 07 Jan 2019, 05:18:23
Войдите чтобы комментировать