ClickHouse引擎介紹

2021-10-10 01:27:20 字數 2699 閱讀 4721

三、資料表引擎

3.2 log系列

3.3 integration系列

3.4 special系列

clickhouse像mysql一樣提供了豐富的引擎;不同的引擎代表不同的型別,比如擁有何種特性、資料以何種形式被儲存以及如何被載入。

預設引擎,此資料庫可以使用任意表引擎。

字典引擎,此資料庫會為所有資料字典建立資料表。

記憶體引擎,此資料庫中的表只存放在記憶體中,重啟丟失。

日誌引擎,此資料庫只能使用log系列的表引擎。

mysql引擎,此資料庫可以自動拉取遠端mysql資料(類似於oracle的dblink,可以對遠端表進行讀寫

該引擎是官方主推的儲存引擎,有主鍵索引、資料分割槽、資料副本、資料取樣、刪除和修改等功能,replacingmergetree有了去重功能,summingmergetree有了彙總求和功能,aggregatingmergetree有聚合功能,collapsingmergetree有摺疊刪除功能,versionedcollapsingmergetree有版本摺疊功能,graphitemergetree有壓縮彙總功能。在這些的基礎上還可以疊加replicated和distributed。

3.1.1 replacingmergetree

1、使用order by排序鍵作為判斷重複資料的唯一鍵;

2、只有在合併分割槽的時候才會觸發刪除重複資料的邏輯;

3、以資料分割槽為單位刪除資料。當分割槽合併時,同一分區內的重複資料會被刪除,不同分割槽之間的重複資料不會被刪除;

4、在進行資料去重時,因為分區內的資料已經基於 order by進行了排序,所以能夠找到那些相鄰的重複資料。

資料去重策略有兩種:

3.1.2 summingmergetree

1、用order by排序鍵作為聚合資料的條件key

2、只有在合併分割槽的時候才會觸發聚合計算的邏輯

3、以資料分割槽為單位來聚合資料。當分割槽合併時,同一資料分區內聚合key相同的資料會被合併彙總,而不同分割槽之間的資料則不會被彙總。

4、如果在定義引擎時指定了columns彙總列(非主鍵的數值型別字段),則sum彙總這些列欄位,如果未指定,則聚合所有非主鍵數值字段。

5、在進行資料彙總時,因為分區內的資料已經基於order by排序,所以能夠找到相鄰且擁有相同聚合key的資料。

6、在彙總資料時,同一分區內相同聚合key的多行資料會合併成一行。其中彙總欄位會進行sum計算;對於那些非彙總字段,則會使用第一行資料的取值。

7、支援巢狀結構,但欄位名稱必須以map字尾結尾。巢狀型別中,預設以第乙個欄位為聚合key。除第乙個字段意外,任何名稱以key,id或type為字尾結尾的字段,都將和第乙個字段組合成復合key。

3.1.3 aggregatingmergetree

1、用order by排序鍵作為聚合資料的條件key

2、使用aggregatefunction欄位型別定義聚合函式的型別以及聚合字段。

3、只有在合併分割槽的時候才會觸發聚合計算的邏輯

4、以資料分割槽為單位來聚合資料,當分割槽合併時,同一分區內聚合key相同的資料會被合併計算,而不同分割槽之間的資料則不會被計算。

5、在進行資料計算時,因為分區內的資料已經基於order by排序,所以能夠找到相鄰且擁有相同聚合key的資料。

6、在聚合資料時,同一分區內相同聚合key的多行資料會合併成一行。對於非主鍵、非aggregatefunction欄位,則會使用第一行資料的取值

7、aggregatefunction欄位使用二進位制儲存,寫入資料時,需要呼叫state函式;而在查詢資料時,則需要呼叫相應的merge函式。其中,*表示定義時使用的聚合函式

8、aggregatemergetree通常作為物化檢視的表引擎,與普通mergetree搭配使用。

3.1.4 collapsingmergetree(versionedcollapsingmergetree)

collapsingmergetree(versionedcollapsingmergetree) 會非同步的刪除(摺疊)這些除了特定列 sign 有 1 和 -1 的值以外,其餘所有欄位的值都相等的成對的行。沒有成對的行會被保留。該引擎可以顯著的降低儲存量並提高 select 查詢效率。

3.1.5 graphitemergetree

該引擎用來對 graphite資料進行**及彙總。

3.2.1 tinylog

不支援併發讀取,效能差,格式簡單,適用儲存中間資料

3.2.2 log

支援併發讀取,每個列儲存在單獨檔案中,效能較好

3.2.3 stripelog

支援併發讀取,所有列存放在乙個檔案中,效能較好

該系列用於整合外部的資料來源 。

3.3.1 hdfs

3.3.2 mysql

3.3.3 kafka

3.3.4 rabbitmq

3.3.5 jdbc

3.3.6 odbc3.4.1 memory

資料儲存在記憶體,重啟資料丟失,讀寫不阻塞,不支援索引。

3.4.2 merge

在同乙個server上把多張相同結構的物理表合併為一張邏輯表。

3.4.3 distrbuted

在不同的server上把多張相同結構的物理表合併為一張邏輯表。

3.4.4 dictionary、file、null、set、join、url、view、materializedview、buffer、external data、generaterando

click house其他引擎

特點 資料不會寫入到磁碟,重啟機器以後表還在但是資料丟失 應用場景 測試 段 建立乙個memory引擎的表 create table tb memory id int8 name string engine memory 插入資料 insert into tb memory values 1,zss...

ClickHouse表常用引擎

是最簡單的表輕量引擎 最多約100萬行 一寫多讀的應用場景。同時讀寫會損害資料 tinylog 表經常作為中間表,用於資料的微批量處理.語法中無需攜帶任何引數 它將資料儲存到磁碟.每個欄位都以單獨壓縮檔案形式儲存.當寫入資料時,資料追加到檔案的末尾 這是目前clickhouse處理能力最好的引擎.引...

clickhouse 部署 介紹

clickhouse是乙個用於聯機分析處理 olap 的列式資料庫管理系統 columnar dbms 傳統資料庫在資料大小比較小,索引大小適合記憶體,資料快取命中率足夠高的情形下能正常提供服務。但殘酷的是,這種理想情形最終會隨著業務的增長走到盡頭,查詢會變得越來越慢。你可能通過增加更多的記憶體,訂...