注册
达梦数据库DPC分布式数据库分区表的使用和规则。
专栏/技术分享/ 文章详情 /

达梦数据库DPC分布式数据库分区表的使用和规则。

晚安 2024/08/30 891 0 1
摘要

分区方式

  1. 哈希分区:适合有规律生成的字段。
  2. 范围分区:适用于数值或日期类型的字段。间隔分区是其一种特例。
  3. 列表分区:适用于取值较固定的字符类型字段。

分区策略

  1. 使用主键分区
    • 优点:避免局部索引升级为全局索引,从而防止分区无法truncate和高并发写入慢的问题。
  2. 使用关联列分区
    • 根据业务SQL优先选择过滤性更好的列作为分区键。
    • 引入分区智能连接(Partition Wise Join,PWJ)以提高性能,前提是对表采用相同的分区方式且分区存储位置一致。

分区一致性

  • 使用sp_set_para_value设置参数来保证每个BP上有指定数量的哈希子分区。
  • 创建哈希分区表和范围哈希分区表的具体语法示例。

DPC执行计划

  • 新增的操作符ESEND、ERECV、GI(Granule Iterator)用于控制并行处理中的数据流。
  • GI用于分区裁剪优化,剔除不满足条件的分区。

性能优化建议

  1. 选择合适的分区列:优先选择主键中的列作为分区键,否则局部索引将升级为全局索引。
  2. PWJ优化:确保并行度足够,且两表分区方式相同。
  3. 一级分区表:建议使用一级分区表,避免二级分区带来的复杂性。
  4. 分区方式选择
    • 小表(千万以下):普通表或一级哈希。
    • 大表(千万至五千万):优先选择主键中频率高、筛选性好的字段哈希分区。
    • 超大表(五千万以上):范围(业务时间)+哈希关联字段。

特殊注意事项

  • 如果源端表有主键,则分区列应包含在主键中,如果主键没有实际所有切不进行业务交互,迁移过程中如果出现慢的情况,可以先不设置主键,性能问题可以使用索引解决。
  • 视图优化:使用时间做一级范围分区,ID或Name做二级哈希分区,且哈希分区数相同,尽量存储在同一BP上。
  • 抽数优化:将UPDATE操作变更为DELETE+INSERT以减少维护全局索引的工作量。

分区时需要沟通事项

  • 确认分区的必要性,避免不必要的分区。
  • 根据厂商的查询语句和关联条件调整分区策略。
  • 减少分区数量以提高插入性能。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服