问题背景:
数据规模:单表数据量 2亿+
分区策略:基于租户ID的HASH分区
系统背景:从MySQL迁移后保留了原有索引结构,索引都包含租户ID字段
现存问题:
数据分布均匀时,查询性能表现正常
在数据倾斜场景下(单一租户数据占比90%+),原有索引区分度显著降低,导致大量回表操作,查询性能急剧下降
复现案例:
SELECT * FROM order WHERE customer_code = ‘1234’ AND deleted = 0 AND create_time > ‘2025-03-01 00:00:00’
以上SQL虽然条件简单,但在大租户数据场景下性能表现不佳。
逐表分析并优化索引方案工作量巨大。希望能获取一些系统性的优化建议或最佳实践经验,以提升查询性能。是否有针对数据倾斜场景的索引优化策略?有无其他架构层面的解决方案?