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

Какви са наличните опции за идентифициране и премахване на невалидните обекти в Postgres (напр.:повредени индекси)

Ако имате предвид откриването на "невалидни" (зле създадени) индекси, очевидно Postgres може да се "провали" в опит да създаде индекс и тогава плановщикът на заявки няма да ги използва, въпреки че съществуват във вашата система. Тази заявка ще открие "неуспешни" индекси:

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'

въпреки че предполагам, че откриването на индекси на таблици TOAST не би навредило, така че можете да премахнете тази част от заявката :)

Свързано, за мен понякога просто стартирането на нов ANALYZE на таблица също кара индексите внезапно да започнат да се използват в производството (т.е. дори ако индексите не са „невалидни“, те може да са неизползвани до изпълнение на ANALYZE). Странно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. hibernate 5 + ZonedDateTime + postgresql включват часова зона и отместване

  2. Не може да се създаде нова таблица след DROP SCHEMA public

  3. psycopg2 как се справят с TypeError:не всички аргументи се преобразуват по време на форматиране на низ

  4. Използване на python sqlalchemy за изпълнение на необработени заявки с оператор WITH

  5. Как Acosd() работи в PostgreSQL