Re: ***SPAM*** Re: Help with large delete

Поиск
Список
Период
Сортировка
От Perry Smith
Тема Re: ***SPAM*** Re: Help with large delete
Дата
Msg-id D025163A-B67D-4F70-B83A-8DECFA6D8704@easesoftware.com
обсуждение исходный текст
Ответ на Re: Help with large delete  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: ***SPAM*** Re: Help with large delete  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general


On Apr 16, 2022, at 10:33, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Perry Smith <pedz@easesoftware.com> writes:
Currently I have one table that mimics a file system.  Each entry has a parent_id and a base name where parent_id is an id in the table that must exist in the table or be null with cascade on delete.
I’ve started a delete of a root entry with about 300,000 descendants.  The table currently has about 22M entries and I’m adding about 1600 entries per minute still.  Eventually there will not be massive amounts of entries being added and the table will be mostly static.

The most obvious question is do you have an index on the referencing
column.  PG doesn't require one to exist to create an FK; but if you
don't, deletes of referenced rows had better be uninteresting to you
performance-wise, because each one will cause a seqscan.

To try to reply to Peter’s question, I just now started:

psql -c "explain analyze delete from dateien where basename = '/mnt/pedz/Visual_Media'” find_dups

And it hasn’t replied yet.  I hope you are not slapping your head muttering “this guy is an idiot!!” — in that this would not give you the plan you are asking for...

This is inside a BSD “jail” on a NAS.  I’m wondering if the jail has a limited time and the other processes have consumed it all.  In any case, if / when it replies, I will post the results.

For Tom’s question, here is the description of the table:

psql -c '\d dateien' find_dups 
                                          Table "public.dateien"
   Column   |              Type              | Collation | Nullable |               Default               
------------+--------------------------------+-----------+----------+-------------------------------------
 id         | bigint                         |           | not null | nextval('dateien_id_seq'::regclass)
 basename   | character varying              |           | not null | 
 parent_id  | bigint                         |           |          | 
 dev        | bigint                         |           | not null | 
 ftype      | character varying              |           | not null | 
 uid        | bigint                         |           | not null | 
 gid        | bigint                         |           | not null | 
 ino        | bigint                         |           | not null | 
 mode       | bigint                         |           | not null | 
 mtime      | timestamp without time zone    |           | not null | 
 nlink      | bigint                         |           | not null | 
 size       | bigint                         |           | not null | 
 sha1       | character varying              |           |          | 
 created_at | timestamp(6) without time zone |           | not null | 
 updated_at | timestamp(6) without time zone |           | not null | 
Indexes:
    "dateien_pkey" PRIMARY KEY, btree (id)
    "unique_dev_ino_for_dirs" UNIQUE, btree (dev, ino) WHERE ftype::text = 'directory'::text
    "unique_parent_basename" UNIQUE, btree (COALESCE(parent_id, '-1'::integer::bigint), basename)
Foreign-key constraints:
    "fk_rails_c01ebbd0bf" FOREIGN KEY (parent_id) REFERENCES dateien(id) ON DELETE CASCADE
Referenced by:
    TABLE "dateien" CONSTRAINT "fk_rails_c01ebbd0bf" FOREIGN KEY (parent_id) REFERENCES dateien(id) ON DELETE CASCADE


Вложения

В списке pgsql-general по дате отправления:

Предыдущее
От: "Sonai muthu raja M"
Дата:
Сообщение: Re: Require details that can we see the password history to a User account in PostgreSQL Database.
Следующее
От: Tom Lane
Дата:
Сообщение: Re: ***SPAM*** Re: Help with large delete