PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да намерите фрагментирани индекси и да ги дефрагментирате в PostgreSQL?

Обикновено изобщо не е нужно да се тревожите за това.

Въпреки това, ако е имало масово изтриване или актуализиране, или устойчивата скорост на промяна е била толкова висока, че автоматичното вакуумиране не е могло да се справи, може да се окажете със силно раздут индекс.

Инструментът за определяне на този идентификатор pgstattuple разширение:

CREATE EXTENSION pgstattuple;

След това можете да разгледате раздуването на индекса по този начин:

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

Този индекс е в отлична форма (никога не е използван):има само 14% раздуване.

Имайте предвид, че индексите по подразбиране се създават с fillfactor от 90, т.е. индексните блокове не са запълнени до повече от 90% от INSERT .

Трудно е да се каже кога един индекс е раздут, но ако leaf_fragmentation надвишава 50-60, не е толкова красиво.

За да реорганизирате индекс, използвайте 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. grake db:create хвърля база данни не съществува грешка с postgresql

  2. * Неразпознато поле в:база данни Имахте предвид?:- показатели - сървър - регистриране - DROPWIZARD

  3. Най-добрият начин за предотвратяване на дублиране на данни при копиране на csv postgresql

  4. Свързване с Postgresql в докер контейнер отвън

  5. Споделете връзка с postgres db между процеси в Python