В таблице есть два поля: идентификатор, содержимое и только один первичный ключ (идентификатор).
Тип идентификатора поля - bigint.Тип содержимого поля - TEXT, для этого поля - var-lenth, возможно, какая-то запись будет 20k, а средняя длина записи - 3k.
Схема таблицы:
CREATE TABLE `events` (
`eventId` bigint(20) NOT NULL DEFAULT '0',
`content` text,
PRIMARY KEY (`eventId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Это простоиспользуется в качестве хранилища Key-Value.
Результат моего теста:
InnoDB: 2200 records/second
TokuDB: 1300 records/second
BDB-JE: 12000 records/second
LevelDB-JNI: 22000 records/second(not stable, need test again)
результат очень очень плохой.
3K слишком велико для tokuDB?
В Моем приложении много вставок (> 2000 записей в секунду, около 100 миллионов записей в день) и редких обновлений / удалений.
TokuDB version: mysql-5.1.52-tokudb-5.0.6-36394-linux-x86_64-glibc23.tar.gz
InnoDB version: mysql 5.1.34
OS: CentOS 5.4 x86_64
Одна из причин, по которой мы выбираем InnoDB / TokuDB, заключается в том, что нам нужна поддержка и поддержка разделов.Может быть, я попробую LevelDB или другое хранилище Key-Value?Любой sugguest будет приветствовать.
===========
Спасибо всем, наконец-то, тестирование производительности TokuDB и InnoDB недостаточно для нашего варианта использования.
Теперь в качестве хранилища используется решение типа bitcask.Производительность записи в стиле только для добавления в Bitcask намного лучше, чем мы ожидаем.Нам просто нужно решить проблему с памятью в отношении хеш-индекса.