Subject: Question on what Duration in the log

From: "Vitale, Anthony, Sony Music" <[email-masked]>
Date: Wed, 9 Apr 2025 14:27:08 +0000

Hello All

In my PG Version 14 log I have set to log the duration of sql (Example of one log row below).

2025-04-08 07:31:57 UTC:XXX(55994):XXX:[8949]:LOG:  duration: 6555.756 ms  execute S_381: {Actual Parameterized Sql executed}

This Shows the Execution of a JDBC Server Side Prepared statement (i.e S_381) which took 6.5 seconds.

When I run the Sql using explain analyze it runs shows an execution time of 73 ms

Planning Time: 0.773 ms
Execution Time: 73.578 ms

I am trying to understand the duration of 6.5 seconds and if it represents the time to execute the sql (Since the plan already exists)  itself or the full time needed to execute the sql as well as for the last row to be fetched by the program.

The result set of the query does return 50,000+ rows

Is there anywhere that explains what exactly the duration in the log represents.

Thanks
Anthony Vitale

---

From: Tom Lane <[email-masked]>
Date: Wed, 09 Apr 2025 11:02:04 -0400

> Execution Time: 73.578 ms

They're not measuring the same thing really, because EXPLAIN isn't
counting the time needed to transmit data to the client.

This is not just a matter of network overhead (though that can be
substantial) but also the time required to format the values into
text.  If you are talking about large values, which I bet you are,
there is also the time needed to fetch them from out-of-line TOAST
storage, which is another thing that doesn't happen in EXPLAIN.

Since v17, EXPLAIN has grown a SERIALIZE option that causes it to
do everything except the network transmission, which might be
of interest in analyzing this further.

			regards, tom lane

---

From: "Vitale, Anthony, Sony Music" <[email-masked]>
Date: Wed, 9 Apr 2025 15:47:32 +0000

Thanks Tom

Perfect.

Anthony Vitale
 
This message is only for the use of the persons(s) to whom it is intended. It may contain privileged and confidential information within the meaning of applicable law. If you are not the intended recipient, please do not use this information for any purpose, destroy this message and inform the sender immediately. The views expressed in this communication may not necessarily be the views held by Sony Music Entertainment

-----Original Message-----
From: Tom Lane <[email-masked]> 
Sent: Wednesday, April 9, 2025 11:02 AM
To: Vitale, Anthony, Sony Music <[email-masked]>
Cc: [email-masked]
Subject: Re: Question on what Duration in the log

EXTERNAL SENDER

"Vitale, Anthony, Sony Music" <[email-masked]> writes:
> 2025-04-08 07:31:57 UTC:XXX(55994):XXX:[8949]:LOG:  duration: 6555.756 
> ms  execute S_381: {Actual Parameterized Sql executed} This Shows the Execution of a JDBC Server Side Prepared statement (i.e S_381) which took 6.5 seconds.

> When I run the Sql using explain analyze it runs shows an execution 
> time of 73 ms Planning Time: 0.773 ms Execution Time: 73.578 ms

They're not measuring the same thing really, because EXPLAIN isn't counting the time needed to transmit data to the client.

This is not just a matter of network overhead (though that can be
substantial) but also the time required to format the values into text.  If you are talking about large values, which I bet you are, there is also the time needed to fetch them from out-of-line TOAST storage, which is another thing that doesn't happen in EXPLAIN.

Since v17, EXPLAIN has grown a SERIALIZE option that causes it to do everything except the network transmission, which might be of interest in analyzing this further.

                        regards, tom lane

This email originated from outside of Sony Music.  Do not click links or open attachments unless you recognize the sender and know the content is safe.