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

PostgreSQL - làm thế nào để chạy VACUUM từ mã bên ngoài khối giao dịch?

Sau khi tìm kiếm nhiều hơn, tôi đã phát hiện ra thuộc tính isol_level của đối tượng kết nối psycopg2. Hóa ra là thay đổi điều này thành 0 sẽ chuyển bạn ra khỏi khối giao dịch. Thay đổi phương pháp chân không của lớp trên thành lớp sau sẽ giải quyết được nó. Lưu ý rằng tôi cũng đặt mức cô lập trở lại mức trước đây chỉ để đề phòng (dường như là 1 theo mặc định).

def vacuum(self):
    old_isolation_level = self.conn.isolation_level
    self.conn.set_isolation_level(0)
    query = "VACUUM FULL"
    self._doQuery(query)
    self.conn.set_isolation_level(old_isolation_level)

Bài viết này (gần cuối trên trang đó) cung cấp giải thích ngắn gọn về các mức cô lập trong ngữ cảnh này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi khi chạy di chuyển trên Heroku, PostgreSQL với Rails 5

  2. Tìm kiếm toàn văn của Postgres:làm thế nào để tìm kiếm nhiều từ trong nhiều trường?

  3. Thay thế động cho trục xoay với CASE và GROUP BY

  4. Nhược điểm của bảng có quá nhiều cột

  5. Làm cách nào để lấy truy vấn thuộc tính cột từ tên bảng bằng PostgreSQL?