在ClickHouse 1.1.54310中自定義分區(qū)

ClickHouse在版本 1.1.54310中引入了一個新特性:可以在MergeTree引擎的表上自定義分區(qū)。在引入這個特性之前,創(chuàng)建MergeTree必須使用日期字段進(jìn)行分區(qū)之前以及按月分區(qū)。

新版本允許更多的靈活性,我們可以選擇不僅基于日期字段的分區(qū)模式。

該功能仍在實驗階段,我們需要啟動experimental_allow_extended_storage_definition_syntax標(biāo)志服務(wù)器。

使用命令:

set? experimental_allow_extended_storage_definition_syntax = 1

我們來看看如何使用這個自定義分區(qū)。

我們將從網(wǎng)頁https://clickhouse.yandex/docs/en/getting_started/example_datasets/ontime.html中提到的on-time基準(zhǔn)表作為例子:

該表格創(chuàng)建為:

) ENGINE = MergeTree(FlightDate, (Year, FlightDate), 8192)

新的語法可以被重寫為:

) ENGINE = MergeTree PARTITION BY toYYYYMM(FlightDate) Order By Year, FlightDate;

照葫蘆畫瓢,更改日常分區(qū)的定義:

) ENGINE = MergeTree PARTITION BY FlightDate Order By Year, FlightDate;

或者使用不同的非日期列分區(qū):

) ENGINE = MergeTree PARTITION BY AirlineID Order By FlightDate;

現(xiàn)在,我們可以刪除一個特定日期的數(shù)據(jù)(例如1987-01- 01)

ALTER TABLE ontime DROP PARTITION '1987-10-01';

為什么這個功能有用?

它提供了更好的粒度來管理數(shù)據(jù)。我們可以在商務(wù)任務(wù)所需的時間內(nèi)執(zhí)行數(shù)據(jù)維護(hù),而不僅僅是按照規(guī)定的每月時間進(jìn)行。

比如:我們可以一周刪除一次數(shù)據(jù),而非按月的粒度

有一件事要注意,粒度更細(xì)的分區(qū)可能會影響壓縮。

例如,使用默認(rèn)的每月分區(qū)和LZ4壓縮,完整的ontime表在磁盤上占用7.7GB,而當(dāng)我們切換到每日分區(qū)時,大小增長到15GB。這是因為用于壓縮的數(shù)據(jù)變得更短,所以壓縮效率較低。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容