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

Bảng tạm thời PostgreSQL

Xin lưu ý rằng, trong Postgres, hành vi mặc định cho các bảng tạm thời là chúng không tự động bị loại bỏ và dữ liệu được duy trì khi cam kết. Xem ON COMMIT .

Tuy nhiên, bảng tạm thời bị loại bỏ khi kết thúc phiên cơ sở dữ liệu:

Các bảng tạm thời sẽ tự động bị loại bỏ vào cuối phiên, tùy chọn khi kết thúc giao dịch hiện tại.

Có nhiều cân nhắc bạn phải tính đến:

  • Nếu bạn muốn DROP một cách rõ ràng một bảng tạm thời khi kết thúc giao dịch, hãy tạo bảng đó bằng CREATE TEMPORARY TABLE ... ON COMMIT DROP cú pháp.
  • Trong trường hợp tổng hợp kết nối , một phiên cơ sở dữ liệu có thể kéo dài nhiều phiên khách hàng; để tránh xung đột trong CREATE , bạn nên bỏ các bảng tạm thời của mình - trước khi trả lại kết nối với nhóm (ví dụ:bằng cách thực hiện mọi thứ bên trong giao dịch và sử dụng ON COMMIT DROP cú pháp tạo), hoặc trên cơ sở khi cần thiết (bằng cách đặt trước bất kỳ CREATE TEMPORARY TABLE nào câu lệnh với DROP TABLE IF EXISTS , có lợi thế là cũng làm việc với các giao dịch bên ngoài, ví dụ:nếu kết nối được sử dụng ở chế độ tự động cam kết.)
  • Khi bảng tạm thời đang được sử dụng, bao nhiêu phần trăm của nó sẽ vừa trong bộ nhớ trước khi tràn vào đĩa? Xem temp_buffers tùy chọn trong postgresql.conf
  • Tôi nên lo lắng về điều gì khác khi thường xuyên làm việc với bảng tạm thời? Nên hút chân không sau khi bạn đã DROPped các bảng tạm thời, để làm sạch bất kỳ thùng rác nào khỏi danh mục. Postgres sẽ tự động hút bụi 3 phút một lần cho bạn khi sử dụng cài đặt mặc định (auto_vacuum ).

Ngoài ra, không liên quan đến câu hỏi của bạn (nhưng có thể liên quan đến dự án của bạn):hãy nhớ rằng, nếu bạn phải chạy truy vấn đối với bảng tạm thời sau bạn đã điền nó, thì bạn nên tạo các chỉ mục thích hợp và phát hành ANALYZE trên bàn tạm thời trong câu hỏi sau bạn đã hoàn tất việc chèn vào nó. Theo mặc định, trình tối ưu hóa dựa trên chi phí sẽ giả định rằng bảng tạm thời mới được tạo có ~ 1000 hàng và điều này có thể dẫn đến hiệu suất kém nếu bảng tạm thời thực sự chứa hàng triệu hà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. Điều đó có nghĩa là gì khi một quy trình PostgreSQL không hoạt động trong giao dịch?

  2. Làm cách nào để thực hiện truy vấn không phân biệt chữ hoa chữ thường trong Postgresql?

  3. Kiểm tra PostgreSQL bằng pgAudit

  4. Oracle SQL Developer và PostgreSQL

  5. '$$' được sử dụng để làm gì trong PL / pgSQL