延续前几篇文章,下面着重从一些基本的API讲讲从入门到习惯的常用方法,后续更新。
USAGE1 节点管理
设置主节点,又成为协调节点
SELECT citus_set_coordinator_host('coord.example.com', 5432);
step1.创建节点
select * from master_add_node('new-node', 12345);
step2.删除节点
step3.新增节点后重新平衡分布式表
step4.更新节点
select * from master_update_node('old-address', 'new-address', 5432);
USAGE2 创建时序型分布式表
step1.使用partition建立基本表
-- 时序字段一般为需要分区的字段,如data_date
CREATE TABLE '模式名.表名'(
...
)
PARTITION BY RANGE('时序字段');
step2.建立分布式表
--分布键要选择离散度高的键值,有利于分布式表分别存储数据
SELECT CREATE_DISTIBUTED_TABLE('模式名.表名','分布键');
--下面是官方给出的示例
SELECT create_distributed_table('github_events', 'repo_id');
-- alternatively, to be more explicit:
SELECT create_distributed_table('github_events', 'repo_id',
colocate_with => 'github_repo');
step3.利用插件创建分区
USAGE3 删除分布式表
--删除分布式表,分布式表会转为本地表
SELECT UNDISTRIBUTED_TABLE('模式名.表名');
--如果想彻底删除可以使用
DROP TABLE '模式名.表名';
USAGE4 创建索引
USAGE5 使用MD5值作为分布键
USAGE6 使用PG_FDW插件创建本地临时表
USAGE7 使用DB_LINK插件实现远端数据同步
USAGE8 常用数据库维护与查询命令
--查询目前正在运行DDL等语句,及相关锁状态
SELECT * FROM PG_STAT_ACTIVITY;
--查看分布式表
SELECT table_name, table_size FROM citus_tables;
--重新载入配置
SELECT pg_reload_conf()
-- 查询表名github_events的实际大小
SELECT pg_size_pretty(citus_total_relation_size('github_events'));
USAGE9 使用CTE执行分布式表联合操作
-- 报错语句
WITH T1 (
SELECT * FROM T0
)
INSERT T2
SELECT * FROM T1;
-- 上述语句会提示 分布式节点无法获取中间数据,fetch intermediate results
-- 需要改造为下面 同时要设置以下参数
-- alter role postgres set citus.enable_repartition_joins =on;
-- alter role postgres set citus.max_intermediate_result_size =-1;
-- 官方给出了INSERT INTO SELECT 语句需要包含同样的分布键,否则语句无法使用
INSERT T2
SELECT * FROM(
WITH T1 (
SELECT * FROM T0
)
SELECT * FROM T1
) TMP_T1;
BUGREPORT 错误代码
CANNOT TO FETCH INTERMEDIAT RESULTS ON NODE...
--提示无法获取中间结果
原因:1.可能中间数据集超过限额