sql >> Databáze >  >> RDS >> PostgreSQL

Jak zjistit fragmentované indexy a defragmentovat je v PostgreSQL?

Normálně se o to nemusíte vůbec starat.

Pokud však došlo k hromadnému mazání nebo aktualizaci nebo rychlost trvalých změn byla tak vysoká, že autovakuum nestačilo, můžete skončit s velmi nafouknutým indexem.

Nástroj k určení, že id pgstattuple rozšíření:

CREATE EXTENSION pgstattuple;

Pak můžete prozkoumat index bloat takto:

SELECT * FROM pgstatindex('spatial_ref_sys_pkey');

-[ RECORD 1 ]------+-------
version            | 2
tree_level         | 1
index_size         | 196608
root_block_no      | 3
internal_pages     | 1
leaf_pages         | 22
empty_pages        | 0
deleted_pages      | 0
avg_leaf_density   | 64.48
leaf_fragmentation | 13.64

Tento index je ve výborném stavu (nikdy nepoužit):Má pouze 14% nadýmání.

Pamatujte, že indexy jsou standardně vytvářeny s fillfactor z 90, to znamená, že bloky indexu nejsou vyplněny z více než 90 % pomocí INSERT .

Těžko říct, kdy je index nafouklý, ale pokud leaf_fragmentation přesahuje 50-60, není to tak hezké.

Chcete-li reorganizovat index, použijte REINDEX .



  1. Vypočítejte přesný měsíční rozdíl mezi dvěma daty

  2. Konfigurace oprávnění ScaleGrid na AWS pomocí šablony zásad IAM

  3. Jak můžeme použít mysql_affected_rows() v uložené proceduře

  4. Objednejte výsledek formuláře Mysql group by