日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

12_VersionedCollapsingMergeTree,Log Engine Family(Log引擎,StripeLog引擎,TinyLog引擎)

發布時間:2024/9/27 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 12_VersionedCollapsingMergeTree,Log Engine Family(Log引擎,StripeLog引擎,TinyLog引擎) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

11.VersionedCollapsingMergeTree
11.1.VersionedCollapsingMergeTree
11.2.案例
12.Log Engine Family
Log引擎:
StripeLog引擎
TinyLog引擎
12.2.案例

11.VersionedCollapsingMergeTree

11.1.VersionedCollapsingMergeTree

算法:
當ClickHouse合并數據片段時,它會刪除滿足如下條件的行:排序鍵相同,version相同,Sign不同。行的順序無關緊要。
當CLickHouse插入數據時,它按排序鍵對數據進行排序:如果Version列不在排序鍵中,則ClickHouse會將其隱式地作為最后一個字段添加到排序鍵中,并將其用于排序。

11.2.案例

示例數據:

┌──────────────UserID─┬─PageViews─┬─Duration─┬─Sign─┬─Version─┐ │ 4324182021466249494514611 |43241820214662494945146-11 |4324182021466249494618512 | └─────────────────────┴───────────┴──────────┴──────┴─────────┘

建表:

DROP TABLE IF EXISTS UAct; CREATE TABLE UAct (UserID UInt64,PageViews UInt8,Duration UInt8,Sign Int8,Version UInt8 ) ENGINE = VersionedCollapsingMergeTree(Sign, Version) ORDER BY UserID;

插入數據:

INSERT INTO UAct VALUES (4324182021466249494, 5, 146, 1, 1); INSERT INTO UAct VALUES (4324182021466249494, 5, 146, -1, 1),(4324182021466249494, 6, 185, 1, 2);

上面執行了兩個INSERT語句,創建了兩個不同的數據片段。如果使用一個INSERT語句,ClickHouse將創建一個數據片段,并且將永遠不會執行任何合并。

查詢數據:

xxxx2 :) select * from UAct;SELECT * FROM UAct┌──────────────UserID─┬─PageViews─┬─Duration─┬─Sign─┬─Version─┐ │ 43241820214662494945146-11 │ │ 4324182021466249494618512 │ └─────────────────────┴───────────┴──────────┴──────┴─────────┘ ┌──────────────UserID─┬─PageViews─┬─Duration─┬─Sign─┬─Version─┐ │ 4324182021466249494514611 │ └─────────────────────┴───────────┴──────────┴──────┴─────────┘3 rows in set. Elapsed: 0.009 sec. xxxx2 :)

通過兩個INSERT語句,創建了兩個數據片段。SELECT查詢是在兩個線程中執行的,我們得到了隨機順序的行。由于尚未合并數據片段,折疊還未發生。我們無法預測ClickHouse在何時執行數據片段的合并。因此,我們需要使用聚合:

SELECTUserID,sum(PageViews * Sign) AS PageViews,sum(Duration * Sign) AS Duration,Version FROM UAct GROUP BY UserID, Version HAVING sum(Sign) > 0;

結果如下:

┌──────────────UserID─┬─PageViews─┬─Duration─┬─Version─┐ │ 432418202146624949461852 │ └─────────────────────┴───────────┴──────────┴─────────┘

如果不適用聚合,可以對FROM子句使用FINAL修飾符進行強制合并:

xxxx2 :) select * from UAct FINAL;SELECT * FROM UAct FINAL┌──────────────UserID─┬─PageViews─┬─Duration─┬─Sign─┬─Version─┐ │ 4324182021466249494618512 │ └─────────────────────┴───────────┴──────────┴──────┴─────────┘1 rows in set. Elapsed: 0.011 sec. xxxx2 :)

要注意的是使用FINAL的這種數據查詢的方法非常低效,不要在大表中使用這種方法。

12.Log Engine Family

這些引擎適用于快速寫入許多小數據量(少于100萬行)的表,在后續使用時整體讀取表數據。

12.1.Log Engine Family:

?StripLog
?Log
?TinyLog

通用屬性:
1.數據存儲在磁盤上
2.寫入時將數據追加到文件末尾
3.支持并發數據訪問的鎖(寫阻塞讀/寫,讀不影響)
4.不支持mutation操作
5.不支持索引
6.不支持原子地寫入數據

磁盤文件存儲:
1.Log引擎:

# ll /var/lib/clickhouse/data/default/table_log/ -rw-r----- 1 clickhouse clickhouse 168 3月 14 01:38 duration.bin -rw-r----- 1 clickhouse clickhouse 288 3月 14 01:38 __marks.mrk -rw-r----- 1 clickhouse clickhouse 168 3月 14 01:38 pageviews.bin -rw-r----- 1 clickhouse clickhouse 138 3月 14 01:38 sizes.json -rw-r----- 1 clickhouse clickhouse 258 3月 14 01:38 userid.bin

2.StripeLog引擎

# ll /var/lib/clickhouse/data/default/table_stripelog/ -rw-r----- 1 clickhouse clickhouse 1044 3月 14 01:38 data.bin -rw-r----- 1 clickhouse clickhouse 536 3月 14 01:38 index.mrk -rw-r----- 1 clickhouse clickhouse 70 3月 14 01:38 sizes.json

