PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Các tùy chọn có sẵn để xác định và loại bỏ các đối tượng không hợp lệ trong Postgres là gì (ví dụ:chỉ mục bị hỏng)

Nếu bạn đang đề cập đến việc phát hiện các chỉ mục "không hợp lệ" (được tạo kém), dường như Postgres có thể "thất bại" trong nỗ lực tạo chỉ mục và sau đó trình lập kế hoạch truy vấn sẽ không sử dụng chúng, mặc dù chúng tồn tại trong hệ thống của bạn. Truy vấn này sẽ phát hiện các chỉ mục "không thành công":

https://www.enterprisedb.com/blog/pgupgrade -bug-không hợp lệ-đồng thời-được tạo-chỉ mục

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'

mặc dù tôi cho rằng việc phát hiện các chỉ mục bảng TOAST sẽ không ảnh hưởng gì, vì vậy bạn có thể xóa phần đó của truy vấn :)

Có liên quan, đối với tôi, đôi khi chỉ cần chạy một PHÂN TÍCH mới trên một bảng cũng làm cho các chỉ mục đột nhiên bắt đầu được sử dụng trong quá trình sản xuất (tức là ngay cả khi các chỉ mục không "không hợp lệ", chúng có thể không được sử dụng cho đến khi ANALYZE chạy). Kỳ lạ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách INTERSECT dữ liệu từ các bảng trên postgres

  2. Các khóa ngoại JSON trong PostgreSQL

  3. Làm thế nào để tách chuỗi và chèn nó như một dòng mới trong cùng một bảng?

  4. Thay đổi nhóm bảo mật trên Phiên bản cơ sở dữ liệu AWS RDS

  5. Hàm PostgreSQL / Thủ tục được lưu trữ CURRENT_TIMESTAMP không thay đổi