oceanbase如何解决数据倾斜引发的数据热点问题

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】选型阶段:oceanbase如何解决数据倾斜引发的数据热点问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

@论坛小助手

OceanBase 数据库通过分区表和表组的机制来解决数据倾斜引发的数据热点问题。分区表能够将数据分散到不同的分区,不同分区的数据可以分布到不同的机器上。这有助于缓解因数据倾斜而导致某些机器负载过高的问题。表组则可以控制不同表间数据分布的邻近关系,使得相关的数据可以存储在相同的节点上,从而提高查询效率。

具体措施如下:

  1. 合理选择分区键:在 AP 场景中,通常涉及多个维度的分析查询,没有一个维度可以将数据进行分区且适用于各查询。在这种情况下,可以选择一个列进行哈希或键值分区,确保该列的 NDV 远大于分区数,且该列数据没有倾斜或只有少量倾斜。优先选择整形列、时间列,再考虑 varchar/char 列。

  2. 复合分区:对于需要频繁查询最新数据的场景,可以先按时间进行 Range 分区,再进行 Hash 分区。例如:

    CREATE TABLE t1 (c1 DATE, c2 INT, c3 INT)
    PARTITION BY RANGE COLUMNS (c1)
    SUBPARTITION BY HASH (c2) SUBPARTITIONS 32
    (
    PARTITION p0 VALUES LESS THAN ('2024-01-01'),
    PARTITION p1 VALUES LESS THAN ('2024-02-01'),
    PARTITION p2 VALUES LESS THAN ('2024-03-01'),
    PARTITION p3 VALUES LESS THAN ('2024-04-01'),
    PARTITION p4 VALUES LESS THAN ('2024-05-01'),
    PARTITION p5 VALUES LESS THAN ('2024-06-01'),
    PARTITION p6 VALUES LESS THAN ('2024-07-01'),
    PARTITION p8 VALUES LESS THAN ('2024-08-01'),
    PARTITION p9 VALUES LESS THAN ('2024-09-01')
    )
    WITH COLUMN GROUP(EACH COLUMN);
    
  3. 表组:通过表组控制不同表间数据分布的邻近关系,使得相关的数据可以存储在相同的节点上,从而提高查询效率。

以上方法可以帮助缓解数据倾斜引发的数据热点问题,确保 OceanBase 数据库在生产环境中稳定高效地运行。

检索到的文档如下:

  1. 数据表设计最佳实践
  2. 数据分布