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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

13_clickhouse,Merge引擎,File引擎,External Data引擎,External Data引擎,Null Engine,URL引擎,Memory、Set、Buffer

發布時間:2024/9/27 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 13_clickhouse,Merge引擎,File引擎,External Data引擎,External Data引擎,Null Engine,URL引擎,Memory、Set、Buffer 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

13.Merge引擎
13.1.Merge引擎
13.2.案例
14.File引擎
14.1.File引擎
14.2.案例
15.External Data引擎
15.1.External Data引擎
16.Null Engine
16.1.Null Engine
16.2.案例
17.URL引擎
17.1.URL引擎
18.其他引擎
18.1.其他引擎:Memory、Set、Buffer
18.2.案例
Memory引擎
Set引擎
Buffer引擎

13.Merge引擎

13.1.Merge引擎

根據匹配表名的正則表達式,從任意數量的表中同時讀取數據。

Merge引擎的表本身不存儲數據。

讀取是自動并行化的。

讀取時按需使用索引。

指定表引擎:
ENGINE = Merge(dbname, table_reg_expression)
參數: 數據庫名稱、匹配表名的正則表達式
示例: Merge(hits,’^WatchLog’)

從虛擬列_table獲取讀取數據的表名稱。

13.2.案例

1.創建表

DROP TABLE WatchLog_old; CREATE TABLE WatchLog_old(date Date, UserId Int64, EventType String, Cnt UInt64) ENGINE=MergeTree PARTITION BY date ORDER BY (UserId, EventType);INSERT INTO WatchLog_old VALUES ('2018-01-01', 1, 'hit', 3);DROP TABLE WatchLog_new; CREATE TABLE WatchLog_new(date Date, UserId Int64, EventType String, Cnt UInt64) ENGINE=MergeTree PARTITION BY date ORDER BY (UserId, EventType);INSERT INTO WatchLog_new VALUES ('2018-01-02', 2, 'hit', 3);

2.創建Merge引擎表:

DROP TABLE WatchLog; CREATE TABLE WatchLog as WatchLog_old ENGINE=Merge(currentDatabase(), '^WatchLog');

3.查看數據

xxxx2 :) select * from WatchLog_new;SELECT * FROM WatchLog_new┌───────date─┬─UserId─┬─EventType─┬─Cnt─┐ │ 2018-01-022 │ hit │ 3 │ └────────────┴────────┴───────────┴─────┘1 rows in set. Elapsed: 0.007 sec. xxxx2 :) select * from WatchLog_old;SELECT * FROM WatchLog_old┌───────date─┬─UserId─┬─EventType─┬─Cnt─┐ │ 2018-01-011 │ hit │ 3 │ └────────────┴────────┴───────────┴─────┘1 rows in set. Elapsed: 0.005 sec. xxxx2 :) select * from WatchLog;SELECT * FROM WatchLog┌───────date─┬─UserId─┬─EventType─┬─Cnt─┐ │ 2018-01-022 │ hit │ 3 │ └────────────┴────────┴───────────┴─────┘ ┌───────date─┬─UserId─┬─EventType─┬─Cnt─┐ │ 2018-01-011 │ hit │ 3 │ └────────────┴────────┴───────────┴─────┘2 rows in set. Elapsed: 0.007 sec. xxxx2 :)

4.虛擬列

xxxx2 :) select _table,UserId FROM WatchLog;SELECT _table,UserId FROM WatchLog┌─_table───────┬─UserId─┐ │ WatchLog_new │ 2 │ └──────────────┴────────┘ ┌─_table───────┬─UserId─┐ │ WatchLog_old │ 1 │ └──────────────┴────────┘2 rows in set. Elapsed: 0.006 sec. xxxx2 :)

14.File引擎

14.1.File引擎

File表引擎按照支持格式(TabSeparated、CSV等),將數據保存文件中。

