Tokyo Tyrant數據壓縮

Tokyo Tyrant數據壓縮


轉載自:http://www.cnblogs.com/sunli/archive/2010/02/05/1664712.html

 

由於忙於工作,好久繼續寫關於ttserver的東西了。最近由於服務器準備的原因,只能在32位上做ttserver的測試,很快數據就達到2G,ttserver無法正常工作,於是想到了ttserver的壓縮功能,發現壓縮比例挺大。所以進行了一些測試並在項目中做了一些應用。本文將展示在64下面進行壓縮的壓縮比以及進行壓縮的好處。

 

壓縮測試


數據:2720268條原始新聞數據,每條數據使用json格式進行存儲。

A機器ttserver配置:casket.tch#bnum=100000000#xmsiz=524288000#rcnum=200000#opts=ld

B機器ttserver配置:casket.tch#bnum=100000000#xmsiz=524288000#rcnum=200000


分別把原始新聞數據存儲A機器和B機器。其中A和B的ulog日誌文件大小都爲19G。接下來來看ttserver的數據庫文件大小,A機器(有壓縮)6.1G,B機器 (無壓縮)17G。壓縮後大概只佔原來文件的1/3。


配置中的#opts=ld的d表示使用壓縮。關於opts可以參考官方的原話:

"opts" can contains "l" of large option, "d" of Deflate option, "b" of BZIP2 option, and "t" of TCBS option.


經過初步測試,d是速度比較快的一種了。

 

壓縮的優點


存儲空間,壓縮首先給人帶來的優點肯定就是節約存儲空間,這點在服務器空間不足的情況下使用非常有用,當然,你在32位2G文件大小的限制下,使用壓縮的話就可以存儲更多的數據。


IO性能:經過壓縮,數據本身變得小了,對磁盤的IO也會相應減小,如果你的磁盤IO對你的應用形成了瓶頸,那麼壓縮也是可以爲你來帶益處的。對於IO的性能提高在硬盤結構和工作方式上也能得到解釋。

 

壓縮的缺點


使用壓縮肯定就會耗費CPU資源了,所以CPU和空間只是一個權衡,根據經驗,一般來說使用壓縮都是沒有問題的。比如nginx的gzip壓縮靜態文件(js,css)。

 

ttserver的壓縮跟memcached的壓縮的比較


提到了比較,肯定就有不一樣的地方。ttserver使用了內部壓縮,就是服務器端(ttserver)負責壓縮。而memcached的壓縮則是客戶端進行的,memcached只是負責存儲壓縮後的數據。客戶端client根據flag參數來確定是否解壓。ttserver是服務器負責壓縮,memcache是客戶端負責壓縮。

 

ttserver輸出的是解壓後的數據,memcached輸出的就是輸入的壓縮數據(數據使用壓縮的情況)。這樣就形成一個區別,memcached使用壓縮後,由於輸出的是壓縮數據,會降低網絡傳輸,而ttserver則不會有任何改變。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章