一次调整arraysize减少逻辑读

该参数只能在当前会话设置。不是oracle端设置的,而是sqlplus设置的,所以我们不能使用设置初始化参数alter system set来改变它,
而是使用set命令,该参数的含义就是sqlplus里预抓取的行数,默认值是15行,也就是服务器进程每次从buffer cache中复制15行到PGA中,从PGA
在发送给客户端。与之相关的另一个参数就是SDU(session data unit),预抓取在PGA所占的内存大小和SDU大小相关,默认是8K.
SQL> show arraysize         
arraysize 15

SQL> create table jason as select * from dba_objects;

Table created.

SQL> 
SQL> 
SQL> select count(1) from dba_objects;

  COUNT(1)
———-
     50042

SQL> 
SQL> 
SQL> set autot trace
SQL> 
SQL> 
SQL> 
SQL> select * from jason;

50042 rows selected.

Execution Plan
———————————————————-
Plan hash value: 1258222954

—————————————————————————
| Id  | Operation         | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
—————————————————————————
|   0 | SELECT STATEMENT  |       | 44426 |  7679K|   155   (2)| 00:00:02 |
|   1 |  TABLE ACCESS FULL| JASON | 44426 |  7679K|   155   (2)| 00:00:02 |
—————————————————————————

Note
—–
   – dynamic sampling used for this statement

Statistics
———————————————————-
          0  recursive calls
          0  db block gets
       3992  consistent gets
          0  physical reads
          0  redo size
    2544199  bytes sent via SQL*Net to client
      37188  bytes received via SQL*Net from client
       3338  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      50042  rows processed

SQL> set arraysize 400
SQL> 
SQL> 
SQL> 
SQL> /

SQL> /

50042 rows selected.

Execution Plan
———————————————————-
Plan hash value: 1258222954

—————————————————————————
| Id  | Operation         | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
—————————————————————————
|   0 | SELECT STATEMENT  |       | 44426 |  7679K|   155   (2)| 00:00:02 |
|   1 |  TABLE ACCESS FULL| JASON | 44426 |  7679K|   155   (2)| 00:00:02 |
—————————————————————————

Note
—–
   – dynamic sampling used for this statement

Statistics
———————————————————-
          0  recursive calls
          0  db block gets
        817  consistent gets
          0  physical reads
          0  redo size
    1956586  bytes sent via SQL*Net to client
       1867  bytes received via SQL*Net from client
        127  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
      50042  rows processed

可以看到当我们把arraysize从默认的15调整到400后consistent gets逻辑读从原来的3992下降到817,bytes received via SQL*Net from client相关的值也有明显的下降。
arraysize参数的设置对大数据的范围比如全表扫性能提高还是比较大的,所以在网络带宽允许的情况下适当调大arraysize和估算SDU的值,对减少
逻辑读,减少网络交互性,从而介绍CPU的消耗帮助还是比较大的。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23732248/viewspace-2285222/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23732248/viewspace-2285222/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值