вторник, 15 мая 2012 г.

PostgreSQL, MySql and MariaDB as Key-Value storage

После сравнения BerkeleyDB и TokyoCabinet настало время посмотреть на PostgreSQL, MySql и MariaDB как на хранилища ключ-значения.

Использовался тот же  маленких сервачек.

PostgreSQL


postgresql-server v9.1.2

SET synchronous_commit TO OFF
commit_delay = 1

Во всех вариантах PostgreSQL заметно быстрей чем BerkeleyDB и TokyoCabinet! Разумеется это, когда объем базы превышал размер оперативной памяти.

С ростом базы замечено существенное снижение производительности, когда используется btree индекс.
Поэтому для очень больших баз и когда этого достаточно, стоит использовать hash индекс.


MySql and MariaDB


Для perl модуля DBD::mysql используется патч https://rt.cpan.org/Public/Bug/Display.html?id=76462,
чтобы при mysql_server_prepare не было утечки памяти.

mysql-server-5.1.61
mariadb-server-5.2.10

У сравнении участвовали:
MyISAM
ARIA
XtraDB (Innodb_flush_log_at_trx_commit=0)

HandlerSocket не использовался.

На маленьких базах и длинных ключах TokyoCabinet hash (не btree) быстрей в 3-5 раз чем MyISAM, ARIA и XtraDB.
На коротких ключах MyISAM быстрей в 5 раз.

Когда базы большие, то MySql and MariaDB вырываются вперед, даже XtraDB быстрей, чем TokyoCabinet.

Как и у PostgreSQL, с ростом базы замечено существенное снижение производительности, когда используется btree индекс.
Преимущества hash индекса (XtraDB) не сказалось, в отличие от PostgreSQL.


Выводы


Когда базы маленькие можно использовать TokyoCabinet или BerkeleyDB.
Когда данных больше, то стоить посмотреть в сторону MyISAM, ARIA (MariaDB) или PostgreSQL.
Когда базы огромные, то лучше использовать PostgreSQL с HASH индексами.

2 комментария:

zloyrusskiy комментирует...

1. Чем тестировалось?
2. Какие конфиги?
3. Почему mysql старые?

Nick комментирует...

1. Веерная запись и чтение.
2. Если MySql показал бы хуже производительность, чем TokyoCabinet, то уже смотрел бы в конфиги, а так дефолтовые, кроме тех изменений,что указал. Даже HandlerSocket не стал пробовать. :-) Долго тунил и разбирался с TokyoCabinet, так как хвалят ее, а у меня, и некоторых людей она показала себя не так хорошо, как ожидалось.
3. Новые версии разве покажут лучший результат при однопоточном доступе?"