无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

存儲空間緊張?來看 TDengine TSZ 壓縮算法如何顯著提升壓縮率

Alex Duan

2023-11-21 / ,

TSZ 壓(ya)(ya)(ya)縮(suo)(suo)算(suan)法(fa)是 TDengine 為(wei)浮點數(shu)據(ju)類型提供(gong)的(de)(de)(de)可選(xuan)壓(ya)(ya)(ya)縮(suo)(suo)算(suan)法(fa),可以實現浮點數(shu)有損(sun)至無損(sun)全狀態(tai)壓(ya)(ya)(ya)縮(suo)(suo),相比(bi)(bi)默(mo)認(ren)壓(ya)(ya)(ya)縮(suo)(suo)算(suan)法(fa),TSZ 壓(ya)(ya)(ya)縮(suo)(suo)算(suan)法(fa)壓(ya)(ya)(ya)縮(suo)(suo)率更高(gao),即使(shi)切至無損(sun)狀態(tai),壓(ya)(ya)(ya)縮(suo)(suo)率也會比(bi)(bi)默(mo)認(ren)壓(ya)(ya)(ya)縮(suo)(suo)高(gao)一倍。一般來說,TSZ 壓(ya)(ya)(ya)縮(suo)(suo)算(suan)法(fa)是通過(guo)數(shu)據(ju)預(yu)測技術完(wan)成的(de)(de)(de)壓(ya)(ya)(ya)縮(suo)(suo),所以更適(shi)合有規律變化的(de)(de)(de)數(shu)據(ju)。同時(shi) TSZ 壓(ya)(ya)(ya)縮(suo)(suo)時(shi)間會更長一些(xie),在我們(men)的(de)(de)(de)服務器 CPU 空閑、存儲空間緊張的(de)(de)(de)情(qing)況下(xia)適(shi)合選(xuan)用。

在此前發布的《壓縮比提高5倍!貢獻者+1》一(yi)文(wen)(wen)中(zhong),華中(zhong)科技大學、武漢(han)光(guang)電國家研究中(zhong)心的(de)碩士研究生鐘宇為(wei)大家詳細介紹(shao)了其(qi)在近期發表的(de)學術論(lun)文(wen)(wen)中(zhong),針對 TDengine TSZ 壓(ya)(ya)縮算(suan)(suan)法進(jin)行(xing)的(de)相(xiang)關(guan)改進(jin)。本(ben)篇文(wen)(wen)章中(zhong),我們(men)將就如何(he)在 TDengine 中(zhong)開(kai)啟(qi) TSZ 壓(ya)(ya)縮算(suan)(suan)法進(jin)行(xing)詳細說明,并會針對 TSZ 壓(ya)(ya)縮算(suan)(suan)法展開(kai)功能(neng)測試,為(wei)大家驗證其(qi)在實(shi)際業務場景中(zhong)的(de)更優性能(neng)。

在 TDengine 中開啟 TSZ 壓縮算法

TDengine 3.2.0.0 及以(yi)(yi)上版本中支持此壓(ya)縮(suo)算法。在 taos.cfg 配(pei)(pei)置(zhi)中增(zeng)加以(yi)(yi)下內(nei)容,即可開啟 TSZ 壓(ya)縮(suo)算法,功能打開后,會(hui)替(ti)換(huan)默認(ren)算法。以(yi)(yi)下表示字段類型是 float 及 double 類型都使用此壓(ya)縮(suo)算法,也可以(yi)(yi)單獨只配(pei)(pei)置(zhi)一個。

lossyColumns     float|double

配(pei)置成功后需要重(zhong)啟服務才能生效,當 Taosd 日志輸出以下內容時,即表明功能已(yi)生效:

02/22 10:49:27.607990 00002933 UTL  lossyColumns     float|double

配置參數

FLOAT 類型精(jing)度(du)控制:

存儲空間緊張?來看 TDengine TSZ 壓縮算法如何顯著提升壓縮率 - TDengine Database 時序數據庫

