随着Oracle版本的不断更新,我们推荐使用dbms_stats来代替analyze获得对象的统计信息。本文主要讨论dbms_stats和analyze对AVG_ROW_LEN取值的异同
创建测试表格
引用
SQL> create table testt1 as select * from dba_objects;
SQL> insert into testt1 select * from testt1;
SQL> commit;
SQL> insert into testt1 select * from testt1;
SQL> commit;
SQL> select count(*) from testt1;
181860
用dbms_stats收集表格信息,可以发现AVG_ROW_LEN*NUM_ROWS小于表格实际物理大小
引用
SQL> exec dbms_stats.gather_table_stats('ZHOU','TESTT1');
SQL> select AVG_ROW_LEN,NUM_ROWS from dba_tables where table_name='TESTT1';
94 181860
SQL> select bytes from dba_segments where segment_name='TESTT1';
20971520
SQL> select 94*181860 from dual;
17094840
用analyze命令收集表格信息,我们发现AVG_ROW_LEN*NUM_ROWS比dbms_stats更接近于实际物理大小,
不过这差别并不会对CBO构成致命影响
引用
SQL> analyze table TESTT1 compute statistics;
SQL> select AVG_ROW_LEN,NUM_ROWS from dba_tables where table_name='TESTT1';
97 181860
SQL> select 97*181860 from dual;
17640420
分享到:
相关推荐
1. **对于分区表**:建议使用 `DBMS_STATS` 而不是 `ANALYZE` 语句,因为 `DBMS_STATS` 支持并行处理、可以收集整个分区表的数据以及单个分区的数据,并且可以在不同级别上计算统计信息。 2. **对于非分区表**:同样...
在 Oracle 数据库中,dbms_stats 包提供了一种手动收集统计信息的方式,包括基于表、用户和索引的统计信息。通过使用 dbms_stats 包,我们可以手动收集统计信息,以提高数据库的性能和查询优化。 基于表的统计信息...
传统上,有两种方法来收集这些统计信息:ANALYZE(或通过DBMS_UTILITY包)和DBMS_STATS包。然而,随着Oracle版本的发展,DBMS_STATS逐渐成为更推荐的选择,因为它提供了更准确的统计信息和并行收集统计的能力。 **...
然而,当出现错误“ORA-04063: package body 'SYS.DBMS_REGISTRY_SYS' has errors”时,表明`DBMS_STATS`包或与其相关的`SYS.DBMS_REGISTRY_SYS`包体存在错误,这可能对数据库性能和正常操作造成影响。 **问题症状*...
Oracle数据库系统提供了强大的XML处理能力,这主要体现在其内置的几个PL/SQL包上,如DBMS_XMLDOM、DBMS_XMLPARSER和DBMS_XMLQUERY。这些包为开发者提供了处理XML文档的一整套工具,使得在数据库环境中进行XML数据的...
Oracle 统计分析-dbms_stats.pdf Oracle 中的统计分析对于数据库的性能至关重要。dbms_stats 是 Oracle 提供的一个统计...7. dbms_stats 可以帮助开发者和 DBA 优化 SQL 语句的执行计划,提高数据库的性能和可靠性。
DBMS_STATS是Oracle提供的一款功能强大的工具包,主要用于收集表和索引的统计信息,进而帮助Oracle的Cost-Based Optimizer (CBO)生成更为高效的执行计划。通过准确的统计信息,可以有效地减少查询响应时间和提高系统...
通过阅读如“Oracle中的包――DBMS_LOB(一).pdf”、“ORACLE LOB大对象处理.pdf”和“DBMS_LOB包的使用.pdf”等资料,可以深入理解这些概念,并通过实践来熟练掌握。同时,“dbms_lob包学习笔记之二:append和...
标题中的问题“ORACLE SYS.DBMS_REGISTRY_SYS has errors”指的是在Oracle数据库系统中,系统包BODY `SYS.DBMS_REGISTRY_SYS` 出现错误,导致了一系列的PL/SQL调用失败。这种错误通常与数据库的元数据注册功能有关,...
描述虽然为空,但根据标题我们可以推测,这篇博文可能是关于如何使用DBMS_XPLAN包来解析和理解Oracle的执行计划,这对于数据库管理员和开发人员优化SQL性能至关重要。 标签“源码”和“工具”暗示了这篇博文可能...
在Oracle 7版本中,analyze语句被用来收集统计信息,但在Oracle 8.1.5引入DBMS_STATS后,Oracle开始推荐使用这个包,因为它提供了更高级的功能和控制。 DBMS_STATS的主要功能是分析表、索引和其他数据库对象,以...
DBMS_OBFUSCATION_TOOLKIT 包含了一系列用于加密和解密的方法: - **DESGETKEY**: 用于获取DES加密方式所需的密钥。 - **DES3GETKEY**: 用于获取TripleDES加密方式所需的密钥。 - **DESENCRYPT**: 采用DES算法进行...
本文将详细介绍如何利用`dbms_java`包来禁用和回收Java相关的权限,帮助读者更好地理解和掌握这一关键技能。 #### 二、dbms_java 包简介 `dbms_java`是Oracle提供的一个用于在数据库中运行Java代码的标准包。该包...
row_process := dbms_sql.EXECUTE(cursor_name); LOOP IF dbms_sql.fetch_rows(cursor_name) > 0 THEN dbms_sql.column_value(cursor_name, 2, v_b); dbms_output.put_line('B is ' || v_b); ELSE EXIT; ...
在Oracle数据库系统中,`DBMS_RANDOM`是一个非常实用的包,它提供了生成随机数和随机字符串的功能。这个包在各种场景下都有广泛的应用,比如在测试数据的生成、模拟随机行为或者创建伪随机数据时。我们将深入探讨`...
支持ArcGIS10.2版本的PostgreSQL_DBMS_for_windows_922,ESRI官方原版资源。
DBMS_LOCK是Oracle数据库系统中的一个内置包,用于在用户会话之间实现锁的管理,以确保并发操作的安全性和数据一致性。这篇博文深入探讨了DBMS_LOCK的功能、使用方法以及在实际应用中的重要性。 首先,我们要理解...
在Oracle数据库系统中,DBMS_SQL是一个非常重要的包,它提供了动态执行SQL语句的功能,这对于开发复杂的数据库应用或者需要在运行时构建SQL语句的情况非常有用。DBMS_SQL允许我们处理那些在编译时未知的SQL语句,极...
"orac_analyze"和"oracle_analyze_tab"可能是指Oracle中的DBMS_STATS包,这是一个PL/SQL包,提供了用于收集和管理统计信息的接口。DBMS_STATS包允许我们自定义分析的粒度,比如可以分析整个表,也可以分析表的部分...