收集统计信息(二) 之 dbms_stats

本文详细介绍了Oracle中收集统计信息的存储过程,如dbms_stats.gather_table_stats,dbms_stats.gather_schema_stats以及dbms_stats.gather_index_stats。讨论了关键参数如采样比例、分析样式、并行度和分析粒度的影响,并提供了参数设置的实践建议,以优化SQL性能。
这次讲解一下收集统计信息常用的存储过程

收集统计信息类:

一、dbms_stats.gather_table_stats存储过程
This procedure gathers table and column (and index) statistics. It attempts to parallelize as much of the work as possible, but there are some restrictions as described in the individual parameters.
SQL> desc dbms_stats.gather_table_stats;
Parameter        Type     Mode Default?
---------------- -------- ---- --------
OWNNAME          VARCHAR2 IN            --所有者的姓名
TABNAME          VARCHAR2 IN            --要分析的表名
PARTNAME         VARCHAR2 IN   Y        --要分析的分区名称
ESTIMATE_PERCENT NUMBER   IN   Y        --采样的比例
BLOCK_SAMPLE     BOOLEAN  IN   Y        --是否块分析
METHOD_OPT       VARCHAR2 IN   Y        --分析的方式
DEGREE           NUMBER   IN   Y        --分析的并行度
GRANULARITY      VARCHAR2 IN   Y        --分析的粒度
CASCADE          BOOLEAN  IN   Y        --是否分析索引
STATTAB          VARCHAR2 IN   Y        --使用的性能表名
STATID           VARCHAR2 IN   Y        --性能表的标识
STATOWN          VARCHAR2 IN   Y        --性能表的所有者
NO_INVALIDATE    BOOLEAN  IN 
`DBMS_STATS.GATHER_TABLE_STATS` 是 Oracle 数据库中一个过程(procedure),用于收集表的统计信息。它可以替代旧版的 `ANALYZE TABLE` 语句,提供更高效和更精确的统计信息收集方法。 使用 `DBMS_STATS.GATHER_TABLE_STATS` 可以收集表的各种统计信息,包括行数、块数、列的分布等。这些统计信息对于优化查询性能非常重要,因为它们可以帮助优化器生成更准确的执行计划。 以下是使用 `DBMS_STATS.GATHER_TABLE_STATS` 收集统计信息的示例: ```sql BEGIN DBMS_STATS.GATHER_TABLE_STATS( ownname => 'schema_name', tabname => 'table_name', estimate_percent => DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt => 'FOR ALL COLUMNS SIZE AUTO', cascade => TRUE ); END; ``` 在上面的示例中,`schema_name` 是表所属的模式名,`table_name` 是要收集统计信息的表名。`estimate_percent` 参数控制了采样的百分比,使用 `DBMS_STATS.AUTO_SAMPLE_SIZE` 可以自动选择合适的采样大小。`method_opt` 参数指定了统计信息收集的方法和选项,'FOR ALL COLUMNS SIZE AUTO' 表示对所有列进行统计,并自动选择合适的大小。`cascade` 参数表示是否同时收集相关索引的统计信息。 需要注意的是,`DBMS_STATS.GATHER_TABLE_STATS` 还有其他可选的参数,可以根据具体需求进行设置,如 `granularity`、`degree` 等。详细的参数说明可以参考 Oracle 官方文档。 通过使用 `DBMS_STATS.GATHER_TABLE_STATS`,可以更灵活地、更高效地收集表的统计信息,并提升查询性能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值