2

该表有两个字段:id、内容和只有一个主键(id)。

字段 id 类型为 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;

它只是用作键值存储。

我的测试结果是:

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 条记录/秒,约 1 亿条记录/天),很少有更新/删除。

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 存储?欢迎任何建议。

===========

谢谢大家,最后测试 TokuDB 和 InnoDB 的性能都不足以满足我们的用例。

现在我们使用像 bitcask 这样的解决方案作为我们的存储。Bitcask append-only 风格的写入性能比我们预期的要好得多。我们只需要处理关于哈希索引的内存问题。

4

2 回答 2

0

如果您一次插入一行,我建议尽可能更改为多行插入语句,如“插入事件 (eventId,content) 值 (1,'value 1'), (2,'value 2'), ..." 因为可能会有相当多的开销事务。此外,TokuDB 在每个版本中都提高了性能,我建议在当前版本上运行。

于 2012-09-14T02:28:50.590 回答
-1

TokuDB 的主要特点是:

  • 热门架构更改:
    • Hotindex 创建:TokuDB 表支持插入、删除和查询,在向该表添加索引时无需停机。它使用分形树进行索引,而 innodb 使用B-Tree
    • 热列添加和删除:TokuDB 表支持在更改表添加或删除列时以最短的停机时间进行插入、删除和查询。

更多详情请参阅什么是 TokuDB?如何在 mysql 5.1 上安装 TokuDB?

于 2012-04-09T07:26:44.743 回答