Как измерить производительность базы данных? - PullRequest
1 голос
/ 20 августа 2009

Я разрабатываю веб-приложение, которое будет работать с большими объемами данных в базе данных MySQL и работать с ними, что-то вроде словаря / тезауруса. Мне нужно проверить производительность БД по мере увеличения ее размера, поэтому я знаю, насколько медленным будет каждый запрос в будущем.

Есть идеи? Например, существуют ли специальные инструменты для проверки производительности БД для определенного запроса и т. Д.

Ответы [ 3 ]

4 голосов
/ 20 августа 2009

Знаете ли вы, что конкретно вы тестируете? Измерение «производительности» почти всегда бесполезно, если вы точно не знаете, чего именно вы хотите.

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

Мой совет, вероятно, будет проигнорирован, но я все равно скажу:

Не оптимизируйте, прежде чем знаете, чего хотите.

Не оптимизируйте при написании кода.

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

В любом случае, я понимаю, что вы, вероятно, искали более технический ответ, но эй ...

3 голосов
/ 20 августа 2009

Вы можете использовать Maatkit профилировщик запросов , чтобы измерить влияние объема данных на производительность MySQL.

И generateata.com для создания данных, необходимых для тестирования вашего приложения.

Вы также можете проверить отзывчивость вашего приложения с помощью инструментов тестирования HTTP, таких как:

1 голос
/ 20 августа 2009

хороший инструмент для использования - это apache ab, который стандартно поставляется с сервером apache httpd. Этот инструмент может устанавливать несколько соединений с веб-сервером и измерять его производительность. хотя firebug - это хороший способ увидеть, в каком порядке находятся вещи, сколько времени занимает загрузка каждого элемента и т. д., вы видите только опыт одного пользователя. против незагруженного тестового сервера, эта информация может занять вас до сих пор. ab моделирует подключение нескольких пользователей и дает более реалистичную картину того, как конкретная страница обрабатывает одновременных пользователей.

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

PS: ваша ОС не отвечает. вам придется выяснить это самостоятельно, основываясь на том, как написано ваше приложение, структуре ваших данных, конфигурации веб-сервера и сервера базы данных и т. д.

...