DOUBLE 類(lei)型精(jing)度控制:

存儲空間緊張?來看 TDengine TSZ 壓縮算法如何顯著提升壓縮率 - TDengine Database 時序數據庫

TSZ 壓縮中可選(xuan)擇的算法(fa) FSE,默認為 HUFFMAN:

存儲空間緊張?來看 TDengine TSZ 壓縮算法如何顯著提升壓縮率 - TDengine Database 時序數據庫

但需要注意的是,打開 TSZ 后生成的存儲數據格式,在回退至 3.2.0.0 之前的版本后數據將不能被識別。

TDengine TSZ 壓縮算法功能測試

數據正確性

首先我(wo)們(men)需(xu)要驗證寫(xie)入數(shu)據被 TDengine 存儲后再次讀取出來的正確性(xing):

  • 通過 0-others/compress_tsz1.py 實現;
  • 寫入 10 個子表, 每子表 10 萬數據,分別寫入 float 和 double 字段指定的隨機值,寫入完成后全部再讀取出來,和原來寫入時的值進行比較。原來寫入的值把整數及小數部分分別在兩個 int64 的字段中保存,驗證時再讀取出來合成一個浮點數進行驗證。驗證的誤差 float 為 1e-6, double 為 1e-12;
  • 驗證通過,數據完全正確。

數據兼容性

首先(xian)我們需(xu)要先(xian)寫(xie)入(ru)打開 TSZ 壓(ya)縮(suo)的數據,然后再寫(xie)入(ru)關(guan)閉 TSZ 壓(ya)縮(suo)的數據,此階段測試預(yu)期是不管 TSZ 選項打開或關(guan)閉,原來使(shi)用(yong) TSZ 寫(xie)入(ru)的及沒有使(shi)用(yong) TSZ 寫(xie)入(ru)的都能正確(que)讀取(qu)出來。

測試步驟如下:

  1. 配置 TSZ 選項為打開 lossyColumns float|double
  2. 啟動 taosd
  3. 創建數據庫及表,表中包括 float 及 double 字段
  4. 寫入 100 萬條數據
  5. 寫入成功后讀取并查看數據正確性
  6. 退出 taosd 并關閉 TSZ 選項
  7. 啟動 taosd 并寫入新數據到表中

測試結果顯示原來的數據及新寫入數據,都正常為符合預期,反復打開及關閉 TSZ,不影響已寫入數據的正常存取。

性能比較

我們(men)對本次新(xin)引入的(de)(de) FSE 算(suan)(suan)法、原來的(de)(de)算(suan)(suan)法,及關閉 TSZ 壓縮后的(de)(de)三個場景作為三種(zhong)方(fang)案進行(xing)對比測試,驗證打開 TSZ 算(suan)(suan)法及使用 TSZ 新(xin)的(de)(de) FSE 算(suan)(suan)法的(de)(de)效果。本次測試的(de)(de)數據(ju)規模如下:1 個超(chao)級表,2 個子表,每子表 100 萬(wan)條數據(ju),子表為 25 列 (其中 float 11 列、double 11 列)。

下表為最終測試結果:

存儲空間緊張?來看 TDengine TSZ 壓縮算法如何顯著提升壓縮率 - TDengine Database 時序數據庫

從上表可知,方案一中新增的 FSE 算法打開后寫入性能優于原來的算法,符合預期;其次,TSZ 壓縮算法打開比關閉時,在寫入性能、查詢及壓縮率方面均有小幅提升,此結論也符合預期。

寫在最后

在閱讀完本篇文章后,你一定對在 TDengine 中開啟 TSZ 壓縮算法及如何打造更優質性能有了更深入的了解,現在你可以進行操作了。如果在實操過程中碰到任何問題或難點,可以添加小T vx(tdengine),和我們(men)的資深(shen)研發工程師進行面(mian)對面(mian)溝通。