Large pkey index on insert-only table

Поиск
Список
Период
Сортировка
От Devin Ivy
Тема Large pkey index on insert-only table
Дата
Msg-id CANi9rANxzCD__O-CHV--XVBPMwEiDnC8wzTpjZZ7=fEw1gWoaA@mail.gmail.com
обсуждение исходный текст
Ответы Re: Large pkey index on insert-only table
Список pgsql-general
Hi all,
I have a suspiciously large index, and I could use a hand finding a root cause for its size.  This index supports the primary key for a closure table that models threaded comments with columns `(id, ancestor_id, depth)`.  The primary key is composite: `(id, ancestor_id)`.  The id columns are varchars which are a bit long for identifiers, around 70 bytes.  This table is insert-only: the application never performs updates or deletes.

The table has grown to 200GB, and the unique index supporting the primary key is nearly double that at around 360GB, which stood out to me as rather large compared to the table itself.  The index uses the default fillfactor of 90.  I would not anticipate very much bloat since updates and deletes never occur on this table, and according to pg_stat_all_tables autovacuum has been running regularly.  I've used the btree bloat estimator from https://github.com/ioguix/pgsql-bloat-estimation, and it estimates the bloat percentage at 47%.

Any thoughts on why this may be, or where to go next to continue tracking this down?  Also, could the primary key column order `(id, ancestor_id)` vs `(ancestor_id, id)` significantly affect the index size depending on the column cardinalities?  I appreciate your time and input, thanks!

--
Devin Ivy

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

Предыдущее
От: Daniel Gustafsson
Дата:
Сообщение: Re: A question about the postgres's website
Следующее
От: Peter Geoghegan
Дата:
Сообщение: Re: Large pkey index on insert-only table