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

Postgres:lệnh chân không không làm sạch các bộ giá trị đã chết

Sử dụng VACUUM (VERBOSE) để có được số liệu thống kê chi tiết về những gì nó đang làm và tại sao.

Có ba lý do tại sao không thể loại bỏ các bộ dữ liệu chết:

  1. Có một giao dịch đang chạy dài mà chưa được đóng. Bạn có thể tìm thấy những chàng trai hư với

    SELECT pid, datname, usename, state, backend_xmin
    FROM pg_stat_activity
    WHERE backend_xmin IS NOT NULL
    ORDER BY age(backend_xmin) DESC;
    

    Bạn có thể loại bỏ giao dịch bằng pg_cancel_backend() hoặc pg_terminate_backend() .

  2. Có những giao dịch đã chuẩn bị nhưng chưa được cam kết. Bạn có thể tìm thấy chúng bằng

    SELECT gid, prepared, owner, database, transaction
    FROM pg_prepared_xacts
    ORDER BY age(transaction) DESC;
    

    Người dùng COMMIT PREPARED hoặc ROLLBACK PREPARED để đóng chúng.

  3. Có các khe sao chép không được sử dụng. Tìm chúng bằng

    SELECT slot_name, slot_type, database, xmin
    FROM pg_replication_slots
    ORDER BY age(xmin) DESC;
    

    Sử dụng pg_drop_replication_slot() để xóa vị trí sao chép không sử dụng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgres:Làm thế nào để chuyển đổi một chuỗi json thành văn bản?

  2. Bản ghi trả về từ hàm có các cột được nối với nhau

  3. Tại sao postgres không tạo cơ sở dữ liệu?

  4. Rails Resque worker không thành công với PGError:máy chủ đóng kết nối đột ngột

  5. Dịch vụ cơ sở dữ liệu PostgreSQL