oracle收集统计信息之analyze
oracle收集统计信息之analyze
1.analyze 收集表,索引的统计信息,现在oracle不推荐用analyze收集统计信息
收集表的统计信息Analyze table tablename compute statistics;
收集索引聚簇统计信息Analyze index|cluster indexname estimate statistics;
对于大表收集统计信息相当于全表扫描,耗费时间和资源,可以抽样估算法来搜集生成统计速度要快,如果不是要求要有精确数据的话,尽量采用抽样分析法。
nalyze table tablename estimate statistics sample 20 percent;
删除表的统计信息:
ANALYZE TABLE tablename DELETE STATISTICS
实验:
查询jobs表的统计信息以及最后一次统计时间
SQL> select TABLE_NAME,NUM_ROWS,BLOCKS,LAST_ANALYZED from user_tables where table_name='JOBS';
TABLE_NAME NUM_ROWS BLOCKS LAST_ANALYZED
------------------------------ ---------- ---------- --------------
JOBS 19 5 17-7月 -12
分析表jobs
SQL> analyze table jobs compute statistics;
表已分析。
可以看到jobs的最后一次统计时间变成了29-1月 -13
SQL> select TABLE_NAME,NUM_ROWS,BLOCKS,LAST_ANALYZED from user_tables where table_name='JOBS';
TABLE_NAME NUM_ROWS BLOCKS LAST_ANALYZED
------------------------------ ---------- ---------- --------------
JOBS 19 5 29-1月 -13
删除jobs表的统计信息
SQL> analyze table jobs delete statistics;
表已分析。
查看统计信息已经被删除了
SQL> select TABLE_NAME,NUM_ROWS,BLOCKS,LAST_ANALYZED from user_table where table_name='JOBS'
TABLE_NAME NUM_ROWS BLOCKS LAST_ANALYZED
------------------------------ ---------- ---------- --------------
JOBS
利用抽样收集jobs表的统计信息:
SQL> analyze table jobs estimate statistics sample 20 percent;
表已分析。
再次查看jobs表的统计信息,统计同样被收集:
SQL> select TABLE_NAME,NUM_ROWS,BLOCKS,LAST_ANALYZED from user_tables where table_name='JOBS';
TABLE_NAME NUM_ROWS BLOCKS LAST_ANALYZED
------------------------------ ---------- ---------- --------------
JOBS 19 5 29-1月 -13
SQL>
用analyze统计表的统计信息会是shared pool缓存的sql失效:
查询的sql
SQL> select count(*) from jobs;
COUNT(*)
----------
19
查看该sql在相关信息可以看到sql执行1次解析一次
SQL> select sql_text,sql_id,hash_value,executions exec,loads,invalidations inva
id from v$sqlarea where sql_text like '&text%';
输入 text 的值: select count
原值 1: select sql_text,sql_id,hash_value,executions exec,loads,invalidation
invalid from v$sqlarea where sql_text like '&text%'
新值 1: select sql_text,sql_id,hash_value,executions exec,loads,invalidation
invalid from v$sqlarea where sql_text like 'select count%'
SQL_TEXT SQL_ID HASH_VALUE EXEC LOADS
------------------------------ ------------- ---------- ---------- ----------
INVALID
----------
select count(*) from jab 8r5sp8cjcpqan 583719252 1 1
0
SQL>
再次分析表jobs
SQL> analyze table jobs compute statistics;
表已分析。
再次执行查询的sql并查看sql在v$sqlarea情况发现sql又被解析了一次,并失效一次这说明用analyze收集表的信息可以使shared pool相关对象的sql失效
SQL> select count(*) from jobs;
COUNT(*)
----------
19
SQL> select sql_text,sql_id,hash_value,executions exec,loads,invalidations inva
id from v$sqlarea where sql_text like '&text%';
输入 text 的值: select count
原值 1: select sql_text,sql_id,hash_value,executions exec,loads,invalidation
invalid from v$sqlarea where sql_text like '&text%'
新值 1: select sql_text,sql_id,hash_value,executions exec,loads,invalidation
invalid from v$sqlarea where sql_text like 'select count%'
SQL_TEXT SQL_ID HASH_VALUE EXEC LOADS
------------------------------ ------------- ---------- ---------- ----------
INVALID
----------
select count(*) from jobs 8r5sp8cjcpqan 583719252 1 2
1
oracle收集统计信息之analyze相关推荐
- oracle收集统计计划,oracle收集统计信息之analyze
oracle收集统计信息之analyze 1.analyze 收集表,索引的统计信息,现在oracle不推荐用analyze收集统计信息 收集表的统计信息Analyze table tablename ...
- Oracle收集统计信息
Oracle收集统计信息 优化器统计范围: 表统计: --行数,块数,行平均长度:all_tables:NUM_ROWS,BLOCKS,AVG_ROW_LEN: 列统计: --列中唯一值的数量(NDV ...
- Oracle收集统计信息之NO_INVALIDATE参数
Oracle收集统计信息之NO_INVALIDATE参数 Oracle统计量对于CBO执行是至关重要的.RBO是建立在数据结构的基础上的,DDL结构.约束会将SQL语句分为不同的成本结构等级.而CBO ...
- oracle收集统计信息sql,Oracle自动统计信息的收集原理及实验
从Oracle Database 10g开始,Oracle在建库后就默认创建了一个名为GATHER_STATS_JOB的定时任务,用于自动收集CBO的统计信息.这个自动任务默认情况下在工作日晚上10: ...
- 验证Oracle收集统计信息参数granularity数据分析的力度
最近在学习Oracle的统计信息这一块,收集统计信息的方法如下: DBMS_STATS.GATHER_TABLE_STATS ( ownname VARCHAR2, ---所有者名字 tabname ...
- oracle 收集统计信息会锁表吗,统计信息锁住导致收集统计信息失败引起sql执行异常...
这个是老生产谈的事情,统计信息不准确导致sql执行异常,此次记录的主要是表的统计信息被锁住导致无法正常收集统计信息导致sql执行异常: 收集表的统计信息: SQL> exec DBMS_STAT ...
- num_rows为NULL时,进行Oracle收集统计信息
对数据库进行导入导出或者数据发生变更,可能导致num_rows都为null,所以需要Oracle去收集统计信息,使得num_rows字段有数据 Oracle中的统计信息 使用DBMS_STATS.GA ...
- oracle收集统计信息和直方图,oracle统计信息和直方图
oracle统计信息和直方图的理解[@more@]以前一直对统计信息的理解就是对行的数据分布的,提供改CBO来选择高效的执行计划.这段时间看了不少资料,对统计有了一个更清晰的认识 统计信息: 1,表中 ...
- oracle并行收集统计信息慢,Oracle 学习之性能优化(四)收集统计信息
emp表有如下数据.SQL> select ename,deptno from emp; ENAME DEPTNO ------------------------------ ------ ...
最新文章
- OpenCV 笔记(02)— 图像显示、保存、腐蚀、模糊、canny 边缘检测(imread、imshow、namedWindow、imwrite)
- 将ssm项目和普通java项目打包
- 使用Spring Roo进行快速云开发–第2部分:VMware Cloud Foundry
- java hash=0报空指针_怎么报空指针异常错误?
- python 与别的程序通信_《Python》进程之间的通信(IPC)、进程之间的数据共享、进程池...
- 转:利用深度学习方法进行情感分析以及在海航舆情云平台的实践
- opencv copyto给图片加logo
- [FFmpeg] RGBA 和 YUV 存储方式
- java BitSet2
- linux怎样获得最好权限,详解2种Linux获得管理员权限方法
- php 数组排序方法,php数组排序的方法有哪些 - php完全自学手册 - php中文网手册...
- mysql触发器更新自己表_mysql 触发器更新自己表|单表操作 阿星小栈
- PS不能拖入图片进去
- oracle 与plc通信,cim系统(com系统和plc的通讯)
- 一般人不会的电脑小绝技(ZT)
- 痛心!中兴通讯子公司研发工程师跳楼坠亡...
- 科技交流英语(2022秋)Unit 6 test
- 清空mysql数据库(适用虚拟主机)
- python数字1 3怎么表示_Python3生成手写体数字方法
- Web server failed to start. Port 8082 was already in use.
热门文章
- 本科计算机专业sci好写吗,保研经验:本科发表4篇SCI,横扫北大、清华、中科大、中科院、浙大17个OFFER!...
- 视频转换成gif动图的方法步骤
- 计算机课件制作软件,浅谈计算机课件制作
- std::thread与pthread
- H3C官方模拟器HCL(H3C Cloud Lab)
- 安卓修改服务器数据库,安卓端使用服务器端数据库
- 记录|深度学习100例-卷积神经网络(CNN)彩色图片分类 | 第2天
- git命令--切换分支
- sql语句(基础篇)
- psycopg2连接PostgreSQL下的不同模式(SCHEMA)