【发布时间】:2021-12-22 02:29:39
【问题描述】:
[用户在YugabyteDB Community Slack上发布的问题]
在 YSQL 中,如果我的表使用在多个列上定义的主键,那么在这种情况下,分片键是什么?这两列都将用于计算哈希吗?另外,我们可以指定列用作分区/分片键而不在主键中提及它们吗?如果其中一张表没有主键但需要在其中一列上分片怎么办?
【问题讨论】:
标签: yugabyte-db
[用户在YugabyteDB Community Slack上发布的问题]
在 YSQL 中,如果我的表使用在多个列上定义的主键,那么在这种情况下,分片键是什么?这两列都将用于计算哈希吗?另外,我们可以指定列用作分区/分片键而不在主键中提及它们吗?如果其中一张表没有主键但需要在其中一列上分片怎么办?
【问题讨论】:
标签: yugabyte-db
默认情况下,当主键中配置多列时,第一列是散列的,其他列是按升序排列的。 但是您可以完全控制主键定义,这意味着您可以以任何您喜欢的方式指定它:https://docs.yugabyte.com/latest/api/ysql/the-sql-language/statements/ddl_create_table/#primary-key
目前,您只能使用 PRIMARY KEY 中的列进行分片。如果表没有主键,则会在内部创建一个隐式主键,并根据该主键对表进行分片。因此,最好始终创建主键。
【讨论】: