2017-02-22 11:11 GMT+13:00 Patrick B <patrickbake...@gmail.com>:

> 2017-02-22 10:59 GMT+13:00 Adrian Klaver <adrian.kla...@aklaver.com>:
>
>> On 02/21/2017 01:44 PM, Patrick B wrote:
>> > Hi guys,
>> >
>> > I've got a lot of bloat indexes on my 4TB database.
>> >
>> > Let's take this example:
>> >
>> >     Table: seg
>> >     Index: ix_filter_by_tree
>> >     Times_used: 1018082183
>> >     Table_size: 18 GB -- wrong. The table is mostly on pg_toast table.
>> >     Its real size is 2TB
>>
>> How do you know one number is right and the other is wrong?
>>
>
>
> 1. on that table (seg) i store binary data. It is impossible to have only
> 18GB of it.
> 2.
>
> SELECT schema_name,
>
>        pg_size_pretty(sum(table_size)::bigint),
>
>        (sum(table_size) / pg_database_size(current_database())) * 100
>
> FROM (
>
>   SELECT pg_catalog.pg_namespace.nspname as schema_name,
>
>          pg_relation_size(pg_catalog.pg_class.oid) as table_size
>
>   FROM   pg_catalog.pg_class
>
>      JOIN pg_catalog.pg_namespace ON relnamespace =
> pg_catalog.pg_namespace.oid
>
> ) t
>
> GROUP BY schema_name
>
> ORDER BY schema_name
>
>
> pg_toast 2706 GB 82.62112838877240860000 <-- this belongs to the seg
> table.
>
>
>
>>
>> Have you looked at the functions here?:
>> https://www.postgresql.org/docs/9.6/static/functions-admin.h
>> tml#FUNCTIONS-ADMIN-DBOBJECT
>>
>> >     Index_size: 17 GB
>> >     Num_writes 16245023
>> >     Index definition: CREATE INDEX ix_filter_by_tree ON seg USING btree
>> >     (full_path varchar_pattern_ops) WHERE (full_path IS NOT NULL)
>> >
>> >
>> >
>> > What is the real impact of a bloat index? If I reindex it, queries will
>> > be faster?
>> >
>> > Thanks
>> > Patrick
>>
>
>

I ran the query before and after the reindex, and it seems it did not help
on performance.

*The query I used:*

explain analyze select * from seg where full_path = '/userfile/123';


*Before reindex:*

Index Scan using ix_filter_by_tree on seg  (cost=0.00..144.87 rows=215
width=8) (actual time=0.047..0.047 rows=1 loops=1)
  Index Cond: (full_path = '/userfile/123')
Total runtime: 0.059 ms
(3 rows)


*After reindex:*

Index Scan using ix_filter_by_tree on seg  (cost=0.00..141.83 rows=220
width=8) (actual time=0.021..0.021 rows=1 loops=1)
  Index Cond: (full_path = '/userfile/123')
Total runtime: 0.036 ms
(3 rows)


Note that the '*cost*' is pretty much the same.

*My question is:*
If I have a bloat index. Why do I need to reindex it if I got none
performance improvements?

Cheers
Patrick

Reply via email to