Re: IO related waits - Mailing list pgsql-general

From veem v
Subject Re: IO related waits
Date
Msg-id CAB+=1TWhGgybtCdU7oR3oghhXG6vULUEkebG1DbT+bc1v7yp4w@mail.gmail.com
Whole thread Raw
In response to Re: IO related waits  (veem v <veema0000@gmail.com>)
Responses Re: IO related waits
List pgsql-general


On Thu, 19 Sept 2024 at 02:01, veem v <veema0000@gmail.com> wrote:

On Wed, 18 Sept 2024 at 05:07, Adrian Klaver <adrian.klaver@aklaver.com> wrote:
On 9/17/24 12:34, veem v wrote:
>

It does if autocommit is set in the client, that is common to other
databases also:

https://dev.mysql.com/doc/refman/8.4/en/commit.html

https://docs.oracle.com/en/database/oracle/developer-tools-for-vscode/getting-started/disabling-and-enabling-auto-commit.html

https://learn.microsoft.com/en-us/sql/t-sql/statements/set-implicit-transactions-transact-sql?view=sql-server-ver16

You probably need to take a closer look at the client/driver you are
using and the code that interacting with it.

In fact I would say you need to review the entire data transfer process
to see if there are performance gains that can be obtained without
adding an entirely new async component.



You were spot on. When we turned off the "auto commit" we started seeing less number of commits as per the number of batches. 

However we also started seeing deadlock issues. We have foreign key relationships between the tables and during the batch we do insert into the parent first and then to the child , but this does happen from multiple sessions for different batches. So why do we see below error, as we ensure in each batch we first insert into parent and then into the child tables?

caused by: org.postgresql.util.PSQLException: ERROR: deadlock detected
  Detail: Process 10443 waits for ShareLock on transaction 220972157; blocked by process 10454.
Process 10454 waits for ShareLock on transaction 220972155; blocked by process 10443.
  Hint: See server log for query details.
  Where: while inserting index tuple (88736,28) in relation "TAB1_p2024_08_29"

As we are able to get hold of one session, we see "insert into <parent partition table>" was blocked by "insert into <child partition table>". And the "insert into  <child partition table> " was experiencing a "client read" wait event. Still unable to understand why it's happening and how to fix it?

pgsql-general by date:

Previous
From: veem v
Date:
Subject: Re: IO related waits
Next
From: Adrian Klaver
Date:
Subject: Re: IO related waits