一:Distributed介紹
分佈式引擎,本身不存儲數據,但可以在多個服務器上進行分佈式查詢。讀是自動並行的。讀取時,遠程服務器表的索引(如果存在)會被使用。
Distributed(cluster_name, database, table, [sharding_key])
參數解析:
cluster_name:服務器配置文件中的集羣名,在/etc/metrika.xml中配置的。具體配置見前文。
database:數據庫名。
table:表名。
sharding_key:數據分片鍵。
二:Distributed使用
1. 在三臺機器上分別創建一個表t。
create table t(id UInt16, name String) engine=TinyLog;
2. 在三臺機器的t表中插入一些數據。
insert into t(id, name) values(1, 'zs');
insert into t(id, name) values(2, 'ls');
3. 在192.168.44.129上創建分佈式表。
create table dis_table(id UInt16, name String) engine=Distributed(clickhouse_cluster, default, t, id);
4. 查看結果。
可以看到,三臺機器的數據都拿到了。
5. 向分佈式表插入數據。
insert into dis_table(id, name) values(3, 'aa');
insert into dis_table(id, name) values(4, 'bb');
查看結果:
插入機制是根據指定的分片鍵id,對插入的id進行哈希計算,然後放到分片裏面。