忽然想到了测试数据库的真实IO能力,虽然硬件工程师有套方法测试IOPS ,虽然Oracle也推出了ORAXXX的测试小工具. 实际应用环境中 因为表空间,表的设置,块的大小等因素影响到IOPS. 比如想一个全表扫描,需要多久才能出来呢? 分别在工作负责空闲情况下,高的情况下,并行的情况下.
做公司的研发数据库上做了相应的实验,就在空闲情况下得到的时间不太有效.
比如一个表有1万个块,每个块8K 得到公司的IO能力 每秒285M; 36480块. 总觉得 ALTER SYSTEM FLUSH BUFFER_CACHE 和 SHARED_POOL 清空内存总是无效样.
在家里做相应的实验启动了作用.
用一个384个块的表 SELET COUNT(*) FROM T_TEST
FLUSH BUFFER_CACHE 和 SHARED_POOL 波动范围 0.329 ,0.297 0.266 秒
flush shared_pool; --0.187
flush buffer_cache; --0.172 0.156 秒
那么IO能力是: 384/0.172*8/1024=17.44M
使用并行提示 /*+parallel(t,4)*/ /*+parallel(t,3)*/ /*+parallel(t,2)*/
分别得到时间: 0.64 0.375 0.296 看来单CPU的并行能力很耗时间的.
内存读是多少了. 只要重复执行下就便晓得了 而得到时间是 0.031和0.015
内存IO: 96.77M和200M