面试题答案
一键面试优化统计信息收集过程的顺序与参数设置
- 收集顺序
- 按访问频率排序:先对业务中频繁查询涉及的表进行统计信息收集。例如,如果某些表在核心业务查询中经常被关联,优先处理这些表。这样能更快地提升关键业务查询的性能。
- 考虑表关联关系:从基础表开始收集统计信息。基础表通常是其他表关联的源头,先准确收集基础表的统计信息有助于后续关联表统计信息的准确性。比如,在一个订单管理系统中,“客户”表可能是基础表,先分析“客户”表,再处理“订单”表等与之关联的表。
- 参数设置
- 抽样比例(
ANALYZE
的SAMPLE
参数):- 高抽样比例(接近100%):能获得非常准确的统计信息,因为几乎覆盖了所有数据。但这会增加收集统计信息的时间和资源消耗,对业务影响较大。例如,对于数据量较小且对查询精度要求极高的表,可以使用高抽样比例。
- 低抽样比例(如10% - 20%):收集效率高,能快速完成统计信息收集,对业务影响小。然而,统计信息的准确性会降低,可能导致查询优化器做出不太理想的查询计划。适合数据量极大且分布相对均匀的表,此时即使低抽样比例也能大致反映数据特征。
- 并行分析(
PARALLEL
参数):启用并行分析可以加快统计信息收集速度。但要注意,并行操作会消耗更多系统资源,可能影响业务正常运行。在系统资源充足的情况下,对于大表可以设置较高的并行度(如PARALLEL 4
),利用多个CPU核心同时进行分析;而在资源紧张时,应降低并行度或不使用并行分析。 VERBOSE
参数:设置VERBOSE
参数为ON
可以在收集统计信息过程中输出详细信息,有助于了解分析进度和发现潜在问题。但这会增加日志量,在生产环境中使用时需谨慎考虑对日志系统的影响。
- 抽样比例(
不同参数对统计信息准确性和收集效率的影响
- 抽样比例
- 准确性:抽样比例越高,统计信息越接近真实数据分布,准确性越高。例如,在统计一个电商商品表的价格分布时,高抽样比例能更精确地反映不同价格区间的商品数量,查询优化器据此生成的计划更优。
- 收集效率:抽样比例越高,需要处理的数据量越大,收集效率越低。低抽样比例则相反,能快速完成统计信息收集,但准确性受影响。
- 并行分析
- 准确性:并行分析不影响统计信息的准确性,只是改变了收集的速度。
- 收集效率:合理设置并行度能显著提高收集效率,通过多个进程同时处理数据,减少整体收集时间。但并行度过高可能导致资源竞争,反而降低效率。
VERBOSE
参数- 准确性:该参数不影响统计信息的准确性,只是控制输出信息的详细程度。
- 收集效率:开启
VERBOSE
会增加少量系统开销用于输出详细日志,但通常对收集效率影响不大,除非日志输出量极大导致系统I/O瓶颈。