PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak znaleźć pofragmentowane indeksy i zdefragmentować je w PostgreSQL?

Zwykle w ogóle nie musisz się o to martwić.

Jednakże, jeśli doszło do masowego usunięcia lub aktualizacji, lub jeśli tempo trwałych zmian było tak wysokie, że automatyczne odkurzanie nie mogło nadążyć, możesz skończyć z mocno nadętym indeksem.

Narzędzie do ustalenia, że ​​identyfikator pgstattuple rozszerzenie:

CREATE EXTENSION pgstattuple;

Następnie możesz zbadać rozdęcie indeksu w następujący sposób:

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

Ten wskaźnik jest w doskonałej formie (nigdy nie używany):ma tylko 14% wzdęcia.

Pamiętaj, że indeksy są domyślnie tworzone za pomocą fillfactor z 90, czyli bloki indeksu nie są wypełniane do więcej niż 90% przez INSERT .

Trudno powiedzieć, kiedy indeks jest rozdęty, ale jeśli leaf_fragmentation przekracza 50-60, to nie jest takie ładne.

Aby zreorganizować indeks, użyj REINDEX .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL:domyślne nazwy ograniczeń

  2. Jak porównywać tablice w PostgreSQL

  3. Zainstaluj i połącz się z PostgreSQL 10 na Ubuntu 16.04

  4. Jak zmapować pole tablicy PostgreSQL w Django ORM?

  5. PostgreSQL:sprawne uzyskiwanie rangi porządkowej (indeks wiersza? )