| From: | khan Affan <bawag773(at)gmail(dot)com> |
|---|---|
| To: | Keith Fiske <keith(dot)fiske(at)crunchydata(dot)com>, "Wong, Kam Fook (TR Technology)" <kamfook(dot)wong(at)thomsonreuters(dot)com> |
| Cc: | Pgsql-admin <pgsql-admin(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: How to detect if a postgresql gin index is bloated |
| Date: | 2024-07-26 10:49:38 |
| Message-ID: | CAF4emO=sU_m-+nXktnCSW1DaRFD0D2F-YZwUwGqfgJN41rzAtw@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-admin |
The pgstattuple function provides the following useful columns:
- table_len: The length of the table.
- tuple_count: The number of tuples.
- tuple_len: The length of the tuples.
- dead_tuple_count: The number of dead tuples.
- dead_tuple_len: The length of dead tuples.
- free_space: The amount of free space.
Example
How you might use this function:
SELECT * FROM pgstattuple('gin_index_name');
Interpreting Results
- If the dead_tuple_count is high relative to the tuple_count, this
indicates bloat.
- If free_space is a significant portion of table_len, the index may be
bloated.
Using pg_trgm for Trigram Indexes
If you're using a GIN index with the pg_trgm extension (for trigram
indexes), you might also consider analyzing the table and index sizes
directly:
SELECT
pg_size_pretty(pg_relation_size('table_name')) AS table_size,
pg_size_pretty(pg_total_relation_size('table_name')) AS total_size,
pg_size_pretty(pg_relation_size('gin_index_name')) AS index_size;
Vacuum and Reindex
If you determine that your GIN index is bloated, you can use VACUUM and
REINDEX to reclaim space:
VACUUM ANALYZE your_table_name;
REINDEX INDEX your_gin_index_name;
By following these steps, you should be able to detect and address bloat in
your PostgreSQL GIN indexes effectively.
On Fri, Jul 26, 2024 at 8:01 AM Keith Fiske <keith(dot)fiske(at)crunchydata(dot)com>
wrote:
>
>
> On Thu, Jul 25, 2024 at 8:59 AM khan Affan <bawag773(at)gmail(dot)com> wrote:
>
>> Hello Kam Fook
>> You can use pgstattuple extension, & you can use pg_trgm or
>> gin_index_stats functions from the pgstattuple extension to check for bloat
>> in GIN indexes.
>> Thank & Regards
>>
>> *Muhammad Affan (*아판*)*
>>
>> *PostgreSQL Technical Support Engineer** / Pakistan R&D*
>>
>> On Thu, Jul 25, 2024 at 2:07 AM Wong, Kam Fook (TR Technology) <
>> kamfook(dot)wong(at)thomsonreuters(dot)com> wrote:
>>
>>> I have a GIN index. Is there a way to detect if a postgres GIN index is
>>> bloated or not? The regular select * from pgstatindex(‘indexname’); does
>>> not work because the GIN index is not btree index.
>>>
>>>
>>>
>>> Thank you
>>> This e-mail is for the sole use of the intended recipient and contains
>>> information that may be privileged and/or confidential. If you are not an
>>> intended recipient, please notify the sender by return e-mail and delete
>>> this e-mail and any attachments. Certain required legal entity disclosures
>>> can be accessed on our website:
>>> https://www.thomsonreuters.com/en/resources/disclosures.html
>>>
>>
>
> Any more insight on how to use those two options to actually calculate GIN
> bloat? From what I could tell pgstattuple didn't provide anything that
> could be used. I hadn't looked further into the other yet, but if you know
> how to do that already that info would be great.
>
> --
> Keith Fiske
> Senior Database Engineer
> Crunchy Data - http://crunchydata.com
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Keith Fiske | 2024-07-26 13:10:35 | Re: How to detect if a postgresql gin index is bloated |
| Previous Message | obi reddy | 2024-07-26 06:24:24 | Re: Queries are failing on standby server |