analyze oracle 自动

2023年 8月 5日 69.2k 0

Oracle的自动分析是Oracle数据库的一个非常重要的功能,它可以自动地收集、分析并存储关于数据库的统计信息,以便于优化数据库的性能。下面将详细介绍如何使用analyze命令来实现自动分析。

Oracle数据库中的每个表和索引都有一组统计信息,包括行数、块数、平均行长度、空块数等等。这些信息在Oracle数据库优化器中用于选择最佳执行计划,以提高查询的执行效率。通常,我们需要手动收集这些统计信息,但是如果我们开启了Oracle自动分析,数据库将会在后台自动地收集和更新这些信息。

alter session set "_optimizer_autostats_on_sampling"=true;

首先,我们需要开启Oracle自动分析的开关。在Oracle 11g及以上版本中,默认情况下该功能是开启的,但有时候需要手动开启。在SQLPLUS终端中,我们可以使用以上命令来开启自动分析。

Oracle自动分析功能可以通过以下方法来收集统计信息:

1. 自动收集对于DDL操作而言是及时的

即,对于新建的、修改的、变更的、删除的表、索引和列,在用户提交DDL操作之后,数据库会自动地收集该对象的统计信息。例如,我们修改了一张表,设置了一个新的索引,则该新的索引第一次被使用时,数据库会自动地为该索引收集统计信息。

2. 自动收集对于DML操作而言是在合适的时间点的

即,当一个表或索引发生一定量的数据变动时,数据库会自动收集该对象的统计信息。这里的“一定量”是一个可设置的阈值,通常是行数或块数。当一个表或索引的数据发生较大变动时,自动收集统计信息可以提高查询的执行效率。例如,我们使用insert语句向表中插入了一批数据,则在该表中累计插入了可设置阈值之后,数据库会自动地为该表收集统计信息。

3. 自动收集部分全局级别的统计信息

即,对于全局级别的信息,如全局块使用率、全局空间使用率等等,数据库会在固定的时间间隔内自动收集并更新该类的统计信息。

Oracle自动分析可以在大部分情况下自动地满足我们的需求,极大地提高了数据库运维的效率。但在一些特定的情况下,可能需要手动地收集统计信息来保证查询的执行效率。

analyze table tablename compute statistics;
analyze index indexname compute statistics;

对于需要手动收集统计信息的情况,我们可以使用以上命令来收集该对象的统计信息。analyze命令将会消耗较大的CPU和I/O资源,因此,我们需要谨慎选择需要手动收集统计信息的对象。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论