什么影响oracle io,oracle IO的影响因素有哪些?

oracle IO的影响因素有哪些?

数据库的IO能力,在很多时候会影响到查询的性能,尤其是FTS 的性能,所以对于oracle来说,这会影响到执行计划的选择。数据库中统计的 physical reads和 IO 不是一个概念,数据库中物理读统计的是 blocks ,而操作系统中是 io requests ,一次 request 可能是 128k/256k/1024k 等等数据,当然也可能是几十k 或者更少的,取决于数据库的要求。 io request 次数,简单点说是 table blocks / DB_FILE_MULTIBLOCK_READ_COUNT。

数据库的IO的次数和性能,实际上相关因素包括:

1: 不同 os + 硬件 ,每次IO 有一个极限值,比如hp unix 极限值 是 256k ,sun 的可能高达 1---8m ,若 DB_FILE_MULTIBLOCK_READ_COUNT* block_size > 这个极限值自然就被拆分为多于一个的 io request

2: 一次 io request 不能跨越 extent 边界,所以 extent 大小也影响 IO request

3:对于文件系统来说,连续的 block_id 并不意味着连续的 os block block,这会影响到读磁盘的效率。

4:对于 disk array 等设备类说,对于做了 raid 的设备来说,对于很多存储设备来说 , IO 在从 os 抵达这里的时候又重新做了优化重整的 ,还存在cache的,这样代价就不好评估了

5: 对于 AIO 来说,os 的读写请求被重整优化过,更复杂一些

下面做一个db_file_multiblock_read_count和extents边界影响IO的测试

windows下测试

SQL> drop table t;

表已丢弃。

SQL> create table t tablespace test as select * from dba_objects;

表已创建。

SQL> insert into t select * from t;

已创建6331行。

SQL> commit;

提交完成。

SQL> select file_id,extent_id,block_id,blocks from dba_extents where owner='TEST' and segment_name='

T';

FILE_ID EXTENT_ID BLOCK_ID BLOCKS

---------- ---------- ---------- ----------

4 0 9 32

4 1 41 32

4 2 73 32

4 3 105 32

4 4 137 32

SQL> alter session set db_file_multiblock_read_count=16;

会话已更改。

SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER,LEVEL 12';

会话已更改。

SQL>

SQL> select count(*) from t;

COUNT(*)

----------

12662

SQL> exit

从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.1.0 - Production中断开

trace

PARSING IN CURSOR #1 len=22 dep=0 uid=23 oct=3 lid=23 tim=136424432868 hv=2199322426 ad='7b3e0898'

select count(*) from t

END OF STMT

PARSE #1:c=0,e=21795,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=4,tim=136424432851

BINDS #1:

EXEC #1:c=0,e=4015,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=136424456603

WAIT #1: nam='SQL*Net message to client' ela= 11 p1=1111838976 p2=1 p3=0

WAIT #1: nam='db file scattered read' ela= 33200 p1=4 p2=10 p3=16

WAIT #1: nam='db file scattered read' ela= 21724 p1=4 p2=26 p3=15

WAIT #1: nam='db file scattered read' ela= 3197 p1=4 p2=41 p3=16

WAIT #1: nam='db file scattered read' ela= 11001 p1=4 p2=57 p3=16

WAIT #1: nam='db file scattered read' ela= 2687 p1=4 p2=73 p3=15

FETCH #1:c=40057,e=130616,p=78,cr=160,cu=0,mis=0,r=1,dep=0,og=4,tim=136424598085

SQL> drop table t;

表已丢弃。

SQL> create table t tablespace users as select * from dba_objects;

表已创建。

SQL> insert into t select * from t;

已创建6331行。

SQL> /

已创建12662行。

SQL> commit;

提交完成。

SQL> select file_id,extent_id,block_id,blocks from dba_extents where owner='TEST' and segment_name='

T';

FILE_ID EXTENT_ID BLOCK_ID BLOCKS

---------- ---------- ---------- ----------

3 0 33 8

3 1 73 8

3 2 81 8

3 3 89 8

3 4 169 8

3 5 177 8

3 6 185 8

3 7 193 8

3 8 201 8

3 9 209 8

3 10 217 8

FILE_ID EXTENT_ID BLOCK_ID BLOCKS

---------- ---------- ---------- ----------

3 11 225 8

3 12 233 8

3 13 241 8

3 14 249 8

3 15 257 8

3 16 12169 128

3 17 12297 128

已选择18行。

SQL> alter session set db_file_multiblock_read_count=20;

会话已更改。

SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER,LEVEL 12';

会话已更改。

SQL>

SQL> select count(*) from t;

COUNT(*)

----------

25324

SQL> exit

从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.1.0 - Production中断开

C:/>

PARSING IN CURSOR #1 len=22 dep=0 uid=23 oct=3 lid=23 tim=136872504466 hv=2199322426 ad='7b3e0898'

select count(*) from t

END OF STMT

PARSE #1:c=0,e=1159,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=4,tim=136872504449

BINDS #1:

EXEC #1:c=0,e=4618,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=136872527767

WAIT #1: nam='SQL*Net message to client' ela= 10 p1=1111838976 p2=1 p3=0

WAIT #1: nam='db file scattered read' ela= 27197 p1=3 p2=36 p3=5

