ttserver B+tree参数及VS TCH

本文分享了在使用TTServer过程中的经验总结,包括B+树参数含义、TCB与TCHVSTCB的区别、master与slave配置、以及TTServerc#库的使用注意事项。重点介绍了如何通过调整参数来优化性能,特别强调了TCB在大数据量场景下的稳定性优势。此外,还提出了建立slave库以实现数据备份和同步的方法,以及TTServerc#库在处理大数据时存在的问题和解决方案。
下文为使用ttserver过程中的一些经验总结或笔记。记之以备忘:

1. ttserver b+树参数含义
B+ tree database supports
"mode",  can contain "w" of writer, "r" of reader, "c" of creating, "t" of truncating, "e" of no locking, and "f" of non-blocking lock. The default mode is relevant to "wc".
"lmemb", lmemb 用于指定被缓存的页级节点数
"nmemb", 用于指定被缓存的非页级节点数,通常为页级节点数的两倍
"bnum",    `bnum' 指定bucket存储桶的数量。如果指定的数目不大于0,将会使用默认的数值131071.推荐数量应该在所有需要存储的记录总数的0.4-4倍
"apow",      `apow' 跟一个key关联的记录数,2的N次方表示.  如果不指定,默认2^4=16.
"fpow",      `fpow' specifies the maximum number of elements of the free block pool by power of 2.  默认2^10=1024.
"opts",   "opts" can contains "l" of large option, "d" of Deflate option, "b" of BZIP2 option, and "t" of TCBS option.
"lcnum",  #lcnum=xxx#bnum=yyy" 来提高性能.第一个参数指定被缓存的最大叶子节点数,受内存容量限制,第二个参数指定桶的数量,它应该大于总记录数的1/128
 "ncnum",
"xmsiz"     xmsiz  指定外部内存的大小。如果不大于0,内存不可用。默认是67108864,即64M。
"dfunit".

lmemb 用于指定被缓存的页级节点数
nmemb 用于指定被缓存的非页级节点数,通常为页级节点数的两倍
bnum 用于指定bucket array的数量。bnum的数量应该大于存储总记录数的1/128。

2. TCH VS TCB
TCBDB(查找的时间复杂度为“O(log n)”)虽然速度比TCHDB(查找的时间复杂度为“O(1)”)慢一些,但是,它对内存的依赖度要比TCHDB小得多,
随着数据量增大,写入速度也稳定,适合存储大量数据。
 如果存储8GB的数据, TCBDB只使用了160M的内存缓存,而TCHDB则需要设置8GB xmsiz内存才能保证速度。
 实例:Tokyo Tyrant 的B+Tree数据库,优化参数如下:

ttserver -host 192.168.1.2 -port 11211 -thnum 4 -dmn -pid /ttserver/ttserver.pid -log /ttserver/ttserver.log -le -ulog /ttserver/ -ulim 128m -sid 195 -rts /ttserver/ttserver.rts /ttserver/database.tcb#lmemb=1024#nmemb=2048#bnum=20000000

从我自己的实践来看,TCH在数据量很大时,尤其是接近了内存限制时,非常不稳定,经常崩溃(3天两头)。
当我将格式调整为TCB后,崩溃再也没有发生(一年多时间)。

3. master & slave
ttserver的数据执行备份时,整个数据库被锁定,如果数据库数据量较大,则会导致ttserver长时间不能响应,各种操作会因为超时而失败。
解决方法很简单:为ttserver建一个slave库,slave仅负责数据同步和数据备份。这样一方面可以保证数据的及时同步提高可靠性,同时也可以对
数据执行一些特定处理(如备份等)而完全不影响在线ttserver库的访问。

4.关于ttserver c#库
已经记不清楚当时使用的什么库,可能是官网直接推荐的一个。用了后发现问题比较多,记忆最为深刻的是:
ttsever c#库的实现有一个bug,当数据大于1G时,数据处理会出错,可能是其中对long型整形数据的处理有问题。
还有一些连接导致卡死问题。后来我们该用了带超时的连接解决的。

详情以后补充。

 
 



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值