Samuel Stearns
2012-11-19 21:59:59 UTC
Howdy,
Enviroment:
Postgres 8.4.14
Linux
We have a problem with index bloat on a couple of our tables even though we have applied more aggressive autovac/analyze settings in the schema:
ALTER TABLE billingitemrating SET (autovacuum_vacuum_scale_factor=0.001, autovacuum_analyze_scale_factor=0.0001);
ALTER TABLE importitem SET (autovacuum_vacuum_scale_factor=0.001, autovacuum_analyze_scale_factor=0.0001);
pg_stat_all_tables confirms the tables are being auto-vac'd.
This query shows the index bloat:
(postgres@[local]:5432) [smile] > SELECT "relation",
pg_size_pretty(size) as orig_size,
pg_size_pretty(pg_relation_size(C.oid)) new_size,
pg_size_pretty(pg_relation_size(C.oid) - size) as pretty_diff,
round((pg_relation_size(C.oid))::numeric / size * 100.0) || '%' as increase
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
join tablesizes_20121113_1500 on (relation = nspname || '.' || relname)
left join pg_tablespace t on (c.reltablespace = t.oid)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
and size <> 0
order by pg_relation_size(C.oid) - size desc limit 20;
relation | orig_size | new_size | pretty_diff | increase
--------------------------------------------------+-----------+----------+-------------+----------
public.billingitemrating_tariff_idx | 56 MB | 210 MB | 154 MB | 375%
public.billingitemrating_itemdescription_idx | 56 MB | 209 MB | 153 MB | 374%
public.billingitemrating_pkey1 | 50 MB | 170 MB | 120 MB | 339%
public.billingitemrating_psi_idx | 50 MB | 145 MB | 95 MB | 289%
public.billingitemrating_bpid_idx | 45 MB | 129 MB | 84 MB | 289%
vendor.optuswholesalegatewaydataitem | 1290 MB | 1329 MB | 39 MB | 103%
public.billingitemrating | 179 MB | 213 MB | 34 MB | 119%
public.billingitem | 274 MB | 295 MB | 21 MB | 108%
public.importitem_pkey | 130 MB | 147 MB | 17 MB | 113%
public.importitem | 372 MB | 387 MB | 15 MB | 104%
public.importitem_status_ignored_idx | 182 MB | 196 MB | 14 MB | 108%
public.importitem_importitemgroup_status_ignored | 182 MB | 196 MB | 14 MB | 108%
public.importitem_subscriptionid_idx | 163 MB | 176 MB | 13 MB | 108%
public.eventbinding | 122 MB | 135 MB | 13 MB | 111%
public.idx_importitem_importitemgroup | 130 MB | 142 MB | 13 MB | 110%
public.idx_importitem_importitemgroup_status | 130 MB | 140 MB | 10 MB | 108%
public.idx_importitem_status | 130 MB | 140 MB | 10 MB | 108%
public.billingitemrating_biid_idx | 35 MB | 45 MB | 10 MB | 129%
public.billingitemrating_ebid_idx | 35 MB | 45 MB | 10 MB | 128%
vendor.optuswholesalegatewaycdrdescriminator | 254 MB | 263 MB | 9576 kB | 104%
(20 rows)
Time: 849.053 ms
(postgres@[local]:5432) [smile] >
Any ideas on how to resolve?
Thank you,
Samuel Stearns
Enviroment:
Postgres 8.4.14
Linux
We have a problem with index bloat on a couple of our tables even though we have applied more aggressive autovac/analyze settings in the schema:
ALTER TABLE billingitemrating SET (autovacuum_vacuum_scale_factor=0.001, autovacuum_analyze_scale_factor=0.0001);
ALTER TABLE importitem SET (autovacuum_vacuum_scale_factor=0.001, autovacuum_analyze_scale_factor=0.0001);
pg_stat_all_tables confirms the tables are being auto-vac'd.
This query shows the index bloat:
(postgres@[local]:5432) [smile] > SELECT "relation",
pg_size_pretty(size) as orig_size,
pg_size_pretty(pg_relation_size(C.oid)) new_size,
pg_size_pretty(pg_relation_size(C.oid) - size) as pretty_diff,
round((pg_relation_size(C.oid))::numeric / size * 100.0) || '%' as increase
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
join tablesizes_20121113_1500 on (relation = nspname || '.' || relname)
left join pg_tablespace t on (c.reltablespace = t.oid)
WHERE nspname NOT IN ('pg_catalog', 'information_schema')
and size <> 0
order by pg_relation_size(C.oid) - size desc limit 20;
relation | orig_size | new_size | pretty_diff | increase
--------------------------------------------------+-----------+----------+-------------+----------
public.billingitemrating_tariff_idx | 56 MB | 210 MB | 154 MB | 375%
public.billingitemrating_itemdescription_idx | 56 MB | 209 MB | 153 MB | 374%
public.billingitemrating_pkey1 | 50 MB | 170 MB | 120 MB | 339%
public.billingitemrating_psi_idx | 50 MB | 145 MB | 95 MB | 289%
public.billingitemrating_bpid_idx | 45 MB | 129 MB | 84 MB | 289%
vendor.optuswholesalegatewaydataitem | 1290 MB | 1329 MB | 39 MB | 103%
public.billingitemrating | 179 MB | 213 MB | 34 MB | 119%
public.billingitem | 274 MB | 295 MB | 21 MB | 108%
public.importitem_pkey | 130 MB | 147 MB | 17 MB | 113%
public.importitem | 372 MB | 387 MB | 15 MB | 104%
public.importitem_status_ignored_idx | 182 MB | 196 MB | 14 MB | 108%
public.importitem_importitemgroup_status_ignored | 182 MB | 196 MB | 14 MB | 108%
public.importitem_subscriptionid_idx | 163 MB | 176 MB | 13 MB | 108%
public.eventbinding | 122 MB | 135 MB | 13 MB | 111%
public.idx_importitem_importitemgroup | 130 MB | 142 MB | 13 MB | 110%
public.idx_importitem_importitemgroup_status | 130 MB | 140 MB | 10 MB | 108%
public.idx_importitem_status | 130 MB | 140 MB | 10 MB | 108%
public.billingitemrating_biid_idx | 35 MB | 45 MB | 10 MB | 129%
public.billingitemrating_ebid_idx | 35 MB | 45 MB | 10 MB | 128%
vendor.optuswholesalegatewaycdrdescriminator | 254 MB | 263 MB | 9576 kB | 104%
(20 rows)
Time: 849.053 ms
(postgres@[local]:5432) [smile] >
Any ideas on how to resolve?
Thank you,
Samuel Stearns