`
lionlx
  • 浏览: 283144 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(转)ttserver删除记录的问题

 
阅读更多
转自:http://bbs.linuxtone.org/home.php?mod=space&uid=17551&do=blog&id=3163
用ttserver,存放的数据量太大了,使用的是hash的存储模式,启动参数中对数据文件做过压缩,做过分片,但是目前的database.tch目录下的文件差不多140G了,最近一段时间一直想将该数据文件的大小给减小一些,但一直未能成功。

原本我以为通过删除ttserver中的记录,把对应的key和value删掉就可以把对应的database.tch的大小给降下来,于是我使用的是Tokyo tyrant中的管理命令 tcrmgr ,使用tcrmgr out -port xxxxx localhost key 这条命令,里边的key是筛选出来的一批key,执行完这个命令以后,通过tcrmgr inform -port xxxxx localhost 发现里边的record number确实减少了,但file size的值却没有任何变化,database.tch的大小也没减小,通过晚上搜寻资料发现tcrmgr out这个命令只是完成了一次逻辑上的删除,并没有实际对硬盘上的database.tch内的记录进行物理删除。

我本以为可能是由于在tcrmgr out的操作在内存中完成,没有写回到硬盘中,于是又执行了一次tcrmgr sync -port xxxxx localhost   但是完成以后,数据文件的大小依然没改变,
发现还是需要用tcrmgr optimize -port xxxx localhost来进行操作。
由于out参数是一种标记删除,当你在使用inform进行查询的时候,确实发现数据记录数变小了,但并没有同步清除掉硬盘中database.tch中的数据记录,这就导致了数据文件的大小不发生改变。

由于最开始删除的记录数比较少,当时测试optimize的时候,没有明显的效果,后来删除了将近1000万条记录,再次执行optimize的时候,发现数据文件相比原来减少了40G。
需要注意的是,在执行optimize优化数据文件时,ttserver的库是处于锁定状态的,即无法读写,因此如果你需要执行这条命令时,需要做好准备工作,特别是对线上服务器进行操作时,我在这次优化的过程中使用的方法是,在六台ttserver(从服务器)前加一个代理,然后逐台进行优化,这样不会影响服务。在ttserver(主服务器)方面,做双机互备,然后单台进行优化,此过程的缺点就是耗时过长。


./tcrmgr inform -port 5100 -st 10.10.10.14
starttime=`date "+%s"`;for((i=1;i<1001;i++)); do curl -X PUT http://10.10.10.14:5100/key_$i -d $i; done;endtime=`date "+%s"`;echo $(($endtime-$starttime));
starttime=`date "+%s"`;for((i=1;i<1001;i++)); do curl http://10.10.10.14:5100/key_$i; done;endtime=`date "+%s"`;echo $(($endtime-$starttime));
分享到:
评论

相关推荐

    ttserver

    ttserver tokyocabinet-1.4.27.tar

    TTserver1.1.4

    TTserver1.1.4

    TTserver测试结果

    TTserver测试结果. 测试验证同步效率还是蛮高的。

    ttserver-lib包

    tokyocabinet-1.4.45.tar.gz tokyotyrant-1.1.41.tar.gz tokyotyrant-0.11.jar ch-tokyocabinet-java-1.24.0.jar

    memcached和TTserver的使用

    TTServer经过两年左右的发展,目前成为应用很广的NoSQL存储方案。性能好,有复制功能、代码量小,容易吃透,在key-value数据存储领域很有优势。 hash方式结合复制功能,数据安全性较高,运行稳定。 B+ Tree方式...

    ttserver.exe

    主要用于远程协助使用,比QQ远程协助速度更快,更好用一些。 被协助者请运行“ttserver.exe”运行软件之后,随便输入一个验证码,然后点击‘被协助’,并将验证码告知协助方,协助方运行“ttclient.exe”

    TTSERVER V2.1.1

    很方便的远程软件,突破距离的限制。大家帮助大家

    ttserver被协助端.rar

    ttserver被协助端,这个不用介绍了吧,大家都知道

    远程协助软件-TTVNC

    主要用于远程协助使用,比QQ远程协助速度更快,更好用一些。...若被协助方的‘被协助’按钮为灰色,请去掉后面‘自动连接’的勾,然后退出软件重新运行 ttserver.exe 输入验证码并点击被协助即可。

    TTServer-Docs:蘑菇街TeamTalk TTServer文档

    TTServer-Docs蘑菇街TeamTalk TTServer文档双击docs-&gt;html-&gt;index.html即可打开

    关于使用key/value数据库redis和TTSERVER的心得体会

    区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件(这点儿个人觉得redis比memcache 在数据保存上要安全一些),并且在此基础上实现了master- slave(主从)同步。redis的存取性能很高,SET...

    TTServer:蘑菇街一款既是做开源又是做产品的企业办公即时通信软件

    ###项目背景 随着蘑菇街由导购向电商转型,蘑菇街自己的IM也应运而生,IM起初只是用于商家和 买家之间沟通的工具。后面我们问自己,既然已经有了用于客服的IM,为什么不自己 做一个IM,用于公司内部的沟通工具,来...

    远程工具ttvnc

    远程工具,才几百K的容量,小巧精致。简单实用,只要填上相同的验证码,点协助或被协助,就能能够远程帮助朋友解决问题

    https-github.com-mogutt-TTServer

    TeamTalk是一套开源的企业办公即时通讯软件,作为整套系统的组成部分之一,TTServer为TeamTalk 客户端提供用户登录,消息转发及存储等基础服务。 TTServer主要包含了以下几种服务器: LoginServer (C++): 登录服务器...

    远程控制软件被控端下载

    被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端被控端

    远程控制软件 ttvnc软件

    你可以用这个软件,来帮助其他人维护电脑等等...

    TTMobile:用于通过 TTServer 存储 GPS 轨迹的 Android 应用程序

    TTMobile 用于通过 TTServer 存储 GPS 轨迹的 Android 应用程序

    ftpserver小工具

    在windows上快速搭建ftp的小工具

    TeamTalk全套源码

    TeamTalk是一套开源的企业办公即时通讯软件,作为整套系统的组成部分之一,TTServer为TeamTalk 客户端提供用户登录,消息转发及存储等基础服务。 TTServer主要包含了以下几种服务器: LoginServer (C++): 登录服务器...

Global site tag (gtag.js) - Google Analytics