【问题标题】:Partitioned table inside a colocated database in YugabyteDB YSQLYugabyteDB MYSQL 中的并置数据库中的分区表
【发布时间】:2022-06-27 23:37:33
【问题描述】:

[用户在YugabyteDB Community Slack上发布的问题]

是否可以在托管数据库中创建分区表? 当使用colocated=true 创建数据库并尝试添加这样的分区表时:

create table test(id bigserial not null, PRIMARY KEY(id HASH)) PARTITION BY RANGE WITH (colocated = false);

我遇到了一个错误

Query 1 ERROR: ERROR:  syntax error at or near “WITH” LINE 3:   PRIMARY KEY(id HASH)) PARTITION BY RANGE WITH (colocated=t…

是否可以这样做或者我应该考虑其他方法?我正在尝试进行地理分区,同时将一些表放在一起。

【问题讨论】:

    标签: yugabyte-db


    【解决方案1】:

    语法错误:您需要指定PARTITION BY RANGE 的列。比如PARTITION BY RANGE (id)(但是为什么它是哈希主键呢?)


    您不能将哈希分区表用于托管。在你的情况下,由于表是分区的,它应该可以工作(只要你修复语法错误),但它下面的所有分区都不能共存。

    考虑到上述情况,您可以有类似的东西:

    create table new (id bigserial not null, PRIMARY KEY (id ASC)) partition by range(id);
    create table new_1 partition of new for values from (5) to (10) with (colocated = false);
    create table new_2 partition of new for values from (20) to (30) with (colocated = true);
    

    如果要设置 colocated=true,则不能按哈希进行分片。它与 colocated=false 一起工作正常:

    create table new (id bigserial not null, value text) partition by range(id);
    create table new_1 partition of new (primary key(id hash)) for values from (0) to (5) with (colocated = false);
    create table new_2 partition of new (primary key(id hash)) for values from (5) to (10) with (colocated = false);
    

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 1970-01-01
      • 2022-07-20
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      相关资源
      最近更新 更多