5

我正在评估东京内阁表引擎。在达到 100 万条记录后,插入速度会显着降低。批量大小为 100,000,并在事务中完成。我尝试设置 xmsiz 但仍然没有用。东京内阁有人遇到过这个问题吗?

细节

Tokyo cabinet - 1.4.3
Perl 绑定 - 1.23
操作系统:Ubuntu 7.10(Windows XP 之上的 VMWare Player)

4

3 回答 3

4

我也碰到了每个分片大约 100 万条记录的砖墙(在客户端进行分片,没什么特别的)。我尝试了各种 ttserver 选项,它们似乎没有任何区别,所以我查看了内核端,发现

echo 80 > /proc/sys/vm/dirty_ratio

(之前的值为 10)有很大的改进 - 以下是每分钟打印的数据的总大小(在 8 个分片上,每个分片在自己的节点上):

总计:14238792 条记录,27.5881 GB 大小
总计:14263546 条记录,27.6415 GB 大小
总计:14288997 条记录,27.6824 GB 大小
总计:14309739 条记录,27.7144 GB 大小
总计:14323563 条记录,27.7438 GB 大小
(这里我更改了所有分片的dirty_ratio 设置)
总计:14394007 条记录,27.8996 GB 大小
总计:14486489 条记录,28.0758 GB 大小
总计:14571409 条记录,28.2898 GB 大小
总计:14663636 条记录,28.4929 GB 大小
总计:14802109 条记录,28.7366 GB 大小

所以你可以看到提高了 7-8 倍。那时每个节点的数据库大小约为 4.5GB(包括索引),并且节点有 8GB RAM(因此,dirty_ratio 为 10 意味着内核试图保持少于 800MB 的脏数据)。

接下来我要尝试的是 ext2(当前:ext3)和 noatime,并将所有内容保存在 ramdisk 上(这可能会浪费两倍的内存,但可能值得)。

于 2009-12-11T00:27:31.143 回答
2

我只是设置了缓存选项,它现在明显更快。

于 2009-03-04T06:53:21.727 回答
1

我认为修改 dbtune 函数中的 bnum 参数也会显着提高速度。

于 2009-04-29T14:08:35.830 回答