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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Citus数据分片分布研究(一 在工作节点直接操作表)

發布時間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Citus数据分片分布研究(一 在工作节点直接操作表) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(本文中凡是未顯式指出的SQL,均在協調節點上執行)

工作節點

mydb1=# SELECT * FROM master_get_active_worker_nodes();node_name | node_port ---------------+-----------192.168.7.131 | 5432192.168.7.135 | 5432192.168.7.136 | 5432192.168.7.137 | 5432192.168.7.133 | 5432192.168.7.132 | 5432192.168.7.134 | 5432192.168.7.130 | 5432 (8 rows)

創建表test_table

create table test_table(id int, name varchar(16));

此時在協調節點上用 \d 可以看到表test_table。

配置分片原則

SELECT master_create_distributed_table('test_table', 'id', 'hash');

根據分片數和副本數進行分片

SELECT master_create_worker_shards('test_table', 8, 1);

此時在工作節點上用 \d 可以看到表test_table_XXXXXX。

查看分片

mydb1=# SELECT * from pg_dist_shard;logicalrelid | shardid | shardstorage | shardminvalue | shardmaxvalue --------------+---------+--------------+---------------+---------------test_table | 102024 | t | -2147483648 | -1610612737test_table | 102025 | t | -1610612736 | -1073741825test_table | 102026 | t | -1073741824 | -536870913test_table | 102027 | t | -536870912 | -1test_table | 102028 | t | 0 | 536870911test_table | 102029 | t | 536870912 | 1073741823test_table | 102030 | t | 1073741824 | 1610612735test_table | 102031 | t | 1610612736 | 2147483647 (8 rows)

可見,工作節點上的表名test_table_XXXXXX中最后的一段數字,即是這里的shardid。

操作表test_table

mydb1=# INSERT INTO test_table VALUES(1,'a'); INSERT 0 1 mydb1=# INSERT INTO test_table VALUES(2,'b'); INSERT 0 1 mydb1=# INSERT INTO test_table VALUES(3,'c'); INSERT 0 1 mydb1=# INSERT INTO test_table VALUES(4,'d'); INSERT 0 1 mydb1=# INSERT INTO test_table VALUES(5,'e'); INSERT 0 1 mydb1=# INSERT INTO test_table VALUES(6,'f'); INSERT 0 1 mydb1=# INSERT INTO test_table VALUES(7,'g'); INSERT 0 1 mydb1=# INSERT INTO test_table VALUES(8,'h'); INSERT 0 1 mydb1=# select * from test_table;id | name ----+------1 | a8 | h5 | e4 | d7 | g3 | c6 | f2 | b (8 rows)

在工作節點上直接操作表

在worker node上執行:

mydb1=# select * from test_table_102024; id | name ----+------ 1 | a 8 | h (2 rows)

可見表test_table的記錄是根據id列hash散布在8個工作節點中的。
嘗試直接向工作節點插入數據,在worker node上執行:

mydb1=# INSERT INTO test_table_102024 VALUES(999,'999'); INSERT 0 1

然后再進行查詢:

mydb1=# select * from test_table_102024; id | name -----+------ 1 | a 8 | h 999 | 999 (3 rows)

在協調節點coordinator node上進行查詢:

mydb1=# select * from test_table;id | name -----+------1 | a8 | h999 | 9995 | e4 | d7 | g3 | c6 | f2 | b (9 rows)

可見直接對工作節點進行的數據操作,可以在協調節點正常訪問(但是沒按照id進行哈希分布)。

總結

以上是生活随笔為你收集整理的Citus数据分片分布研究(一 在工作节点直接操作表)的全部內容,希望文章能夠幫你解決所遇到的問題。

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