citus 常用功能与api——DDL与DML部分(翻译自v9.3)

翻译为个人兴趣,仅供学习参考,侵删

官方原文连接:http://docs.citusdata.com/en/v9.3/develop/api_udf.html#table-and-shard-ddl

 

 

Table and Shard DDL

create_distributed_table

create_distributed_table()函数用于定义分布式表,创建其分片(仅当分布式表是hash模式创建)。该函数接收表名,分发列和可选的分发方法,并插入元数据,将表标记为已分发。如果未指定分发方法,则该函数默认为“hash”分发。如果表是hash分布的,则该函数还会基于分片数目和分片副本数量来创建分片。向表中插入的数据,将自动分配到工作节点。

参数

table_name:需要分发的表的名称。

distribution_column:表上的分发列。

distribution_type:(可选)分配表的方法。允许的值为append或hash,默认值为'hash'。

colocate_with :(可选)将当前表包含在另一个表的同一位置组中。默认情况下,当表由相同类型的列分布,具有相同的shard_count以及具有相同的分片副本数量时,它们位于同一位置。如果想之后取消该设定,则可以使用update_distributed_table_colocation。colocate_with值可以none或者另一张分布式表的表名,none会将当前表存在新的位置组中,另一种值会将当前表存在输入表的位置组中。

如果新的分布式表与其他表无关,最好指定colocate_with => 'none',否则可能会降低性能。

举例

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');

truncate_local_data_after_distributing_table

在创建分布式表后截断所有本地数据,并防止由于本地记录过时而导致的约束失效。截断会级联到具有指向特定的表的外键的表。如果引用表本身不是分布式的,则为了保护引用完整性,直到分布式表被创建为止都会禁止截断:

ERROR:  cannot truncate a table referenced in a foreign key constraint by a local table
因为它们的数据(如果有)会在分布式表创建期间复制到工作节点,所以截断本地协调器节点的表数据对于分布式表来说是安全的。

参数

table_name:分布式表的名称,其协调器节点上的本地对应项会被截断。

举例

-- requires that argument is a distributed table
SELECT truncate_local_data_after_distributing_table('public.github_events');

c

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aiky哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值