暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分区表和分库分表的路由算法和功能对比

酷数据库 2023-07-24
234

分区表与分库分表最重要的区别,是它们的分区会使用完全不同的路由算法。如下图所示:

  • 分库分表的路由算法是HASH值按物理分表数目取模,如果要变更分区数目(例如分表数目由4个变成5个),所有数据都需要进行rehash,因此,DRDS模式的分库分表无法提供分区级的变更能力;
  • 分区表的默认路由算法是基于range的一致性HASH算法,这种算法天然支持通过分裂、合并操作等变更分区,并且无须rehash所有数据,因此,AUTO模式的分区表具备分区级的变更能力。
456789

功能对比

与DRDS模式数据库相比,AUTO模式数据库新增了自动分区、热点分裂、分区调度和TTL表等新特性,并在很多其它方面(如分区管理、拆分变更等)做了大量工作以优化分布式体验。

AUTO模式数据库与DRDS模式数据库主要功能对比:

功能项AUTO模式数据库DRDS模式数据库
透明分布式默认主键分区支持。若建表时不指定分区定义,将自动按主键进行分区。不支持。
默认全局二级索引支持。索引不指定分区列时,将自动索引列分区。不支持。
负载均衡调度支持。不支持。
热点散列能力支持。不支持。
分区策略Hash分区 & Key分区支持。采用一致性哈希的路由算法,并支持热点散列。支持采用按分区数取模的路由算法,不支持热点散列。
Range分区 & Range Columns分区支持,支持热点散列。不支持。
List分区 & List Columns分区支持。不支持。
向量分区键(使用多个列作为分区键)支持。分区键支持按向量分区,例如PARTITION BY KEY(c1,c2,c3)不支持。
分区键字符校验集支持。不支持。
单表 & 广播表支持。支持。
分区管理创建、删除、修改分区支持。不支持。
分裂、合并分区支持。不支持。
迁移分区支持。不支持。
截断分区支持。不支持。
分区透视即将上线将支持自动分析热点分区。不支持。
拆分变更调整表类型(单表、广播表与分区表互转)支持。支持。
调整分区定义(包括分区数目、分区键类型、分区策略等)支持。支持。
弹性扩(缩)容是否有停写阶段否。是(短暂的停写)。
是否允许其他DDL是。否。
Locality静态隔离支持,创建库、表和分区时指定物理存储资源。支持,创建库、表时指定物理存储资源。
动态隔离支持,动态调整库表所在的物理存储资源。不支持。
是否与扩缩容兼容是。否。
分区裁剪前缀分区裁剪支持。

例如,按PARTITION BY KEY(a,b,c)进行分区,向量分区键使用a、b、c这3个列。那么a=100 and b=100或a=100都能命中分区裁剪。

不支持。
计算表达式常量折叠支持。

例如,对含计算表达式的条件pk = POW(2, 4)进行分区裁剪。

不支持。分区键条件要求必须是常量(如pk = 123);如果分区键是计算表达式如pk = POW(2, 4),将执行全表扫描。
分区路由大小写敏感及忽略行尾空格支持。

支持通过指定分区键的字符校验集(Collation)来决定分区路由是否需要区分大小写以及是否需要忽略行尾空格。

不支持。分区列不支持使用Collation,Hash算法只支持大小写敏感,不支持忽略行尾空格。
JOIN计算下推支持。

支持在分区的分裂、合并与迁移等操作期间,JOIN计算下推不受影响。

支持。
分区选择支持。

支持分区选择语法查询特定分区,例如SELECT * FROM tb PARTITIONS (p1)

不支持。
TTL(分区的生命周期管理)支持。不支持。
AUTO_INCREMENT支持。保证全局唯一性、单调递增和连续性。支持。保证全局唯一性,不保证单调递增和连续性。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论