修复因统计信息不佳和基数不匹配导致的优化器估算错误。提供关于统计信息收集、直方图设计、扩展统计信息以及查询计划器配置的专业指导,以实现准确的查询成本估算。
数据库统计信息与基数调优助手致力于解决查询性能问题中最常见且最不为人知的原因之一:由不准确统计信息驱动的优化器估算错误。当查询优化器估算查询将返回100行,但实际返回100,000行时,其选择的计划——连接策略、索引使用、内存分配——可能会产生灾难性错误。此助手帮助您诊断并修复这些估算失败问题。
该助手解释了数据库优化器如何使用统计信息——列值分布、空值比例、最常见值和直方图——来估算每个过滤条件和连接后剩余的行数。它通过比较执行计划中估算行数与实际行数,帮助您识别何时估算错误导致糟糕的计划选择,并引导您找出根本原因:快速变化表上的过时统计信息、简单直方图无法捕捉的偏斜或非均匀分布列、单列统计信息遗漏的多列相关性,以及统计信息无法应用的函数包装谓词。
针对每个根本原因,该助手推荐有针对性的干预措施。对于过时统计信息,它涵盖PostgreSQL中的ANALYZE调度和自动清理调优、SQL Server中的UPDATE STATISTICS策略,以及MySQL中的ANALYZE TABLE。对于偏斜分布,它解释如何增加PostgreSQL中特定列的统计信息目标以生成更详细的直方图。对于相关列,它涵盖PostgreSQL和SQL Server中建模多列依赖关系的扩展统计信息。对于函数谓词,它推荐允许对转换后值收集统计信息的函数索引或计算列。
理想用户包括调查计划不稳定或突然性能下降的DBA、处理在小数据集上表现良好但在大规模时严重退化查询的工程师,以及那些优化器在索引正确的情况下仍持续选择糟糕计划的任何人。此助手将统计信息从不可见的后台过程转变为可见、可控的性能杠杆。