Oracle的设置逻辑ArraySize个阅读的影响实例分析
每次打电话,数据库和从电路数量一定程度上会影响客户之间的总响应时间,除了数据提取(提取)的程序,剩下的步骤(解析、绑定和执行)是只执行一次,它是必要的,Oracle需要的所有数据查询结果进行多萃取操作。
在萃取操作的机制,一个接电话会访问一个或多个缓冲区高速缓存中的数据块,当访问一个数据块的块,Oracle将删除的数据行,然后返回到客户端的一环,这里一个返回行数Arraysize(大小),Arraysize显示了一个可能的提取运行在传输网络中的数据行数环。
我们可以知道对于读arraysize ArraySize个基本逻辑机制,如果在改进arraysize大小的应用程序,相比前一集,每一块中的行对应相同数量的行数得到提高的数据,病例数,访问数据块自然减少,逻辑阅读相应减小;实际情况也是如此。
看看当前的arraysize
SQL >显示arraysize
Arraysize 15
SQL >集AutoTrace traceonly统计
SQL SELECT * FROM dba_objects >;
选择72457行。
统计
----------------------------------------------------------
0递归调用
0分贝块得到
7675一致的获取
5物理读
0重做日志大小
3463453个字节通过网络发送给客户机
从客户端接收的53549个字节
4832 SQL*Net切换到/从客户端
0类(内存)
0类(磁盘)
72457行处理
集arraysize 50
SQL >设置arraysize 50
SQL
选择72457行。
统计
----------------------------------------------------------
15递归调用
0分贝块得到
3618一致的获取
0物理读
0 redo size
3034066个字节通过网络发送给客户机
从客户端接收的16358个字节
1451 SQL*Net切换到/从客户端
0类(内存)
0类(磁盘)
72457行处理
以上试验以SQL * Plus为例,选择dba_objects表的查询,并将SQL查询的结果是一样的。当arraysize值从15增加到50,我们看到一个非常明显的变化。
1。逻辑读取的数量大大减少,从7675到3618。
2个数字。网络往返时间从以前的4832次下降到只有1451次。
值得注意的是,这些变化是SQL语句本身无关,通过编程arraysize大小,使用SQL*Plus环境中设置arraysize命令在这个例子中,如果它是一个java应用程序,你可以设置connection.setdefaultrowprefetch(N)来实现。