EXPLAIN ANALYZE total runtime != walltime - Mailing list pgsql-general

From Jon Lapham
Subject EXPLAIN ANALYZE total runtime != walltime
Date
Msg-id 412D431F.2050908@jandr.org
Whole thread Raw
Responses Re: EXPLAIN ANALYZE total runtime != walltime
Re: EXPLAIN ANALYZE total runtime != walltime
List pgsql-general
I have been using the EXPLAIN ANALYZE command to debug some performance
bottlenecks in my database.  In doing so, I have found an oddity (to me
anyway).  The "19ms" total runtime reported below actually takes 25
seconds on my computer (no other CPU intensive processes running).  Is
this normal for EXPLAIN ANALYZE to report a total runtime so vastly
different from wall clock time?

During the "explain ANALYZE delete from msgid;" the CPU is pegged at
100% for the postmaster process, and the HD light only flashes
intermittently, so I do not think it is HD I/O.

I tossed in a "EXPLAIN ANALYZE VERBOSE" at the end of this email, in
case that helps anyone.

Thanks for any help!
-Jon

translator=> SELECT version();
                                                              version



---------------------------------------------------------------------------------------------------------------------------------
  PostgreSQL 7.4.2 on i386-redhat-linux-gnu, compiled by GCC
i386-redhat-linux-gcc (GCC) 3.3.3 20040216 (Red Hat Linux 3.3.3-2.1)
(1 row)

translator=> VACUUM ANALYZE ;
WARNING:  skipping "pg_shadow" --- only table or database owner can
vacuum it
WARNING:  skipping "pg_database" --- only table or database owner can
vacuum it
WARNING:  skipping "pg_group" --- only table or database owner can vacuum it
VACUUM
translator=> BEGIN ;
BEGIN
translator=> explain ANALYZE delete from msgid;
                                              QUERY PLAN

-----------------------------------------------------------------------------------------------------
  Seq Scan on msgid  (cost=0.00..23.81 rows=981 width=6) (actual
time=0.029..10.151 rows=981 loops=1)
  Total runtime: 19.755 ms
(2 rows)
translator=> \d msgid
                                Table "public.msgid"
   Column   |     Type      |                       Modifiers

-----------+---------------+-------------------------------------------------------
  id        | integer       | not null default
nextval('public.msgid_id_seq'::text)
  projectid | integer       | not null
  msgid     | text          | not null
  msgidmd5  | character(32) | not null
Indexes:
     "msgid_pkey" primary key, btree (id)
Foreign-key constraints:
     "$1" FOREIGN KEY (projectid) REFERENCES projects(id) ON DELETE CASCADE
translator=> rollback;
ROLLBACK
translator=> explain ANALYZE VERBOSE delete from msgid;
                                              QUERY PLAN

----------------------------------------------------------------------------------------------------
     {SEQSCAN
     :startup_cost 0.00
     :total_cost 23.81
     :plan_rows 981
     :plan_width 6
     :targetlist (
        {TARGETENTRY
        :resdom
           {RESDOM
           :resno 1
           :restype 27
           :restypmod -1
           :resname ctid
           :ressortgroupref 0
           :resorigtbl 0
           :resorigcol 0
           :resjunk true
           }
        :expr
           {VAR
           :varno 1
           :varattno -1
           :vartype 27
           :vartypmod -1
           :varlevelsup 0
           :varnoold 1
           :varoattno -1
           }
        }
     )

     :qual <>
     :lefttree <>
     :righttree <>
     :initPlan <>
     :extParam ()

     :allParam ()

     :nParamExec 0
     :scanrelid 1
     }

  Seq Scan on msgid  (cost=0.00..23.81 rows=981 width=6) (actual
time=0.031..6.444 rows=981 loops=1)
  Total runtime: 35.760 ms
(46 rows)


--
-**-*-*---*-*---*-*---*-----*-*-----*---*-*---*-----*-----*-*-----*---
  Jon Lapham  <lapham@jandr.org>                Rio de Janeiro, Brasil
  Personal: http://www.jandr.org/
***-*--*----*-------*------------*--------------------*---------------


pgsql-general by date:

Previous
From: Marco Colombo
Date:
Subject: Re: Question about SQL statement error
Next
From: Stephan Szabo
Date:
Subject: Re: EXPLAIN ANALYZE total runtime != walltime