Query is taking too long i intermittent

From: Mayank Kandari <mayank(dot)kandari(at)gmail(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Query is taking too long i intermittent
Date: 2022-06-06 09:58:43
Message-ID: CAArYVwgjwhsm8opP5gNt7e189=zvdw0VHSx2Uaq9X5pna+2_Nw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

0
<https://stackoverflow.com/posts/72515636/timeline>

I am using libpq to connect the Postgres server in c++ code. Postgres
server version is 12.10

My table schema is defined below

Column | Type | Collation | Nullable | Default |
Storage | Stats target | Description
---------------------+----------+-----------+----------+------------+----------+--------------+-------------
event_id | bigint | | not null | |
plain | |
event_sec | integer | | not null | |
plain | |
event_usec | integer | | not null | |
plain | |
event_op | smallint | | not null | |
plain | |
rd | bigint | | not null | |
plain | |
addr | bigint | | not null | |
plain | |
masklen | bigint | | not null | |
plain | |
path_id | bigint | | | |
plain | |
attribs_tbl_last_id | bigint | | not null | |
plain | |
attribs_tbl_next_id | bigint | | not null | |
plain | |
bgp_id | bigint | | not null | |
plain | |
last_lbl_stk | bytea | | not null | |
extended | |
next_lbl_stk | bytea | | not null | |
extended | |
last_state | smallint | | | |
plain | |
next_state | smallint | | | |
plain | |
pkey | integer | | not null | 1654449420 |
plain | | Partition key: LIST (pkey)
Indexes:
"event_pkey" PRIMARY KEY, btree (event_id, pkey)
"event_event_sec_event_usec_idx" btree (event_sec, event_usec)
Partitions: event_spl_1651768781 FOR VALUES IN (1651768781),
event_spl_1652029140 FOR VALUES IN (1652029140),
event_spl_1652633760 FOR VALUES IN (1652633760),
event_spl_1653372439 FOR VALUES IN (1653372439),
event_spl_1653786420 FOR VALUES IN (1653786420),
event_spl_1654449420 FOR VALUES IN (1654449420)

When I execute the following query it takes 1 - 2 milliseconds to execute.
Time is provided as a parameter to function executing this query, it
contains epoche seconds and microseconds.

SELECT event_id FROM event WHERE (event_sec > time.seconds) OR
((event_sec=time.seconds) AND (event_usec>=time.useconds) ORDER BY
event_sec, event_usec LIMIT 1

This query is executed every 30 seconds on the same client connection
(Which is persistent for weeks). This process runs for weeks, but some time
same query starts taking more than 10 minutes. Once it takes 10 minutes,
after that every execution takes > 10 minutes.

If I restart the process it recreated connection with the server and now
execution time again falls back to 1-2 milliseconds. This issue is
intermittent, sometimes it triggers after a week of the running process and
sometime after 2 - 3 weeks of the running process.

We add a new partition to the table every Sunday and write new data in the
new partition.

--
regards
Mayank Kandari

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Justin Pryzby 2022-06-06 10:35:04 Re: Query is taking too long i intermittent
Previous Message Jeff Janes 2022-06-02 03:33:33 Re: rows selectivity overestimate for @> operator for arrays