ClickHouse數(shù)據(jù)壓縮[譯文](轉(zhuǎn)發(fā))


原文:https://www.altinity.com/blog/2017/11/21/compression-in-clickhouse

Altinity是國外一家從事ClickHouse咨詢、服務(wù)的公司,該公司高管由ClickHouse開發(fā)者趾娃,以及來自Percona的專家組成笋除。目前Altinity的ClickHouse云服務(wù)測試版已經(jīng)上線。

綜述

It might not be obvious from the start, but ClickHouse supports different kinds of compressions, namely two LZ4 and ZSTD.

There are evaluations for both of these methods:https://www.percona.com/blog/2016/04/13/evaluating-database-compression-methods-update/

But in short, LZ4 is fast but provides smaller compression ratio comparing to ZSTD. While ZSTD is slower than LZ4, it is often faster and compresses better than a traditional Zlib, so it might be considered as a replacement for Zlib compression.

其實(shí)约素,從一開始ClickHouse就支持多種方式的數(shù)據(jù)壓縮:LZ4和ZSTD。

關(guān)于壓縮算法的測試拇囊,見這篇文章硅急。簡而言之枢冤,LZ4在速度上會更快,但是壓縮率較低铜秆,ZSTD正好相反淹真。盡管ZSTD比LZ4慢,但是相比傳統(tǒng)的壓縮方式Zlib连茧,無論是在壓縮效率還是速度上核蘸,都可以作為Zlib的替代品。

實(shí)際壓測

To get some real numbers using ClickHouse, let’s review a table compressed with both methods.

For this, we will take the table lineorder, from the benchmark described inhttps://www.altinity.com/blog/2017/6/16/clickhouse-in-a-general-analytical-workload-based-on-star-schema-benchmark

The uncompressed datasize for lineorder table with 1000 scale is 680G.

為了用事實(shí)說話啸驯,我們一起對比一下這兩種壓縮方式客扎。

壓測所用的表(lineorder)結(jié)構(gòu)和數(shù)據(jù)來著這里

未壓縮的數(shù)據(jù)集是680GB罚斗。

數(shù)據(jù)對比

And now let’s load this table into ClickHouse. With the default compression (LZ4), we have184G lineorderlz4

And with ZSTD135G lineorderzstd

There we need to mention how to make ClickHouse using ZSTD. For this, we add the following lines into config:

把上述數(shù)據(jù)加載到ClickHouse后徙鱼,默認(rèn)的LZ4壓縮算法下,數(shù)據(jù)容量是184G(壓縮到27%)针姿,而ZSTD達(dá)到了135GB(壓縮到20%)袱吆。

關(guān)于如何使用ZSTD,需要簡單的提一下距淫,使用如下配置即可:

zstd

So the compression ratio for this table

壓縮比率對比

CompressionRatio

LZ43.7

ZSTD5.0

What about performance? For this let’s run the following query

壓縮后的性能如何绞绒,我們來跑如下查詢看看。

SELECTtoYear(LO_ORDERDATE)ASyod,sum(LO_REVENUE)FROMlineorderGROUPBYyod;

And we will execute this query in “cold” run (no data is cached), and following “hot” run when some data is already cached in OS memory after the first run.

為了保持客觀榕暇,我們會跑兩次蓬衡,第一次是冷數(shù)據(jù)請求,這次的數(shù)據(jù)沒有被操作系統(tǒng)緩存彤枢,第二次跑一次熱數(shù)據(jù)情求狰晚,這次的數(shù)據(jù)已經(jīng)被操作系統(tǒng)的內(nèi)存給緩存住了。

So query results, for LZ4 compression:

LZ4的性能如下:

# Cold run:

7 rows in set. Elapsed: 19.131 sec. Processed 6.00 billion rows,

36.00 GB (313.63 million rows/s., 1.88 GB/s.)

Hot run:

7 rows in set. Elapsed: 4.531 sec. Processed 6.00 billion rows,

