Несомненно, изменение конфигурации сервера или оптимизация запросов - это хорошее решение. Но как измерить результаты изменений и проверить, привело ли это к существенному повышению производительности? Парни из MySQL AB предусмотрели и это - MySQL поставляется с тестирующим ПО, которое называется (а как же иначе?) MySQL Benchmark Suite, и делает именно то, что указано в названии: загружает сервер, чтобы определить слабые места, проверить соответствие стандартам SQL и измерить производительность.
Исследуем альтернативы
Программа MySQL Benchmark Suite далеко не единственная в своем роде. Существуют альтернативы, такие как программа SuperSmack, доступная на http://www. mysql.com/portal/software/item-222.html, и программа Open Source Database Benchmark, доступная на http://osdb.sourceforge.net. Полный список средств тестирования доступен на http://ww.mysql.com/portal/software/ benchmarks/index.html и http://www.wiley.com/legace/copmbooks/pachev/.
Чтобы запустить MySQL Benchmark Suite, на вашей системе должен быть установлен Perl и пакет Perl DBI, а также драйвер баз данных MySQL (DBD). Если вы используете систему семейства UNIX, вполне возможно, что эти пакеты уже установлены. Их присутствие можно проверить простым способом - запустить в командной строке следующую команду.
Листинг 16.17.
[user@host]$ perl -e "use DBI"
Если Perl завершается без ошибки, можно быть уверенным, что модуль установлен. Если это не так, вам придется скачать его с http://www.cpan.org/ и установить в соответствии с инструкциями по установке для вашей системы. Детальнее об этом процессе говорится в главе 20, "MySQL и Perl", где обсуждается разработка приложений с Perl и MySQL.
MySQL Benchmark Suite находится в директории sql-bench/ вашей инсталляции MySQL, и содержит сценарии и данные для разных тестов. (Для получения более подробной информации об этих тестах см. врезку в разделе "Тестирование времени выполнения"). В таблице 16.1 содержится список всех сценариев с кратким описанием их работы.
Самый простой способ начать работу с MySQL Benchmark Suite - это перейти в директорию sql-bench/ и запустить все тесты сценарием run-all-tests.
Листинг 16.18.
[user@host]# /usr/local/mysql/sql-bench/run-all-tests -server=mysql
Тестирование времени выполнения
MySQL Benchmark Suite поддерживает Висконсинский тест - широко распространенный тест реляционных СУБД. Этот контролируемый однопользовательский эксперимент, использующий т.н. "искусственные" данные вместо "настоящих", главным образом разработан для измерения производительности запросов с использованием метрики времени запроса. Тесты включают выборки, вставки, обновления, объединения таблиц и совмещение данных.
На рисунке 16.1показан возможный результат.
Как видите, этот сценарий запускает все тесты, перечисленные в таблице 16.1, и возвращает время, затраченное на каждый тест. Больше информации о подробностях каждого теста можно получить, запустив соответствующий сценарий без каких-либо параметров, - большинство сценариев перед работой выводят краткую информацию об их назначении.
При желании также можно запустить только определенный тест, вызвав соответствующий сценарий. Рассмотрим следующий пример, где для определения времени соединения с сервером и отправки данных запускается тест test-connect.
Листинг 16.19.
[user@host]# /usr/local/mysql/sql-bench/test-connect На рис. 16.2 показано, как это может выглядеть.
Среди разных тестовых сценариев, включенных в MySQL Benchmark Suite, примечателен тест crash-me - специальная утилита, работа которой заключается в отправке серверу большого количества допустимых SQL-запросов и, в соответствии с ответом, определении набора функций, возможностей и ограничений. Рис. 16.3 иллюстрирует результат работы crash-me.
Если вы хотите увидеть результаты, полученные в сравнительном тесте MySQL против других программ, перейдите на http://www.mysql.com/information/crash-me.php.
Покупатель, будь осторожен!
При тестировании crash-me сервер находится на пределе своих возможностей и даже может выйти из строя. Поэтому данный тест должен использоваться очень аккуратно, причем не на работающем сервере.
Важно понимать, что тесты были проведены MySQL AB по своим, выгодным критериям, поэтому все результаты следует воспринимать с изрядной долей критики. Это относится ко многим другим производителям, которые будут говорить об их собственных или других "независимых" тестах, якобы доказывающих превосходство их продукта над другими. Тем не менее, всегда интересно анализировать результаты, которые, без сомнения, добавят жару в "баталиях" на форумах, посвященных базам данных.
Резюме
В этой главе рассматривалась важная тема оптимизации рабочих характеристик MySQL. Были раскрыты различные методики оптимизации запросов, включая следующие:
■ использование индексов для ускорения доступа к часто используемым столбцам;
■ использование нового кэша запросов для улучшения времени реакции на запрос;
■ анализ запросов с помощью команды EXPLAIN SELECT для понимания и последующего улучшения планирования запросов;
■ использование серверных переменных, обобщенных функций и сортировок для увеличения эффективности многотабличных запросов;
■ создание подмножеств данных с помощью команд INSERT...SELECT и временных таблиц для упрощения обработки сложных запросов;
■ выбор размера полей и удаление ненужных таблиц из структуры базы данных;
■ тонкая настройка кэша сервера и буферов памяти для получения большей производительности;
■ тестирование производительности сервера с помощью MySQL.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Тестирование
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Изменение настроек сервера | Все о MySQL. Механизм репликации MySQL |