statistics_level=ALL slows query 10x.

From: Josh Collier <Josh.Collier_at_banfield.net>
Date: Wed, 7 Mar 2012 17:59:31 +0000
Message-ID: <D0534F8D31056242BE8E38FA9413FDA817CB2317_at_M1EXCHMB13.mmi.local>



I have a database that when statistics_level=ALL is set, queries become 10x slower, spending all their time on CPU. I have run 10046 trace and verified that the plans are the same when I change this setting to TYPICAL. The reference query I have chosen is indicative of a set of batch queries that are all affected by this issue. I want to be able to use statistics_level=ALL periodically in production for performance diagnosis, this issue is making that impossible. The 10046 when statistics_level=TYPICAL shows lots of recursive sql. When statistics_level=ALL it show no recursive sql and all CPU time. Symptoms are the same when reference query is run serial or parallel. I have eyeballed the trace file and find no wait events emitted when the ALL query is on CPU.

What is the next thing to trace to find out where the time is being spent when statistics_level=ALL? RH linux 64 update 4
11.2.0.2.4

Strace for 10 minutes shows this output. Again it looks like the CPU usage is not being emitted: Process 28143 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------

97.75    1.866363         349      5348        pread
  1.72    0.032819          27      1207           readv
  0.36    0.006791           0     20728           write



Tkprof for STATISTICS_LEVEL=TYPICAL


OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse        4      0.02       0.02          3          5          0           0
Execute      4      0.08       4.61          0          0          0           0
Fetch        1    398.94     972.63    3546199    4425926          0           0

------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 9 399.05 977.26 3546202 4425931 0 0

Misses in library cache during parse: 1

Elapsed times include waiting on following events:

  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       6        0.00          0.00
  SQL*Net message from client                     6        0.00          0.00
  rdbms ipc reply                                 3        2.00          4.52
  db file sequential read                      2205        0.03          5.82
  asynch descriptor resize                        1        0.00          0.00
  Disk file operations I/O                       37        0.00          0.02
  db file scattered read                      98675        0.06        611.66


OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse       83      0.00       0.01          0          0          0           0
Execute   1661      0.17       0.18          2          2          0           0
Fetch     2101      0.14       0.37        353       5714          0        3074

------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 3845 0.33 0.57 355 5716 0 3074

Misses in library cache during parse: 38 Misses in library cache during execute: 36

Elapsed times include waiting on following events:

  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  db file sequential read                       333        0.01          0.22
  asynch descriptor resize                        1        0.00          0.00
  Disk file operations I/O                        7        0.00          0.00
  db file scattered read                          4        0.00          0.00

    4 user SQL statements in session.
   56 internal SQL statements in session.    60 SQL statements in session.



Trace file: DWPROD_ora_12351_GCStypical_10046.trc Trace file compatibility: 11.1.0.7
Sort options: default
       1  session in tracefile.
       4  user  SQL statements in trace file.
      56  internal SQL statements in trace file.
      60  SQL statements in trace file.
      42  unique SQL statements in trace file.
  128292  lines in trace file.
     977  elapsed seconds in trace file.
********************************************************************************



Tkprof for STATISTICS_LEVEL=ALL


OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse        2      0.00       0.00          0          0          0           0
Execute      2      0.00       0.00          0          0          0           0
Fetch        1   4338.84    4819.95    2766175    4425926          0           0

------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 5 4338.84 4819.95 2766175 4425926 0 0

Misses in library cache during parse: 0

Elapsed times include waiting on following events:

  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       4        0.00          0.00
  SQL*Net message from client                     4        0.00          0.00
  asynch descriptor resize                        1        0.00          0.00
  Disk file operations I/O                       36        0.00          0.02
  db file scattered read                      71464        0.11        511.30
  db file sequential read                      1870        0.03          5.52


OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS call count cpu elapsed disk query current rows
------- ------ -------- ---------- ---------- ---------- ---------- ----------

Parse        0      0.00       0.00          0          0          0           0
Execute      0      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0

------- ------ -------- ---------- ---------- ---------- ---------- ----------
total 0 0.00 0.00 0 0 0 0

Misses in library cache during parse: 0

    2 user SQL statements in session.
    0 internal SQL statements in session.     2 SQL statements in session.



Trace file: DWPROD_ora_6281_GCSALL_10046.trc Trace file compatibility: 11.1.0.7
Sort options: default
       1  session in tracefile.
       2  user  SQL statements in trace file.
       0  internal SQL statements in trace file.
       2  SQL statements in trace file.
       2  unique SQL statements in trace file.
   81957 lines in trace file.
    4819 elapsed seconds in trace file.

--

http://www.freelists.org/webpage/oracle-l Received on Wed Mar 07 2012 - 11:59:31 CST

Original text of this message