什麼是ttl?
ttl的意思是time to live表示資料的存活時間。由於資料的價值會根據儲存的時間成反比,出於儲存成本的考慮通常只會保留近一年的資料。而在mergetree (合併樹)引擎中,可以通過設定ttl來輕鬆管理資料的存活時間,使資料的價值最大化。當然數倉的資料是不會刪除的,不過會部分業務不需要舊資料,比如使用者的畫像資料,使用者畫像是按天按小時更新甚至實時更新,比較舊畫像資料繼續儲存著沒價值則需要刪除。
在clickhouse 中,ttl可以設定值的生命週期,它既可以為整張表設定,也可以為每個列欄位單獨設定。表級別的 ttl 還會指定資料在磁碟和卷上自動轉移的邏輯。ttl 表示式的計算結果必須是 日期(date) 或 日期時間(datetime),如果同時設定了列級別的和表級別的ttl則以先到期的為準。
1.欄位級別ttl
當列字段中的值過期時, clickhouse會將它們替換成資料型別的預設值。如果分區內,某一列的所有值均已過期,clickhouse會從檔案系統中刪除此列。clickhouse的interval(資料時間間隔)支援的操作有:second(秒),minute(分鐘),hour(小時),day(日),week(周),month(月),quarter(季度),year(年)。
示例:
--建立時指定 ttl
create
table
example_table(d
datetime,a
int ttl d + interval 1
day,
b int ttl d + interval 1
day,
c string
)engine
=mergetree
partition
bytoyyyymm(d)
order
byd;
--為表中已存在的列欄位新增 ttl
alter
table
example_table
modify
column `c` string ttl d + tointervalday(1)--
修改列字段的 ttl
alter
table
example_table
modify
column
c string ttl d
+ interval 1 week;
2.表級別ttl
表可以設定乙個用於移除過期行的表示式,以及多個用於在磁碟或卷上自動轉移資料片段的表示式。當表中的行過期時,clickhouse 會刪除所有對應的行。
示例:event_date超過乙個月的資料自動刪除
--建立時指定 ttl
create
table
example_table
(`event_date` date,
`uid` int32,
`name` string
)engine
= replicatedaggregatingmergetree('
/clickhouse/tables//example_table
', '')
partition
byevent_date
order
byuid
ttl event_date
+ tointervalmonth(1
)settings index_granularity
=128;--
修改表的 ttl,event_date超過三個月的資料自動刪除
alter
table
example_table
modify ttl event_date
+ tointervalmonth(3);
ClickHouse引擎之 表和列的ttl
1.ttl即time to live 表示資料的存活時間。在mergetree中,可以為某個列欄位或者整張表設定ttl。2.當時間達到時,若列字段級別的ttl 則會刪除這一列的資料 3.若表級別的ttl則會刪除整張表的資料 3.若同時設定了列級別的和表級別的ttl則以先到期的為準。根據時間creat...
2022 01 21 通過TTL值判斷系統型別
通過ttl值判斷是什麼系統 ttl time to live,生存時間 是ip協議包中的乙個值,當我們使用ping命令進行網路連通測試或者是測試網速的時候,本地計算機會向目的主機傳送資料報,但是有的資料報會因為一些特殊的原因不能正常傳送到目的主機,如果沒有設定ttl值的話,資料報會一直在網路上面傳送...
clickhouse的單機部署
clickhouse 全稱是click stream data warehouse,簡稱clickhouse。是乙個完全的列式資料庫,可以做到流批一體。1.入門安裝與啟動 yum install y curl 安裝curl,可以請求url鏈結,請求外網 curl s sudo bash 2 yum ...