已采纳
回答正文
回复
讨论正文
该问题的正文与回答。
背景:我们正在管理一个 MySQL 8.0 多租户库,核心表约 2.8 亿行,单主 32C128G,头部租户占 41%。日常运行中,我们发现部分 SQL 的执行计划在不同租户参数下不一致,出现计划漂移(plan drift)现象。这导致部分 SQL 从索引扫描切换为全表扫描,造成性能下降。
现象:部分 SQL 的执行计划在不同租户参数下不一致,出现计划漂移(plan drift)现象。例如,头部租户走 idx_tenant_status,长尾租户被优化器判成全表扫描。这属于计划漂移,不是新增慢 SQL。
已尝试的排查与结果:
ANALYZE TABLE 更新统计信息,短期内问题缓解,但过几小时后又漂。FORCE INDEX 和 optimizer hint,但发现改动面较大,且部分 SQL 的执行计划仍会漂。期望得到的答案形态:
引用: