Oracle 使用dbms_stats.gather_table_stats来进行表analyse,收集表统计信息


一. 介绍

DBMS_STATS.GATHER_TABLE_STATS 用于收集 表 级别的统计信息。这些统计信息有助于查询优化器优化查询计划,影响与表本身相关的查询性能。
Oracle 查询优化器会根据表的统计信息来选择最优的执行计划。当运行 DBMS_STATS.GATHER_TABLE_STATS 时,它会收集表的统计信息(例如:表的行数、列的基数、空值数目、数据分布等),这些信息会被存储在数据字典中。优化器使用这些统计信息来估算查询的成本,从而决定使用哪种执行计划。

⭐可以提优化查询计划,提升表的查询速度。

⏹注意事项

  • 如果表的数据量较大且数据分布发生了变化(如添加了很多新数据或删除了大量数据),则执行 DBMS_STATS.GATHER_TABLE_STATS 是必要的,才能保证优化器使用最新的表信息。
  • 频繁的统计信息更新并不总是有益的:如果你有稳定的数据负载并且查询性能已经稳定,频繁地收集统计信息可能不会显著改善性能,反而可能会增加系统负担。

二. 参数说明

  • ownname
    • 数据类型:VARCHAR2
    • schema名称,表的所有者
  • tabname
    • 数据类型:VARCHAR2
    • 要收集信息的表的名称
  • estimate_percent:
    • 数据类型:NUMBER
    • 用于估算样本的百分比(0 到 100),用于估算索引的统计信息。较低的百分比会减少收集时间,但可能会影响统计信息的准确性。
    • 默认值:DBMS_STATS.AUTO_SAMPLE_SIZE (自动选择样本大小)。
  • degree
    • 数据类型:NUMBER
    • 表示收集统计信息时要使用的并行度。如果设置为 0 或者省略,则不使用并行度。
    • 默认值:DBMS_STATS.DEFAULT_DEGREE(即通常不使用并行度)。
  • cascade
    • 数据类型:BOOLEAN
    • 是否收集索引表的统计信息。如果设置为 TRUE,则会在收集索引统计信息时,也收集该索引所在表的统计信息。
    • 默认值:FALSE
  • no_invalidate
    • 数据类型:BOOLEAN
    • 是否在收集统计信息后不使所有依赖此索引的查询计划失效。如果设置为 TRUE,则不使查询计划失效。
      • 当设置为 FALSE 时,收集统计信息后不会使现有的执行计划失效。换句话说,如果索引统计信息有变化,优化器不会重新计算查询的执行计划。
      • 如果设置为 TRUE,则会使相关的执行计划失效,并重新生成新的执行计划。
      • 通常,设置为 FALSE 是比较安全的做法,避免不必要的性能波动。
    • 默认值:FALSE(使查询计划失效)
DBMS_STATS.GATHER_TABLE_STATS(
    ownname => 参数值,
    tabname => 参数值,
    estimate_percent => 参数值,
    degree => 参数值,
    cascade => 参数值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值