Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #70, ОКТЯБРЬ 2004 г.

Стендовые испытания БД

Никита Кислицин

Хакер, номер #070, стр. 070-130-4


SELECT * FROM te ORDER BY val DESC LIMIT 10;

В таблицах te на момент тестирования будет находиться 10000 различных записей, и задача их сортировки на самом деле не так уж и тривиальна. Посмотрим, как с этим справятся наши подопытные. Результаты разглядывай на третьем графике.

Удивительно. Постгрес опять проигрывает, но на этот раз уже и MySQL, и SQLite. Причем эта БД работает над запросом примерно в пять раз дольше своих конкурентов. Полный провал. Интересно, что MySQL и SQLite идут ноздря в ноздрю – время выполнения ими запросов абсолютно одинаково. Минусы SQLite с лихвой окупились увеличением производительности. Сейчас в голову приходит только одно: может, дело в используемом типе text? В самом деле, что будет, если проделать все эти тесты для строк с фиксированной длиной? Сейчас посмотрим... Создаю новую таблицу:

Delete from te; drop table te; create table te (id int not null primary key, val varchar(40));

И запускаю сценарии тестирования заново. Результаты – шелест волос на голове. Нет, ребята, Постгрес – это что-то с чем-то. Не знаю, чем это оправдать, но результаты тестов только ухудшились. Мне даже лень было рисовать график для этого текста :).

Может, если сортировку проводить по построенному ключу id, результаты выравняются? Мне кажется, это было бы логично. Сейчас посмотрим. Не тут-то было! Постгрес по-прежнему причмокивает, а вперед нежданно-негаданно вырвалась малютка SQLite, причем она делает мастодонта MySQL примерно в два раза по скорости работы! Вот это да. Неожиданный итог, на мой взгляд.

Выводы

Выводы. Не люблю это слово. Сам делай выводы. А я подытожу. Итак, мы только что выявили наглядную причину популярности MySQL – высокая скорость работы на любых запросах, надежность и удобство использования. Поняли также, почему PostgreSQL сосет лапу – это медленное глюкалово, которое по скорости работы обделала почти всюду малютка SQLite. Последняя, надо заметить, испытывает затруднения только на вставке новых записей в БД, а во всех остальных случаях ведет себя просто отлично. Я бы посоветовал использовать SQLite на небольших проектах, где доля вставляемой в БД информации не так уж велика. Посоветовал бы также стереть со своего винчестера Постгрес. Возможно, я слишком агрессивен по отношению к этой базе данных. Возможно, если объем информации перевалит за 4 Гб, Постгрес начнет работать очень быстро. Возможно, он как-то настраивается. Возможно… Но мне абсолютно по фигу все эти «возможно». Я тестировал потребительские качества этого продукта при использовании в небольших проектах, и он провалился по всем статьям. Откровенно говоря, теперь даже лейбл этого проекта – голубой слоник, у меня вызывает рвотные позывы. То ли дело дельфинчик MySQL.

Установка PostgreSQL

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

Назад на стр. 070-130-3  Содержание  Вперед на стр. 070-130-5