sql >> Database >  >> RDS >> PostgreSQL

Wat zijn de beschikbare opties om de ongeldige objecten in Postgres te identificeren en te verwijderen (bijv. beschadigde indexen)

Als u verwijst naar het detecteren van "ongeldige" (slecht gemaakte) indexen, kan Postgres blijkbaar "mislukken" in een poging om een ​​index te maken, en dan zal de queryplanner ze niet gebruiken, hoewel ze in uw systeem bestaan. Deze zoekopdracht detecteert "mislukte" indexen:

https://www.enterprisedb.com/blog/pgupgrade -bug-invalid-concurrently-created-indexes

SELECT n.nspname, c.relname
FROM   pg_catalog.pg_class c, pg_catalog.pg_namespace n,
       pg_catalog.pg_index i
WHERE  (i.indisvalid = false OR i.indisready = false) AND
       i.indexrelid = c.oid AND c.relnamespace = n.oid AND
       n.nspname != 'pg_catalog' AND
       n.nspname != 'information_schema' AND
       n.nspname != 'pg_toast'

hoewel ik veronderstel dat het detecteren van TOAST-tabelindexen geen kwaad zou doen, dus je kunt dat deel van de zoekopdracht verwijderen :)

Gerelateerd, soms zorgt het uitvoeren van een nieuwe ANALYZE op een tafel er ook voor dat indexen plotseling in productie worden gebruikt (d.w.z. zelfs als indexen niet "ongeldig" zijn, kunnen ze ongebruikt zijn tot een ANALYSE-run). Raar.



  1. Symfony2 Veel tot veel relationele Db-structuur

  2. PreRemove/postRemove-gebeurtenissen gebruiken om te achterhalen welke query's kunnen worden uitgevoerd en welke niet

  3. Verbetert de Foreign Key de prestaties van query's?

  4. Wijzig datumformaat (in DB of uitvoer) in dd/mm/jjjj - PHP MySQL