36.00 GB (1.32 billion rows/s., 7.95 GB/s.)

For ZSTD compression:

ZSTD性能如下:

Cold run:

7 rows in set. Elapsed: 20.990 sec. Processed 6.00 billion rows,

36.00 GB (285.85 million rows/s., 1.72 GB/s.)

Hot run:

7 rows in set. Elapsed: 7.965 sec. Processed 6.00 billion rows,

36.00 GB (753.26 million rows/s., 4.52 GB/s.)

While there is practically no difference in cold run times (as the IO time prevail decompression time), in hot runs LZ4 is much faster (as there is much less IO operations, and performance of decompression becomes a major factor).

冷數(shù)據(jù)查詢情況下缴啡,兩者區(qū)別不大壁晒,原因在于消耗在IO方面的時間,遠(yuǎn)大于消耗在解壓縮上面的時間盟猖。

熱數(shù)據(jù)請求下讨衣,LZ4會更快,此時IO代價小式镐,數(shù)據(jù)解壓縮成為性能瓶頸反镇。

Conclusion:

結(jié)論

ClickHouse proposes two methods of compression: LZ4 and ZSTD, so you can choose what is suitable for your case.

With LZ4 you may get a better execution time with the cost of the worse compression and data taking more space on the storage.

ClickHouse提供了兩種數(shù)據(jù)壓縮方式供我們選擇:LZ4和ZSTD。

默認(rèn)的LZ4壓縮方式娘汞,會給我們提供更快的執(zhí)行效率歹茶,但是同時,我們要付出較多的磁盤容量占用的代價了。

譯者注

ClickHouse在我們公司(Sina)內(nèi)部已經(jīng)有一段時間的使用了惊豺,拋開高效的SQL執(zhí)行燎孟,數(shù)據(jù)容量也是一個非常喜人的地方

我們使用的是大容量的服務(wù)(沒錯,就是Hadoop node節(jié)點(diǎn)的低配機(jī)器)尸昧,單機(jī)容量輕松幾十T揩页,再加上ClickHouse優(yōu)秀的壓縮方式,日志數(shù)據(jù)存1-2年烹俗,都沒有一點(diǎn)問題

我們沒修改過壓縮算法爆侣,就用的默認(rèn)的LZ4

作者:JackpGao

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市幢妄,隨后出現(xiàn)的幾起案子兔仰,更是在濱河造成了極大的恐慌,老刑警劉巖蕉鸳,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乎赴,死亡現(xiàn)場離奇詭異,居然都是意外死亡潮尝,警方通過查閱死者的電腦和手機(jī)榕吼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衍锚,“玉大人友题,你說我怎么就攤上這事〈髦剩” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵踢匣,是天一觀的道長告匠。 經(jīng)常有香客問我,道長离唬,這世上最難降的妖魔是什么后专? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮输莺,結(jié)果婚禮上戚哎,老公的妹妹穿的比我還像新娘。我一直安慰自己嫂用,他們只是感情好型凳,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著嘱函,像睡著了一般甘畅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天疏唾,我揣著相機(jī)與錄音蓄氧,去河邊找鬼。 笑死槐脏,一個胖子當(dāng)著我的面吹牛喉童,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播顿天,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼堂氯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了露氮?” 一聲冷哼從身側(cè)響起祖灰,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎畔规,沒想到半個月后局扶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叁扫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年三妈,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莫绣。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡畴蒲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出对室,到底是詐尸還是另有隱情模燥,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布掩宜,位于F島的核電站蔫骂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏牺汤。R本人自食惡果不足惜辽旋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望檐迟。 院中可真熱鬧补胚,春花似錦、人聲如沸追迟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怔匣。三九已至握联,卻和暖如春桦沉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背金闽。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工纯露, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人代芜。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓埠褪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親挤庇。 傳聞我的和親對象是個殘疾皇子钞速,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容