我正在我的数据库中运行一个简单的select语句(使用putty从远程计算机连接)。我从putty连接到SQLPLUS,并执行select语句。但是每次运行查询时都会得到不同的响应时间。这是我的观察结果。
1)启用跟踪(10046)。对于每次查询的执行,跟踪文件中的"elapsed_time“是不同的。
2)控制台上显示的时间与跟踪文件中显示的时间有很大的差异。从Putty看,经过的时间大约是。2-3秒。而记录在跟踪中的经过时间显示的时间是1秒.putty控制台上经过的时间与跟踪文件日志之间有什么不同?
Putty控制台输出:
从WWSH_TEST.T01DATA_LINK中选择*
选择了489043行。
经过:00:02:57.16
Tracefile输出:
从WWSH_TEST.T01DATA_LINK中选择*
call count cpu elapsed disk query current rows
---- ------- ------- --------- -------- -------- ------- ------
Parse 1 0.00 0.00 0 0 0 0
Execute 1 0.00 0.00 0 0 0 0
Fetch 32604 0.38 2.32 10706 42576 0 489043在putty控制台上,经过的时间显示为2.57秒,而在跟踪文件中,经过的时间是2.32秒。为什么我们会看到这种差异?
此外,当我重复运行同一SQL语句时,可以在跟踪文件中看到不同的运行时间(范围从2.3到2.5秒)。当数据库完全没有变化时,响应时间的差异可能是什么原因呢?
数据库版本: 11.2.0.3.0
发布于 2018-11-26 04:38:11
看起来时间差是“客户端处理”--基本上是sqlplus格式化输出所花费的时间。而且,您的数组大小看起来是15。尝试使用更大的数组大小运行,例如512或1024。
设置数组大小的机制因客户端而异。以平方米为单位:
set arraysize 1024获取时间不包括网络时间,但如果使用8级跟踪
alter session set events '10046 trace name context forever, level 8';这将给你等待事件。需要查找的是来自客户端的SQL*Net消息,这基本上是数据库等待被要求执行某些操作的时间,例如获取下一组行。
https://stackoverflow.com/questions/53410756
复制相似问题