【自建分布式数据库详细指南】(五)使用:常见API及使用问题

延续前几篇文章,下面着重从一些基本的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.可能中间数据集超过限额

点击链接加入群聊【CITUS POSTGRESQL MPP数据库】

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值