Re: Deleting takes days, should I add some index?

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: Alexander Farber <alexander(dot)farber(at)gmail(dot)com>
Cc: pgsql-general <pgsql-general(at)postgresql(dot)org>
Subject: Re: Deleting takes days, should I add some index?
Date: 2021-02-25 21:40:58
Message-ID: CAFj8pRDam1V=hz2=s3OjmbfvLABg9G10yc3T87zSSHS3PQpzow@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

čt 25. 2. 2021 v 22:33 odesílatel Alexander Farber <
alexander(dot)farber(at)gmail(dot)com> napsal:

> Thank you, Pavel!
>
> I didn't even think about trying to "explain analyze" deletion of just 1
> record -
>
> On Thu, Feb 25, 2021 at 10:04 PM Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
> wrote:
>
>> čt 25. 2. 2021 v 19:39 odesílatel Alexander Farber <
>>> alexander(dot)farber(at)gmail(dot)com> napsal:
>>>
>>>> The question is why does the command take days (when I tried last time):
>>>> delete from words_games where created < now() - interval '12 month';
>>>>
>>>>
>>> postgres=# explain analyze delete from words_games where gid = 44877;
>>>
>>> create index on words_scores(mid);
>>>
>>
> I have also added:
>
> create index on words_puzzles(mid);
>
> and then the result if finally good enough for my nightly cronjob:
>
> explain analyze delete from words_games where created < now() - interval
> '12 month';
> QUERY PLAN
>
>
> --------------------------------------------------------------------------------------------------------------------------
> Delete on words_games (cost=0.00..49802.33 rows=104022 width=6) (actual
> time=2121.475..2121.476 rows=0 loops=1)
> -> Seq Scan on words_games (cost=0.00..49802.33 rows=104022 width=6)
> (actual time=0.006..85.908 rows=103166 loops=1)
> Filter: (created < (now() - '1 year'::interval))
> Rows Removed by Filter: 126452
> Planning Time: 0.035 ms
> Trigger for constraint words_chat_gid_fkey on words_games: time=598.444
> calls=103166
> Trigger for constraint words_moves_gid_fkey on words_games:
> time=83745.244 calls=103166
> Trigger for constraint words_scores_gid_fkey on words_games:
> time=30638.420 calls=103166
> Trigger for constraint words_puzzles_mid_fkey on words_moves:
> time=15426.679 calls=3544242
> Trigger for constraint words_scores_mid_fkey on words_moves:
> time=18546.115 calls=3544242
> Execution Time: 151427.183 ms
> (11 rows)
>
> There is one detail I don't understand in the output of "explain analyze"
> - why do the lines
>
> "Trigger for constraint words_scores_mid_fkey on words_moves:
> time=1885.372 calls=4"
>
> completely disappear after adding the index? Are those the "ON DELETE
> CASCADE" triggers?
>

these triggers are RI triggers

>
> Aren't they called after the index has been added?
>

it should be called every time

Pavel

> Best regards
> Alex
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Alexander Farber 2021-02-25 21:54:01 Re: Deleting takes days, should I add some index?
Previous Message Alexander Farber 2021-02-25 21:33:17 Re: Deleting takes days, should I add some index?