数据段中的数据最终在使用中会被用户访问,哪些表和索引会被频繁使用,哪些对象上存在频繁的逻辑读和物理读,这些信息对于性能优化具备极其重要的意义。Oracle数据库通过段级统计信息的收集来提供这方面的信息。
段级统计信息的收集和记录主要是通过以下几个动态性能视图实现的:V$SEGSTAT_NAME、V$SEGSTAT、V$SEGMENT_STATISTICS。
V$SEGSTAT_NAME视图记录了数据库收集段级统计信息的内容,在Oracle Database 10gR2中,以下信息会被不同程度的收集和采样:
SQL> select * from v$segstat_name; STATISTIC# NAME SAM ---------- ---------------------------------------------------------------- --- 0 logical reads YES 1 buffer busy waits NO 2 gc buffer busy NO 3 db block changes YES 4 physical reads NO 5 physical writes NO 6 physical reads direct NO 7 physical writes direct NO 9 gc cr blocks received NO 10 gc current blocks received NO 11 ITL waits NO 12 row lock waits NO 14 space used NO 15 space allocated NO 17 segment scans NO复制
在Oracle Database 11gR2中,可记录的段级信息增加了以下三种:
STATISTIC# NAME SAM ---------- ---------------------------------------------------------------- --- 6 physical read requests NO 7 physical write requests NO 11 optimized physical reads NO复制
V$SEGMENT_STATISTICS包含了这些统计指标的采样,通过查询其中的信息,可以帮助我们找到哪些对象的物理读、逻辑读偏高等重要内容:
SQL> DESC V$SEGMENT_STATISTICS Name Null? Type ----------------------------------------- -------- ---------------------------- OWNER VARCHAR2(30) OBJECT_NAME VARCHAR2(30) SUBOBJECT_NAME VARCHAR2(30) TABLESPACE_NAME VARCHAR2(30) TS# NUMBER OBJ# NUMBER DATAOBJ# NUMBER OBJECT_TYPE VARCHAR2(18) STATISTIC_NAME VARCHAR2(64) STATISTIC# NUMBER VALUE NUMBER复制
例如如下一条SQL可以帮助我们找到当前数据库中逻辑读最高的10个对象:
SQL> select * 2 from (select object_name, statistic_name, value 3 from V$SEGMENT_STATISTICS 4 where statistic_name = 'logical reads' 5 order by 3 desc) 6 where rownum < 11; OBJECT_NAME STATISTIC_NAME VALUE ------------------------------ ---------------------------------------- ---------- TOVERDUEDETAIL_PK logical reads 679489664 TMONTHOVERDUE_PRIMARYKEY logical reads 519297536 TLASTYE_PK logical reads 451140976 TOVERDUEDETAIL logical reads 345610752 TMONTHOVERDUE logical reads 274533968 RATIFYTASK logical reads 232831952 TLASTOVERDUE_PK logical reads 211762720 SYS_LOB0000056381C00085$$ logical reads 176265312 TLASTYE logical reads 154691600 CCODE logical reads 145472848复制
这部分内容在AWR报告中更为详细的展现出来(关于AWR的详细内容请参考后面章节),以下是Oracle Database 11g中生成的AWR报告展示的段级统计信息内容:
我们就可以据此分析数据库中是否有部分对象的访问过于集中,等待过于频繁,例如对于ITL等待较高的对象,则可以考虑为其增加更多的事务槽,以下是一个AWR报告段级信息摘录,这部分信息对于性能分析诊断极其重要:
上图逻辑读最高的三个对象已经占有了系统整体逻辑读的45%左右,是值得分析和注意的。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
546次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
462次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
443次阅读
2025-04-01 11:08:44
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
440次阅读
2025-04-08 09:12:48
墨天轮个人数说知识点合集
JiekeXu
439次阅读
2025-04-01 15:56:03
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
437次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
412次阅读
2025-04-22 00:13:51
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
407次阅读
2025-04-20 10:07:02
Oracle 19c RAC更换IP实战,运维必看!
szrsu
392次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
353次阅读
2025-04-17 17:02:24