首页 > 解决方案 > 在 YugabyteDB YSQL 中分片时如何对列进行哈希处理

问题描述

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

在 YSQL 中,如果我的表使用在多个列上定义的主键,那么在这种情况下分片键是什么?这两列都将用于计算哈希吗?另外,我们可以指定列用作分区/分片键而不在主键中提及它们吗?如果其中一张表没有主键但需要在其中一列上分片怎么办?

标签: yugabyte-db

解决方案


默认情况下,当主键中配置多列时,第一列是散列的,其他列按升序排列。但是您可以完全控制主键定义,这意味着您可以以任何您喜欢的方式指定它:https ://docs.yugabyte.com/latest/api/ysql/the-sql-language/statements/ddl_create_table/ #首要的关键

目前,您只能使用 PRIMARY KEY 中的列进行分片。如果表没有主键,则会在内部创建一个隐式主键,并基于该主键对表进行分片。因此,始终创建主键是最佳实践。


推荐阅读