知识大全 测量磁盘I/O
Posted 数据库
篇首语:冲天香阵透长安,满城尽带黄金甲。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 测量磁盘I/O相关的知识,希望对你有一定的参考价值。
测量磁盘I/O 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
我怎样分离Oracle I/O 来使得性能最高? 我是否应该分离数据文件和索引文件? 我是否应该分离redo日志? 这些问题(并且还有更多的) 看起来似乎是对于数据库管理员来说的 它们在一般程度上很容易解答 但是在实际操作中可能是非常难以解决的 除非我们检查一下我们的磁盘子系统到底是怎样执行的 我们中的许多人可能立即就不读这篇文章了 对自己说这些问题和详细程度只是对于我们的系统管理员或那些控制磁盘管理的人来说的 我经常看到两种不同的方式来配置Oracle存储 第一种是当架构师要在一个存储数组中分离Oracle对象类型(数据 索引 重做 档案文件等等)时使用Oracle灵活架构(OFA Oracle s Flexible Architecture)方法 第二种方法是建立一个JBOD(Just a Bunch Of Disks 简单磁盘捆绑)配置并将所有东西都放到上面 这两种方法都缺乏能够最终形成协调的数据库系统的计划和配置 它们只是碰运气罢了 希望因为遵循了一个预先确定的方法从而一切进行顺利 但是 这些方法可能在你的环境里不起作用 不要依靠于你的系统管理员 因为他们自己可能都不知道怎么获取信息 而当他们这么做的时候通常是在更高的级别 因为他们也不能将这些信息与Oracle堆栈关联起来 所以数据库管理员必须开始从一个纯粹的I/O透视图来了解应用程序 将这个信息传递给存储管理员 然后一起开发一个配置或改变存储子系统的计划 这将用于应用程序混合 对于存储 OLTP环境的一个重要性能指示器是基于每秒I/O操作次数(IOPS)和延迟(I/O来回的时间) OLAP数据库是你的数据仓库或报表系统 并由移动大量的主要做只读的数据来分类 对于存储数组 一个OLAP环境的性能是基于兆比特位每秒(MBPS)的 一个数据库工作负载经常描述为它的应用程序混合 了解和将一个应用程序混合转化为一个数据库工作负载对于优化存储系统来说是非常重要的 一个OLTP数据库的工作负载是由小的随机I/O来分类的 而OLAP是由大型的连续或随机I/O来分类的 对于数据库管理员来说现在该看看你的数据库的内部了 你必须想办法获取某种形式的统计信息 使你可以在数据库级别分类SQL类型和I/O请求 例如Oracle只有很少的表允许提取这个信息 举例来说 我们可以查询gv$sysstat视图( 物理读取总的IO请求 —— 物理读取总的多块请求 )来获得系统中小量读取的次数 在一段时间内做这个操作 用结束时的值减去开始时的值 你就很快地获得了那段时间的小量读取的IOPS 必须对每一个可用的统计进行这个操作以了解你的数据库所请求的总的IOPS和MBPS 这些是你需要获得的相关统计信息 基本上 大量读写是用来计算MBPS的 而小量读写是用来进行IOPS计算的 gv$sysstat (name value) Total Reads : physical read total IO requests Total Writes: physical write total IO requests Large Reads : physical read total multi block requests Large Writes: physical write total multi block requests Total Bytes Read : physical read total bytes Total Bytes Written : physical write total bytes To calculate small reads: Small Reads = Total Reads Large Reads Small Writes = Total Writes Large Writes使用这些数据使我们可以考虑到我们目前的数据库性能和存储请求从而作出明智的决策 数据库可能正在被讨论而实际的I/O请求可能比最优情形下的要低 所以可能需要进行调整 但是 将这些IOPS和MBPS转给存储管理员去评估存储解决方案是否是正确的和是否需要重新配置是数据库管理员的责任 这些重新配置可能需要移动数据文件来使用更多的磁盘 添加更多的磁盘用于更高的吞吐量 或者降低应用程序的IOPS和MBPS 是的 我们再次回到了应用程序 我知道你了解要做什么 下面两个脚本使你可以开始了 我花费了很多时间来使它们变得容易使用 并提供给你信息 使你能够快速了解你的磁盘子系统在过去的时间里执行的怎么样
set echo off set feedback off set heading off set linesize set pagesize set verify off set termout off column rpt new_value rpt select instance_name|| _ ||to_char(sysdate YYYYMMDDHH MISS )|| _vsysstat_ioworkload LST rpt from v$instance; set termout on prompt prompt prompt ^^^^^^^^^^^^^ prompt Report Name : /LST/&&rpt prompt ^^^^^^^^^^^^^ spool /LST/&&rpt column sr new_value sr column sw new_value sw column lr new_value lr column lw new_value lw column tbr new_value tbr column tbw new_value tbw set termout off SELECT sum(decode(name physical read total IO requests value ) decode(name physical read total multi block requests value )) sr sum(decode(name physical write total IO requests value ) decode(name physical write total multi block requests value )) sw sum(decode(name physical read total multi block requests value )) lr sum(decode(name physical write total multi block requests value )) lw sum(decode(name physical read total bytes value )) tbr sum(decode(name physical write total bytes value )) tbw FROM v$sysstat; set termout on prompt prompt prompt ^^^^^^^^^^^^ prompt First Sample prompt ^^^^^^^^^^^^ prompt Number of Small Reads : &&sr prompt Number of Small Writes: &&sw prompt Number of Large Reads : &&lr prompt Number of Large Writes: &&lw prompt Total Bytes Read : &&tbr prompt Total Bytes Written : &&tbw prompt prompt prompt Enter the amount of time (in seconds) you would like this process to sleep for sampling data prompt ^^^^^^^^^^^^^^^^^^ prompt Sleep Time (secs): &&sleeptime prompt ^^^^^^^^^^^^^^^^^^ exec DBMS_LOCK SLEEP (&&sleeptime); column sr new_value sr column sw new_value sw column lr new_value lr column lw new_value lw column tbr new_value tbr column tbw new_value tbw set termout off SELECT sum(decode(name physical read total IO requests value ) decode(name physical read total multi block requests value )) sr sum(decode(name physical write total IO requests value ) decode(name physical write total multi block requests value )) sw sum(decode(name physical read total multi block requests value )) lr sum(decode(name physical write total multi block requests value )) lw sum(decode(name physical read total bytes value )) tbr sum(decode(name physical write total bytes value )) tbw FROM v$sysstat; set termout on prompt prompt prompt ^^^^^^^^^^^^^ prompt Second Sample prompt ^^^^^^^^^^^^^ prompt Number of Small Reads : &&sr prompt Number of Small Writes: &&sw prompt Number of Large Reads : &&lr prompt Number of Large Writes: &&lw prompt Total Bytes Read : &&tbr prompt Total Bytes Written : &&tbw prompt prompt prompt ^^^^^^^^^ prompt Results : prompt ^^^^^^^^^ column sri new_value sri column swi new_value swi column tsi new_value tsi column srp new_value srp column swp new_value swp column lri new_value lri column lwi new_value lwi column tli new_value tli column lrp new_value lrp column lwp new_value lwp column tr new_value tr column new_value column tm new_value tm SELECT ROUND((&&sr &&sr )/&&sleeptime ) sri ROUND((&&sw &&sw )/&&sleeptime ) swi ROUND(((&&sr &&sr )+(&&sw &&sw ))/&&sleeptime ) tsi ROUND((&&sr &&sr )/DECODE(((&&sr &&sr )+(&&sw &&sw )) ((&&sr &&sr )+(&&sw &&sw )))* ) srp ROUND((&&sw &&sw )/DECODE(((&&sr &&sr )+(&&sw &&sw )) ((&&sr &&sr )+(&&sw &&sw )))* ) swp ROUND((&&lr &&lr )/&&sleeptime ) lri ROUND((&&lw &&lw )/&&sleeptime ) lwi ROUND(((&&lr &&lr )+(&&lw &&lw ))/&&sleeptime ) tli ROUND((&&lr &&lr )/DECODE(((&&lr &&lr )+(&&lw &&lw )) ((&&lr &&lr )+(&&lw &&lw )))* ) lrp ROUND((&&lw &&lw )/DECODE(((&&lr &&lr )+(&&lw &&lw )) ((&&lr &&lr )+(&&lw &&lw )))* ) lwp ROUND(((&&tbr &&tbr )/&&sleeptime)/ ) tr ROUND(((&&tbw &&tbw )/&&sleeptime)/ ) ROUND((((&&tbr &&tbr )+(&&tbw &&tbw ))/&&sleeptime)/ ) tm FROM dual; SELECT Small Read IOPS = ||ROUND((&&sr &&sr )/&&sleeptime )|| IOPS Small Write IOPS = ||ROUND((&&sw &&sw )/&&sleeptime )|| IOPS Total Small IOPS = ||ROUND(((&&sr &&sr )+(&&sw &&sw ))/&&sleeptime )|| IOPS Small Read I/O % = ||ROUND((&&sr &&sr )/DECODE(((&&sr &&sr )+(&&sw &&sw )) ((&&sr &&sr )+(&&sw &&sw )))* )|| % Small Write I/O % = ||ROUND((&&sw &&sw )/DECODE(((&&sr &&sr )+(&&sw &&sw )) ((&&sr &&sr )+(&&sw &&sw )))* )|| % Large Read IOPS = ||ROUND((&&lr &&lr )/&&sleeptime )|| IOPS Large Write IOPS = ||ROUND((&&lw &&lw )/&&sleeptime )|| IOPS Total Large IOPS = ||ROUND(((&&lr &&lr )+(&&lw &&lw ))/&&sleeptime )|| IOPS Large Read I/O % = ||ROUND((&&lr &&lr )/DECODE(((&&lr &&lr )+(&&lw &&lw )) ((&&lr &&lr )+(&&lw &&lw )))* )|| % Large Write I/O % = ||ROUND((&&lw &&lw )/DECODE(((&&lr &&lr )+(&&lw &&lw )) ((&&lr &&lr )+(&&lw &&lw )))* )|| % Total Read = ||ROUND(((&&tbr &&tbr )/&&sleeptime)/ )|| MBPS Total Written = ||ROUND(((&&tbw &&tbw )/&&sleeptime)/ )|| MBPS Total MBPS = ||ROUND((((&&tbr &&tbr )+(&&tbw &&tbw ))/&&sleeptime)/ )|| MBPS FROM dual ; prompt Small Read IOPS = &&sri IOPS prompt Small Write IOPS = &&swi IOPS prompt Total Small IOPS = &&tsi IOPS prompt Small Read I/O % = &&srp % prompt Small Write I/O % = &&swp % prompt Large Read IOPS = &&lri IOPS prompt Large Write IOPS = &&lwi IOPS prompt Total Large IOPS = &&tli IOPS prompt Large Read I/O % = &&lrp % prompt Large Write I/O % = &&lwp % prompt Total Read = &&tr MBPS prompt Total Written = && MBPS prompt Total MBPS = &&tm MBPS spool off undefine sleeptime
cha138/Article/program/Oracle/201311/17361相关参考
利用Oracle分区表来减少磁盘I/O冲突 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 现在某
I/O工艺介质上流量压力温度等测点作业的危险点和控制措施如下:步骤或活动:测量装置拆接线或接线检查危险点工具不合格(伤害类型:其他伤害)控制措施1、用工具前应进行检查,不完整的工具不准使用。危险点误碰
I/O工艺介质上流量压力温度等测点作业的危险点和控制措施如下:步骤或活动:测量装置拆接线或接线检查危险点工具不合格(伤害类型:其他伤害)控制措施1、用工具前应进行检查,不完整的工具不准使用。危险点误碰
MySQL数据库优化(七) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为了能最小化磁盘I/O
Java网络编程从入门到精通(31):非阻塞I/O简介 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
分析JavaI/O的工作机制 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 网络I/O优化 网
调整JavaTMI/O性能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 调整JavaTMI/O
Java网络编程从入门到精通(32):一个非阻塞I/O的例子 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看
I/O柜端子排拆线接线作业的危险点和控制措施如下:步骤或活动:I/O柜端子拆、接线危险点工具不合格或使用不当(伤害类型:触电)控制措施1、使用工具前应进行检查,不完整的工具不准使用。2、认真检查仪器仪
I/O柜端子排拆线接线作业的危险点和控制措施如下:步骤或活动:I/O柜端子拆、接线危险点工具不合格或使用不当(伤害类型:触电)控制措施1、使用工具前应进行检查,不完整的工具不准使用。2、认真检查仪器仪