OB数据库中Hash 分区 和 Key 分区
【摘要】 在 OceanBase 数据库中,Hash 分区 和 Key 分区 虽然都属于基于哈希算法将数据均匀打散到不同分区的技术,但在实际应用中有以下几个核心区别和特性:1. 分区键的数据类型限制Hash 分区:分区键的计算结果必须是整型(INT),或者能够隐式转换为整型的列。Key 分区:分区键的类型不限于整型,支持除了 TEXT 和 BLOB 以外的绝大多数常见数据类型(例如字符串 VARCHA...
在 OceanBase 数据库中,Hash 分区 和 Key 分区 虽然都属于基于哈希算法将数据均匀打散到不同分区的技术,但在实际应用中有以下几个核心区别和特性:
1. 分区键的数据类型限制
-
Hash 分区:分区键的计算结果必须是整型(INT),或者能够隐式转换为整型的列。
-
Key 分区:分区键的类型不限于整型,支持除了
TEXT和BLOB以外的绝大多数常见数据类型(例如字符串VARCHAR、日期等)。
2. 是否支持自定义表达式
-
Hash 分区:支持使用用户自定义的表达式进行计算(例如
HASH(YEAR(create_time))或HASH(id + 1))。 -
Key 分区:不支持自定义表达式,分区键只能是具体的列名,或者多列的组合。
3. 默认分区键的行为(未指定时)
-
Hash 分区:如果在建表时没有显式指定 Hash 的列或表达式,通常会报错或需要明确定义。
-
Key 分区:如果在建表时不指定分区键,Key 分区会默认使用表的主键(Primary Key)作为分区键;如果表没有主键,则会选择非空的唯一键(Unique Key)作为分区键。
4. 底层哈希算法来源
-
Hash 分区:使用的是数据库自身内置的哈希函数来对用户给定的表达式或列进行散列计算。
-
Key 分区:通常依赖数据库服务器提供的一套标准的内部哈希算法来对指定的列进行散列。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)