该表有两个字段:id、content和只有一个主键(id)。
字段id类型为bigint。字段内容类型是TEXT,因为这个字段是可变长度的,可能有些记录是20k,记录的平均长度是3k。
表模式:
CREATE TABLE `events` (
`eventId` bigint(20) NOT NULL DEFAULT '0',
`content` text,
PRIMARY KEY (`eventId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
它只是用作键值存储。
我的测试结果是:
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条记录,每天大约100M条记录),很少更新/删除。
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或其他键值存储?欢迎任何一位客人。
================
感谢大家,最后测试TokuDB和InnoDB的性能对于我们的用例来说都不够好。
现在我们使用像比特桶这样的解决方案作为我们的存储。Bitask仅追加样式的写入性能比我们预期的要好得多。我们只需要处理关于哈希索引的内存问题。
如果您一次插入一行,我建议尽可能更改为多行插入语句,如"insert into events(eventId,content)values(1,'value1'),(2,'value2'),…",因为可能会有相当多的开销事务。此外,TokuDB在每个版本中都提高了性能,我建议在当前版本上运行。
TokuDB的主要功能是:
- 热架构更改:
- Hotindex创建:TokuDB表支持插入、删除和查询,并且在向该表添加索引时没有停机时间。它使用分形树进行索引,而innodb使用b-树
- 热列添加和删除:当alter表添加或删除列时,TokuDB表支持插入、删除和查询,停机时间最短
更多关于什么是TokuDB的详细信息?如何在mysql 5.1上安装TokuDB?