Skip to content

Bash scripts for highloading and measuring performance of mysql, using awk and existing SQL logs from production system.

License

Notifications You must be signed in to change notification settings

bskydive/mysql_bash_highload_test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mysql_bash_highload_test

Bash scripts for highloading and measuring performance of mysql, using awk and existing SQL logs from production system.

Я хочу поделиться опытом нагрузочного тестирования СУБД, с использованием продуктивной нагрузки.

Это реальный пример реализации многопоточного тестирования БД на bash.

Суть подхода в следующем:

  1. Собирается полный лог SQL запросов в БД, подготавливается под конкретную исследовательскую задачу. Например, удаляются все запросы, кроме select.
  2. Задается количество потоков, а также количество повторений одного и того же SQL запроса.
  3. Исходные данные разделяются на потоки.
  4. В каждом потоке каждый оператор исходного набора выполняется определенное количество раз. Порядок выполнения операторов устанавливается псевдослучайный.

Когда я приступил к решению данной задачи, у меня не было под рукой других инструментов, кроме знаний bash/awk. Кроме этого, не было существенных ограничений по ресурсам и минимальной нагрузке на БД. Поэтому я написал набор скриптов bash для выполнения этой задачи.

Основная задача - "на скорую руку" подобрать параметры конфигурации СУБД, для увеличения её производительности.

Сложность заключалась в том, что запросы необходимо было выполнять в несколько раздельных потоков. А именно, в их строго определённом количестве, на протяжении всего расчета.

Различные способы организации многопоточности с помощью семафоров в файле и в памяти не сработали. Поэтому, скрипты пришлось разделить на три фазы:

  1. Скрипт запуска, контроля/мониторинга и завершения расчета. Запуск скрипта 2 в фоновом режиме.
  2. Скрипт подготовки(рандомизации) исходных файлов и запуска расчёта потоков.
  3. Скрипт запуска расчёта одного потока, с установленным количеством запусков каждого SQL запроса.

Скрипты не запускались несколько лет, на тестирование у меня сейчас нет времени. Поэтому прошу прощения, если не заработают. Можно обратиться ко мне, если потребуется их "оживить".

http://stepanovv.ru/about

About

Bash scripts for highloading and measuring performance of mysql, using awk and existing SQL logs from production system.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages