暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle数据库 | 缓存命中率实例(福利赠书)

863

作为一个DBA,监控各种内存的命中率是其职责之一。


01

案例分析


步骤1:查询与缓存命中率相关的3个参数,其代码如下:


SQL> col name for a40
SQL> select statistic#, name,value
  2   from v$sysstat
  3   where name in ('physical reads','db block gets','consistent gets');

STATISTIC# NAME VALUE
---------- ---------------------------------------- -------------
       159 db block gets 89999
       163 consistent gets 743277
       172 physical reads 21243


步骤2:利用公式计算缓存命中率,其代码如下


SQL> select a.value + b.value - c.value "logical_reads", c.value "phys_reads",
  2   100*((a.value + b.value) -c.value)/(a.value + b.value) " buffer hit ratI/O"
  3    from v$sysstat a, v$sysstat b, v$sysstat c
  4    where a.statistic#=159 and b.statistic#=163 and c.statistic#=172;

logical_reads phys_reads buffer hit ratI/O
------------- ---------- -----------------
       812105      21246         97.450534


步骤3:进行查询,结束后观察3个参数的变化,其代码如下


SQL> select * from hr.employees;

已选择 107 行。

SQL> select a.value + b.value - c.value "logical_reads", c.value "phys_reads",
  2  100*((a.value + b.value) -c.value)/(a.value + b.value) " buffer hit ratI/O"
  3  from v$sysstat a, v$sysstat b, v$sysstat c
  4  where a.statistic#=63 and b.statistic#=67 and c.statistic#=72;

logical_reads phys_reads buffer hit ratI/O
------------- ---------- -----------------
   1165458361          0               100


步骤4:第二次执行该查询,观察参数变化,其代码如下


SQL> select * from hr.employees;

已选择 107 行。

SQL> select a.value + b.value - c.value "logical_reads", c.value "phys_reads",
  2  100*((a.value + b.value) -c.value)/(a.value + b.value) " buffer hit ratI/O"
  3  from v$sysstat a, v$sysstat b, v$sysstat c
  4  where a.statistic#=63 and b.statistic#=67 and c.statistic#=72;

logical_reads phys_reads buffer hit ratI/O
------------- ---------- -----------------
   1165458361          0               100


可以看到,物理读次数没有发生变化,这是因为第三次执行该查询,所有数据都在内存中,不需要从外存中读取数据,即不需要物理读,因此物理读次数没变化,而逻辑度增加了多次,所以命中率又有所提高。

理论上反复执行该语句,命中率可以达到100%。

步骤5:作为一个DBA,监控各种内存的命中率是其职责之一。根据经验,要想保持Oracle服务器具有较高的性能,数据库块缓存的命中率应该大于90%,共享池库缓存命中率应该大于99%,共享池中字典缓存命中率应该大于85%。

共享池中库缓存应大于0.99,其代码如下


SQL> select sum(pins-reloads)/sum(pins) from v$librarycache;

SUM(PINS-RELOADS)/SUM(PINS)
---------------------------
                 .994198223


共享池中字典缓存应大于0.85,其代码如下


SQL> select sum(gets-getmisses-usage-fixed)/sum(gets) from v$rowcache;

SUM(GETS-GETMISSES-USAGE-FIXED)/SUM(GETS)
-----------------------------------------
                               .955618225



02

参考书籍


Oracle数据库系统管理与运维-微课视频版

ISBN:9787302566106

作者:张立杰 主编 陈恒 陶永鹏 副主编

定价:69.9元

本书从Oracle数据库系统、管理以及运维的角度深入浅出地加以介绍,对于Oracle初学者以及Oracle相关从业人员都是适用的。本书的所有例题以及实验都是在最新的Oracle 19c版本下运行实验的。


内容简介


全书共15个章节,包括Oracle系统、管理以及运维相关知识,内容包括oracle体系结构、数据库实例、存储结构、数据字典与动态性能视图、Oracle监控、数据库备份、数据库恢复、闪回技术以及数据库优化等;包括20个完整的项目案例。书中案例侧重应用性、趣味性强、分布合理、通俗易懂,使读者能够快速掌握Oracle系统、管理以及运维方面的的基础知识、方法、工具以及技巧。



作者简介



张立杰

张立杰,硕士,副教授。研究方向为数据库、大数据。在各级学术期刊上发表论文10余篇,其中EI检索论文3篇,SCI检索论文1篇,计算机中文核心论文2篇。主持并完成省级项目3项;大连外国语大学校级教改项目4项、科研项目1项、校级开放课程一门。主编相关教材3部。从事Oracle专业教学十多年,为企事业员工,校企合作组织进行多次Oracle培训与讲座;受聘于Oracle Academy进行全球教师培训。


教学资源


本书附有教学视频、课件、教学大纲、电子教案、教学日历、习题答案、案例源码等配套资源,可以作为大学计算机及相关专业的教材,也可以作为Oracle技术的培训教材。



福利赠书


活动方式:

【1】扫描下方抽奖二维码。

【2】若中奖,请于两天内填写地址,过期无效;奖品将在中奖后一周内统一安排寄送



扫码优惠购书



03

精彩推荐




文章转载自清华计算机学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论