После сравнения 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 индексами.
Использовался тот же маленких сервачек.
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 индексами.