Набор тестов MySQL (The MySQL Benchmark Suite)
В данном разделе будет находиться техническое описание набора эталонных тестов MySQL (и crash-me ), но оно пока еще не написано. В настоящее время можно получить хорошее представление об эталонном тесте, глядя на код и результаты в каталоге "sql-bench" любого исходного дистрибутива MySQL.
Данный набор эталонных создан с целью обеспечить эталонный тест, который будет информировать любого пользователя о том, что в данной реализации SQL выполняется хорошо, а что плохо.
Обратите внимание: этот эталонный тест - однопоточный, так что в нем измеряется минимальное время выполнения операций. В будущем мы планируем добавить в данный набор большое количество многопоточных тестов.
Например (выполнено на одной машине под NT 4.0):
Чтение 2000000 строк по индексу | Секунды | Секунды | mysql | 367 | 249 |
mysql_odbc | 464 | | db2_odbc | 1206 | | informix_odbc | 121126 | | ms-sql_odbc | 1634 | | oracle_odbc | 20800 | | solid_odbc | 877 | | sybase_odbc | 17614 | |
Вставка 350768 строк | Секунды | Секунды | mysql | 381 | 206 | mysql_odbc | 619 | | db2_odbc | 3460 | | informix_odbc | 2692 | | ms-sql_odbc | 4012 | | oracle_odbc | 11291 | | solid_odbc | 1801 | | sybase_odbc | 4802 | |
В предыдущем тесте MySQL запускался с 8-мегабайтным индексным кэшем.
Гораздо больше результатов тестов вы сможете найти по адресу http://www.mysql.com/information/benchmarks.html.
Обратите внимание: данные об Oracle отсутствуют - по просьбе компании Oracle вся информация по их продукту была удалена. Все эталонные тесты для Oracle должны быть пропущены через компанию Oracle! Мы считаем, однако, что при таком способе тестирования результаты эталонных тестов для Oracle будут в очень высокой степени различаться, поскольку приведенные на сайте результаты призваны показывать на что способна стандартная инсталляция для одного клиента.
Чтобы выполнить набор эталонных тестов, необходимо загрузить исходный дистрибутив MySQL, установить драйвер perl DBI, драйвер perl DBD для той базы данных, которую нужно проверить, а затем выполнить:
cd sql-bench perl run-all-tests --server=#
где # - один из поддерживаемых серверов. Список всех опций и поддерживаемых серверов можно получить, выполнив run-all-tests --help .
Программа crash-me пытается определить, какие функции поддерживаются СУБД, и какие возможности и ограничения имеют эти функции при выполнении запросов. Например, она определяет следующее:
какие типы столбцов поддерживаются
сколько индексов поддерживается
какие функции поддерживаются
насколько большим может быть запрос
насколько большим может быть столбец VARCHAR
Результат, полученные crash-me для большого количества различных СУБД, можно найти по адресу: http://www.mysql.com/information/crash-me.php.
Использование собственных тестов
Чтобы найти "узкие места" в своем приложении и базе данных, вы должны их тщательно протестировать. После устранения "узкого места" (или после замены его некой заглушкой) можно легко идентифицировать следующее "узкое место" (и так далее). Даже если общая производительность приложения достаточна, нужно по крайней мере выявить все "узкие места" и определиться с тем, как их устранять, - на будущее, если когда-нибудь потребуется дополнительная производительность.
Примеры переносимых программ программы для эталонного тестирования можно найти в наборе тестов MySQL. См. раздел Набор тестов MySQL (The MySQL Benchmark Suite). Можно взять любую программу из этого набора и модифицировать ее для своих потребностей. Таким образом можно испытывать различные решения проблемы и проверять, которое из них самое быстрое.
Зачастую некоторые проблемы проявляются только тогда, когда система очень сильно загружена. К нам часто обращаются клиенты, которые, запустив (протестированную) систему в производство, сталкиваются с проблемами, связанными с нагрузкой. На сегодня причиной каждого из этих случаев были либо проблемы, связанные с базовой конструкцией (при высокой нагрузке нехорошо выполняется сканирование таблиц), либо проблемы ОС/библиотек. И большинство таких проблем было бы намного легче устранить до начала промышленной эксплуатации систем.
Чтобы избежать подобных проблем, нужно постараться выполнить эталонное тестирование всего приложения при самой плохой возможной нагрузке! Для этого можно использовать программу Super Smack , которая доступна по адресу: http://www.mysql.com/Downloads/super-smack/super-smack-1.0.tar.gz. Эта программа, как следует из ее имени (smack - шлепок - прим. пер.), способна поставить систему на колени, так что используйте её только на разрабатываемых системах (проще говоря, в девелопменте).
1 2 3 4
8 8 8
| |