Стендовые испытания БД Никита Кислицин Хакер, номер #070, стр. 070-130-1 (nikitoz@real.xakep.ru) Тестирование популярных схем хранения данных За последнее время ты научился работать с большим количеством разнообразных систем хранения данных. Мы изучили как сравнительно классические технологии, так и новаторские идеи и менее распространенные приемы. Встал вполне резонный вопрос: если есть куча технологий, какой из них отдать предпочтение? Этот вопрос в той или иной форме содержится примерно в половине приходящих мне писем. Наиболее полный ответ на него можно получить лишь тестированием производительности самых популярных технологий, чем мы сегодня и займемся. Я давно уже к этому подводил :). Ты вправе ожидать, что этот материал даст тебе ответ на риторический вопрос: «Что лучше – MySQL или pgSQL?». Но тебе придется приложить для этого некоторые умственные усилия, ведь, отвечая на подобный вопрос, однозначно говорить очень сложно. Можно лишь указать, в каких условиях тот или иной продукт предпочтительнее. А уже потребитель должен сделать вывод, что лучше всего подходит лично ему. Это почти как с автомобилями. Молодому, активному человеку без семьи, скорее всего, лучше подойдет небольшой спортивный автомобиль, чтобы катать с ветерком по улицам ночного города девушек, эффектно стартовать со светофоров и таким образом самоутверждаться за чужой счет ;). В то же время устоявшемуся порядочному семьянину ничего лучше просторного универсала не придумать – в нем и навоз для дачи возить можно, и тещу в магазин отвезти, и на рыбалку с друзьями съездить. Сегодня я протестирую скорость работы разных технологий хранения данных на наборе самых разнообразных тестов, включающих извлечение, запись, поиск и сортировку данных. При этом я постараюсь свести к минимуму внешние воздействия на испытательном стенде – все ресурсоемкие задачи будут остановлены, и мощный сервер будет заниматься лишь одним: выявлять победителя. Ну что ж, точи коньки, поехали! Испытательный стенд Прежде всего, мне хотелось бы указать характеристики сервера, на котором я проводил это тестирование. Это довольно мощная однопроцессорная машина с камнем Intel Pentium 4 2.60GHz, полугигабайтом быстрой памяти и двумя 80 Гб винчестерами, скрученными в один устойчивый к механическим проблемам raid-массив. На этой машине стоит FreeBSD версии 5.1: $> uname -a FreeBSD host.ru 5.1-RELEASE FreeBSD 5.1-RELEASE #0: Tue Sep 7 22:57:39 MSD 2004 /usr/obj/usr/src/sys/NEW Также на сервере установлен интерпретатор PHP последней версии 5.0.1, Apache/1.3.29, MySQL 4.0.20 и PostgreSQL-7.4.5. Это основной софт, разумеется, на машине заинсталлены и все необходимые библиотеки. Что касается настроек, большинство из них я оставил дефолтными, в том числе параметры, напрямую влияющие на скорость работы. Какие же тестовые задания я подготовил? Испытания проводятся в четырех основных категорях: запись в БД, сортировка, поиск и сложные запросы. В каждом из них я оперирую таблицами разного объема, содержащими поля разного типа. При этом я уделяю особое внимание скорости поиска и сортировки не только по выстроенному ключу, но и произвольному полю. Вообще же в итоге получилось около десяти различных тестов, которые и должны ответить на все твои вопросы. |