为了正确的配置数据库的存储设备,必须了解数据库的性能需求。
数据库的io类型
1 IO请求主要是单个块还是多个块
数据库将发出多个IO请求:并行查询,查询大数据量的表扫描,直接数据装
载,备份恢复。一般来说,OLTP主要是单个IO请求,DSS数据仓库是多个IO请
求。
2 平均和峰值的IOPS是多少? 写占多少百分比 --可以通过v$sysstat及iostat查看;写占总的iops比率
3 平均和峰值的MBPS是多少?写占多少百分比。--平时与峰值,写占总的mbps比率
如果你的数据库IO请求主要是单个块,那就关注IOPS,
如果数据库IO请求主要是多个块,那就关注MBPS。
4,
也可以从awr报表中得到这些数据。
Instance Activity Stats DB/Inst: DBS108A/dbs108a Snaps: 8881-8882
-> Ordered by statistic name
Statistic Total per Second per Trans
-------------------------------- ------------------ -------------- -------------
...
physical read total IO requests 27,791 15.7 38.7 --每秒总的读iops
physical read total bytes 319,881,216 180,368.5 444,897.4 --每秒读的数据大小
physical read total multi block 115 0.1 0.2
...
physical write total IO requests 4,278 2.4 6.0 --同上
physical write total bytes 49,528,320 27,927.1 68,885.0
physical write total multi block 22 0.0 0.0
测试方法:
1,用压力测试工具比如orion或ipzone或其它工具,模拟数据库不同的io请求类型:
混合读写,纯随机读写,纯顺序读写;
2,查看上述不同io请求类型的iops及mbps(主要是平均及峰值,读写比率)
3,结合iostat的await平均io等待时间及%util io的使用率,可知不同磁盘(可能是1个或多个disk)的iops,平均io wait时间及io使用率
及mbps
4,测试存储的io性能就是用压力测试工具,一直把iostat的%util使用率接近100%,查看对应的峰值iops及平均io等待时间
这样就计算出来了存储的io性能;
用这个与oracle io(用awr或v$systat)对比oracle io与存储io,是否匹配,可能为:
存储io相当猛,够orace io用了
或者存储io不足,不够oracle io用了
这时最简单的解决方法:添加存储的磁盘
其次重新规划存储的raid
最后如不能扩展存储,修改oracle前台应用及调整oracle性能
5,通过db file sequential read可知单块读io的响应时间,用此值与iostat的svctm: 平均每次设备I/O操作的服务时间 (毫秒) 进行对
比,如果小于后者,说明存储没问题,去查ORACLE;否则说明存储IO不足了;就是存储有问题了
db file scattted read同上理,它是多块读的io响应时间
其它处理途径:
1,响应时间+IOPS 就说明了系统的当前io状况啊,响应时间在 10ms 左右能达到的最大iops 能力,
是系统io能力的一个最重要指标。
2,衡量系统io能力,我们也是关注的高峰期一段时间内稳定运行的状况
3,一个random IO的理论时间是:
7ms = 4-5ms(磁盘平均寻道时间)+ 2ms (传输时间) + 一些其它的消耗
如果不考虑file system cache hit(raw device/direct IO) 以及storage cache hit , 同时没
有磁盘竞争,那么,db file sequntial read的时间就会是 7ms左右.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-759017/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9240380/viewspace-759017/