3.TinyLog引擎

# ll /var/lib/clickhouse/data/default/table_tinylog/ -rw-r----- 1 clickhouse clickhouse 168 3月 14 01:37 duration.bin -rw-r----- 1 clickhouse clickhouse 168 3月 14 01:37 pageviews.bin -rw-r----- 1 clickhouse clickhouse 107 3月 14 01:37 sizes.json -rw-r----- 1 clickhouse clickhouse 258 3月 14 01:37 userid.bin

Log Engine Family文件總結:

引擎存儲文件數并行查詢效率mark文件
Log每列一個文件支持
StripeLog所有列一個文件支持較高
TinyLog每列一個文件不支持

12.2.案例

(1)建表

DROP TABLE table_tinylog; CREATE TABLE table_tinylog(userid UInt64,pageviews UInt8,duration UInt8 ) ENGINE = TinyLog; DROP TABLE table_log; CREATE TABLE table_log(userid UInt64,pageviews UInt8,duration UInt8 ) ENGINE = Log; DROP TABLE table_stripelog; CREATE TABLE table_stripelog(userid UInt64,pageviews UInt8,duration UInt8 ) ENGINE = StripeLog;

(2)、插入數據
三張表插入同樣的數據:

INSERT INTO table_tinylog VALUES (4324182021466249494, 1, 146),(4324182021466249414, 9, 156); INSERT INTO table_tinylog VALUES (4324182021466249495, 2, 147),(4324182021466249424, 8, 157); INSERT INTO table_tinylog VALUES (4324182021466249496, 3, 148),(4324182021466249434, 7, 158); INSERT INTO table_tinylog VALUES (4324182021466249497, 4, 141),(4324182021466249444, 6, 151); INSERT INTO table_tinylog VALUES (4324182021466249498, 5, 142),(4324182021466249454, 5, 152); INSERT INTO table_tinylog VALUES (4324182021466249499, 6, 143),(4324182021466249464, 4, 153); ? INSERT INTO table_log VALUES (4324182021466249494, 1, 146),(4324182021466249414, 9, 156); INSERT INTO table_log VALUES (4324182021466249495, 2, 147),(4324182021466249424, 8, 157); INSERT INTO table_log VALUES (4324182021466249496, 3, 148),(4324182021466249434, 7, 158); INSERT INTO table_log VALUES (4324182021466249497, 4, 141),(4324182021466249444, 6, 151); INSERT INTO table_log VALUES (4324182021466249498, 5, 142),(4324182021466249454, 5, 152); INSERT INTO table_log VALUES (4324182021466249499, 6, 143),(4324182021466249464, 4, 153); ? INSERT INTO table_stripelog VALUES (4324182021466249494, 1, 146),(4324182021466249414, 9, 156); INSERT INTO table_stripelog VALUES (4324182021466249495, 2, 147),(4324182021466249424, 8, 157); INSERT INTO table_stripelog VALUES (4324182021466249496, 3, 148),(4324182021466249434, 7, 158); INSERT INTO table_stripelog VALUES (4324182021466249497, 4, 141),(4324182021466249444, 6, 151); INSERT INTO table_stripelog VALUES (4324182021466249498, 5, 142),(4324182021466249454, 5, 152); INSERT INTO table_stripelog VALUES (4324182021466249499, 6, 143),(4324182021466249464, 4, 153);

(3)、查看文件系統的數據目錄
table_log表(基于Log引擎)

[root@xxxx2 ~]# ll /var/lib/clickhouse/data/default/table_log/ 總用量 20 -rw-r----- 1 clickhouse clickhouse 168 11月 30 20:02 duration.bin -rw-r----- 1 clickhouse clickhouse 48 11月 30 20:02 __marks.mrk -rw-r----- 1 clickhouse clickhouse 168 11月 30 20:02 pageviews.bin -rw-r----- 1 clickhouse clickhouse 137 11月 30 20:02 sizes.json -rw-r----- 1 clickhouse clickhouse 258 11月 30 20:02 userid.bin [root@xxxx2 ~]#

table_stripelog表(基于StripeLog引擎)

[root@xxxx2 ~]# ll /var/lib/clickhouse/data/default/table_stripelog/ 總用量 12 -rw-r----- 1 clickhouse clickhouse 1044 11月 30 20:02 data.bin -rw-r----- 1 clickhouse clickhouse 536 11月 30 20:02 index.mrk -rw-r----- 1 clickhouse clickhouse 70 11月 30 20:02 sizes.json [root@xxxx2 ~]#

table_tinylog表(基于TinyLog引擎)

[root@xxxx2 ~]# ll /var/lib/clickhouse/data/default/table_tinylog/ 總用量 16 -rw-r----- 1 clickhouse clickhouse 168 11月 30 20:02 duration.bin -rw-r----- 1 clickhouse clickhouse 168 11月 30 20:02 pageviews.bin -rw-r----- 1 clickhouse clickhouse 107 11月 30 20:02 sizes.json -rw-r----- 1 clickhouse clickhouse 258 11月 30 20:02 userid.bin [root@xxxx2 ~]#

總結

以上是生活随笔為你收集整理的12_VersionedCollapsingMergeTree,Log Engine Family(Log引擎,StripeLog引擎,TinyLog引擎)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。