WAIT #1: nam='db file scattered read' ela= 23246 p1=3 p2=73 p3=8

WAIT #1: nam='db file scattered read' ela= 1346 p1=3 p2=82 p3=7

WAIT #1: nam='db file scattered read' ela= 3372 p1=3 p2=89 p3=8

WAIT #1: nam='db file scattered read' ela= 17965 p1=3 p2=170 p3=7

WAIT #1: nam='db file scattered read' ela= 2460 p1=3 p2=177 p3=8

WAIT #1: nam='db file scattered read' ela= 1403 p1=3 p2=186 p3=7

WAIT #1: nam='db file scattered read' ela= 1759 p1=3 p2=193 p3=8

WAIT #1: nam='db file scattered read' ela= 1444 p1=3 p2=202 p3=7

WAIT #1: nam='db file scattered read' ela= 1454 p1=3 p2=209 p3=8

WAIT #1: nam='db file scattered read' ela= 1053 p1=3 p2=218 p3=5

由上面p1 file_id p2 block_id p3 blocks 可以看出IO次数和相关blocks

事实上一次IO除了和这个参数有关,还和extent有关,一次IO是不能越过extent的

连接到:

Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.1.0 - Production

SQL> insert into t select * from t;

已创建25324行。

SQL> commit;

提交完成。

SQL> select file_id,extent_id,block_id,blocks from dba_extents where owner='TEST' and segment_name

T';

FILE_ID EXTENT_ID BLOCK_ID BLOCKS

---------- ---------- ---------- ----------

3 0 33 8

3 1 73 8

3 2 81 8

3 3 89 8

3 4 169 8

3 5 177 8

3 6 185 8

3 7 193 8

3 8 201 8

3 9 209 8

3 10 217 8

FILE_ID EXTENT_ID BLOCK_ID BLOCKS

---------- ---------- ---------- ----------

3 11 225 8

3 12 233 8

3 13 241 8

3 14 249 8

3 15 257 8

3 16 12169 128

3 17 12297 128

3 18 12425 128

3 19 12553 128

已选择20行。

SQL> alter session set db_file_multiblock_read_count=20;

会话已更改。

SQL> ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER,LEVEL 12';

会话已更改。

SQL> select count(*) from t;

COUNT(*)

----------

50648

SQL> exit

从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production

With the Partitioning, OLAP and Oracle Data Mining options

JServer Release 9.2.0.1.0 - Production中断开

C:/>

=====================

PARSING IN CURSOR #1 len=22 dep=0 uid=23 oct=3 lid=23 tim=137237788846 hv=2199322426 ad='7b3e0898'

select count(*) from t

END OF STMT

PARSE #1:c=0,e=230,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=137237788829

BINDS #1:

EXEC #1:c=0,e=3961,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=4,tim=137237812525

WAIT #1: nam='SQL*Net message to client' ela= 10 p1=1111838976 p2=1 p3=0

WAIT #1: nam='db file scattered read' ela= 29105 p1=3 p2=36 p3=5

WAIT #1: nam='db file scattered read' ela= 23441 p1=3 p2=73 p3=8

WAIT #1: nam='db file scattered read' ela= 1372 p1=3 p2=82 p3=7

WAIT #1: nam='db file scattered read' ela= 1549 p1=3 p2=89 p3=8

WAIT #1: nam='db file scattered read' ela= 19690 p1=3 p2=170 p3=7

WAIT #1: nam='db file scattered read' ela= 2588 p1=3 p2=177 p3=8

WAIT #1: nam='db file scattered read' ela= 1428 p1=3 p2=186 p3=7

WAIT #1: nam='db file scattered read' ela= 1479 p1=3 p2=193 p3=8

WAIT #1: nam='db file scattered read' ela= 1357 p1=3 p2=202 p3=7

WAIT #1: nam='db file scattered read' ela= 1487 p1=3 p2=209 p3=8

WAIT #1: nam='db file scattered read' ela= 1021 p1=3 p2=218 p3=5

WAIT #1: nam='db file sequential read' ela= 362 p1=3 p2=224 p3=1

WAIT #1: nam='db file scattered read' ela= 1658 p1=3 p2=225 p3=8

WAIT #1: nam='db file scattered read' ela= 2126 p1=3 p2=234 p3=7

WAIT #1: nam='db file scattered read' ela= 1508 p1=3 p2=241 p3=8

WAIT #1: nam='db file scattered read' ela= 1450 p1=3 p2=250 p3=7

WAIT #1: nam='db file scattered read' ela= 1490 p1=3 p2=257 p3=8

WAIT #1: nam='db file scattered read' ela= 42288 p1=3 p2=12171 p3=20

WAIT #1: nam='db file scattered read' ela= 3893 p1=3 p2=12191 p3=20

WAIT #1: nam='db file scattered read' ela= 7199 p1=3 p2=12211 p3=20

WAIT #1: nam='db file scattered read' ela= 1477 p1=3 p2=12231 p3=8

FETCH #1:c=130188,e=279571,p=185,cr=722,cu=1,mis=0,r=1,dep=0,og=4,tim=137238099800

WAIT #1: nam='SQL*Net message from client' ela= 620 p1=1111838976 p2=1 p3=0

FETCH #1:c=0,e=7,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=0,tim=137238110581

本文地址:http://www.45fan.com/dnjc/72136.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值