SQLPLUS中autotrace traceonly stat统计信息解读
DB Block Gets(当前请求的块数目)当前模式块意思就是在操作中正好提取的块数目,而不是在一致性读的情况下而产生的块数。正常的
BYS@bys1>set arraysize 200
BYS@bys1>set autotrace traceonly stat
BYS@bys1>select * from test2 order by 3;
72465 rows selected.
Elapsed: 00:00:00.57
Statistics
----------------------------------------------------------
1 recursive calls
0 db block gets
1037 consistent gets
0 physical reads
0 redo size
2909118 bytes sent via SQL*Net to client
4401 bytes received via SQL*Net from client
364 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
72465 rows processed
recursive calls 递归调用,在用户和系统级的递归调用。Oracle数据库维护用于内部处理的表。当Oracle数据库需要作出这些表的变化,它在内部产生一个内部SQL语句,这反过来又产生一个递归调用。
db block gets
在当前读模式下所读的块数,比较少和特殊,是非一致性读。例如数据字典数据获取,在DML中,更改或删除数据是要用到当前读模式。通过update/delete/select for update读的次数
consistent gets 一致性读,在一致读模式下所读的快数,包括从回滚段读的快数。
physical reads
物理读,从磁盘读取数据块总数。这个数字等于“物理直接读取”的价值,加上所有读取到缓冲区高速缓存。
redo size redo字节产生的总量
bytes sent via SQL*Net to client 通过SQL*Net发送到客户端的字节数
bytes received via SQL*Net from client 通过SQL*Net收到的从客户端发送的字节数
SQL*Net roundtrips to/from client SQL*Net发送和从客户端接收往返总数
sorts (memory) 排序操作的数量完全在内存中进行的,并没有要求任何磁盘写入
sorts (disk) 排序操作的数量,需要至少一个磁盘写入
rows processed 在操作过程中处理的行数
1、DB Block Gets(当前请求的块数目)当前模式块意思就是在操作中正好提取的块数目,而不是在一致性读的情况下而产生的块数。
正常的情况下,,一个查询提取的块是在查询开始的那个时间点上存在的数据块,当前块是在这个时刻存在的数据块,而不是在这个时间点之前或者之后的数据块数目。
2、Consistent Gets(数据请求总数在回滚段Buffer中的数据一致性读所需要的数据块)这里的概念是在处理你这个操作的时候需要在一致性读状态上处理多少个块,这些块产生的主要原因是因为由于在你查询的过程中,由于其他会话对数据块进行操 作,而对所要查询的块有了修改,但是由于我们的查询是在这些修改之前调用的,所以需要对回滚段中的数据块的前映像进行查询,以保证数据的一致性。这样就产 生了一致性读。
3、Physical Reads(物理读)就是从磁盘上读取数据块的数量,其产生的主要原因是: 1、 在数据库高速缓存中不存在这些块 2、 全表扫描 3、 磁盘排序
它们三者之间的关系大致可概括为:逻辑读指的是Oracle从内存读到的数据块数量。一般来说是LOGIC IO(逻辑读次数)= 'consistent gets' + 'db block gets'
当在内存中找不到所需的数据块的话就需要从磁盘中获取,于是就产生了'phsical reads'。
相关阅读:
rlwrap - 解决Linux下SQLPLUS退格、上翻键乱码问题
SQLPLUS spool 到动态日志文件名
Oracle SQLPLUS提示符设置
通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度