使用場景:

  • 數據從ClickHouse導出到文件。
  • 將數據從一種格式轉換為另一種格式。
  • 通過編輯磁盤上的文件更新ClickHouse中的數據。
  • 指定表引擎:
    ENGINE = File(Format)
    Format參數指定了文件格式。
    ClickHouse不支持為File引擎指定文件系統路徑。

    當使用File(Format)創建表時,它會在該文件夾中創建空子目錄。
    當數據寫入該表時,它將數據寫入子目錄下的文件data.Format文件中。

    14.2.案例

    1.創建File引擎的表

    CREATE TABLE file_engine_table (name String, value UInt32) ENGINE=File(CSV);

    默認情況下,ClickHouse將創建文件夾:/var/lib/clickhouse/data/default/file_engine_table。

    2.插入數據

    insert into file_engine_table values('one', 1); insert into file_engine_table values('two', 2);

    3.查詢數據

    SELECT * FROM file_engine_table;

    數據默認寫入文件:

    /var/lib/clickhouse/data/default/file_engine_table/data.CSV。

    4.手動修改磁盤文件,新增記錄:

    [root@xxxx2 ~]# cd /var/lib/clickhouse/data/default/file_engine_table [root@xxxx2 file_engine_table]# ls data.CSV

    [root@xxxx2 file_engine_table]# vim data.CSV,最終有如下結果:

    "one",1 "two",2 "two",3

    5.查詢數據

    xxxx2 :) select * from file_engine_table;SELECT * FROM file_engine_table┌─name─┬─value─┐ │ one │ 1 │ │ two │ 2 │ │ two │ 3 │ └──────┴───────┘3 rows in set. Elapsed: 0.005 sec. xxxx2 :)

    15.External Data引擎

    15.1.External Data引擎

    將外部數據發送至ClickHouse的server。數據存放在臨時表中,用于查詢(例如IN操作)。

    外部數據可以通過非交互式的命令行客戶端或HTTP接口上傳。

    如果需要對大量外部數據運行多個查詢,最好提前將數據上傳到數據庫,而不要使用此功能。

    命令行客戶端格式:–external --file=… [–name=…] [–format=…] [–types=…|–structure=…]
    –external : 標記外部數據的開始。
    –file : 文件的路徑或者”-”?!?”表示stdin,只能從stdin檢索個表。
    (以下選項可選)
    –name : 表的名稱,如果省略,使用默認名稱_data。
    –format :文件中數據的格式。默認值:TabSeparated。
    –types和–structure 這兩個參數只需要指定其中之一。
    –types : 逗號分隔的列分類的列表。例如:UInt64,String,URL String。定義列名稱和類型。

    HTTP接口:外部數據以multipart/form-data格式傳遞。每個表作為單獨的文件傳輸。表名取自文 件名?!皅uery_string"傳遞參數"name_format”、“name_types"和"name_structure”,其中"name" 是表名,默認為文件名。

    16.Null Engine

    16.1.Null Engine

    寫入Null引擎表時,數據被忽略。從Null引擎的表讀取時,響應為空。但是,可以在Null表上創建實例化視圖。因此,寫入表的數據將最終出現在視圖中。

    指定表引擎:
    ENGINE = File(Format)

    16.2.案例

    create database test; use test; DROP TABLE IF EXISTS src_null; DROP TABLE IF EXISTS m_view_sum;//創建Null引擎的表 CREATE TABLE src (id String, value UInt32) ENGINE = Null;//創建物化視圖 CREATE MATERIALIZED VIEW m_view_sum ENGINE = SummingMergeTree() order by id AS SELECT id, sum(value) as value FROM src group by id;//插入數據 insert into src values('id001', 1),('id002', 33),('id003', 36); insert into src values('id001', 2),('id002', 17),('id003', 24);//查看數據 select * from m_view_sum; optimize table m_view_sum; select * from m_view_sum; xxxx2 :) select * from m_view_sum;SELECT * FROM m_view_sum┌─id────┬─value─┐ │ id001 │ 2 │ │ id002 │ 17 │ │ id003 │ 24 │ └───────┴───────┘ ┌─id────┬─value─┐ │ id001 │ 1 │ │ id002 │ 33 │ │ id003 │ 36 │ └───────┴───────┘6 rows in set. Elapsed: 0.012 sec. xxxx2 :) select * from m_view_sum;SELECT * FROM m_view_sum┌─id────┬─value─┐ │ id001 │ 2 │ │ id002 │ 17 │ │ id003 │ 24 │ └───────┴───────┘ ┌─id────┬─value─┐ │ id001 │ 1 │ │ id002 │ 33 │ │ id003 │ 36 │ └───────┴───────┘6 rows in set. Elapsed: 0.012 sec. xxxx2 :) optimize table m_view_sum;OPTIMIZE TABLE m_view_sumOk.0 rows in set. Elapsed: 0.005 sec. xxxx2 :) select * from m_view_sum;SELECT * FROM m_view_sum┌─id────┬─value─┐ │ id001 │ 3 │ │ id002 │ 50 │ │ id003 │ 60 │ └───────┴───────┘3 rows in set. Elapsed: 0.005 sec. xxxx2 :)

    17.URL引擎

    17.1.URL引擎

    管理遠程HTTP/HTTPS服務器上的數據,此引擎類似于File引擎。
    可以進行并行讀寫。

    指定表引擎:
    ENGINE=URL(URL, Format) URL必須符合統一資源定位符的結構。指定的URL指向使用HTTP或HTTPS的服務器。 Format為ClickHouse支持的格式。 INSERT和SELECT操作分別轉換為POST和GET請求,為了處理POST請求,遠程服務器必須支持分塊 傳輸編碼。 可以使用max_http_get_redirects設置限制HTTP GET重定向躍點的最大數量。

    18.其他引擎

    18.1.其他引擎:Memory、Set、Buffer

    Memory引擎 :數據以未壓縮的形式存儲在RAM中。Server重啟,數據將從表中消失。讀和寫操作不會互相阻塞。不支持索引。讀取時并行化的。該引擎僅用于測試。

    Set:Set引擎的數據使用位于RAM中, 它專用于IN運算符的右側。檢索數據的唯一辦法是在IN運算符的右半部分使用它。啟動server時,Set表引擎的數據將加載到RAM。

    Buffer : 當寫入Buffer引擎的表時,數據先寫入內存,然后周期性地刷到另外一張表(可稱為目標表)。讀取操作是同時從緩沖區和另外一張表同時讀取數據。Buffer引擎限制很多,在極少情況下才會使用。

    18.2.案例

    1.Memory引擎

    drop table memory_demo; create table memory_demo (id Int8) ENGINE=Memory; insert into memory_demo values(1);xxxx2 :) select * from memory_demo;SELECT * FROM memory_demo┌─id─┐ │ 1 │ └────┘1 rows in set. Elapsed: 0.007 sec. xxxx2 :)

    2.Set引擎

    //創建Set引擎的表 drop table set_demo; create table set_demo (id Int8) ENGINE=Set;//插入數據 insert into set_demo values(1); insert into set_demo values(2); insert into set_demo values(1);

    3.Buffer引擎
    示例:
    Buffer(database, table, num_layers, min_time, max_time, min_rows, max_rows, min_bytes, max_bytes)
    引擎參數:
    database : 數據庫名稱。也可以使用一個返回字符串的常量表達式,例如:currentDatabase()。
    table : 數據刷新的目標表。
    num_layers : 并行的層數。在物理上, 該表將表示為num_layers個獨立的緩沖區。
    min_time, max_time, min_rows, max_rows, min_bytes, and max_bytes :從緩沖區刷新數據的條件。如果滿足所有min條件或滿足至少一個max條件,則從緩沖區刷新數據并將其寫入目標表。
    min_time,max_time : 從第一次寫入緩沖區起以秒為單位的時間條件。
    min_rows,max_rows : 緩沖區行數的條件。
    min_bytes,max_bytes : 緩沖區字節數的條件。

    A.創建目標表

    drop table t_target; create table t_target(id String, name String) ENGINE=MergeTree order by id;

    B.創建buffer表

    drop table t_buffer; CREATE TABLE t_buffer AS t_target ENGINE = Buffer(currentDatabase(), t_target, 16, 10, 100, 5, 1000000, 10000000, 100000000);

    說明,最少等待10秒,最多等待100秒。上面的各各參數的含義可以從上面Buffer定義中找到。
    C: 往buffer表插入數據

    insert into t_buffer values('a', 'aaa');

    D: 查看表數據

    select * from t_buffer; select * from t_target;

    結果顯示:
    剛插入數據后查詢到的結果是:

    xxxx2 :) select * from t_buffer;SELECT * FROM t_buffer┌─id─┬─name─┐ │ a │ aaa │ └────┴──────┘1 rows in set. Elapsed: 0.006 sec. xxxx2 :) select * from t_target;SELECT * FROM t_targetOk.0 rows in set. Elapsed: 0.004 sec. xxxx2 :)等一段時間之后,顯示的結果是: xxxx2 :) select * from t_buffer;SELECT * FROM t_buffer┌─id─┬─name─┐ │ a │ aaa │ └────┴──────┘1 rows in set. Elapsed: 0.007 sec. xxxx2 :) select * from t_target;SELECT * FROM t_target┌─id─┬─name─┐ │ a │ aaa │ └────┴──────┘1 rows in set. Elapsed: 0.008 sec. xxxx2 :)

    總結

    以上是生活随笔為你收集整理的13_clickhouse,Merge引擎,File引擎,External Data引擎,External Data引擎,Null Engine,URL引擎,Memory、Set、Buffer的全部內容,希望文章能夠幫你解決所遇到的問題。

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