Nói chung, chỉ nội dung của các tệp bảng và chỉ mục mới được lưu vào bộ nhớ đệm trong không gian đệm dùng chung.
Các kế hoạch truy vấn được lưu vào bộ nhớ đệm trong một số trường hợp. Cách tốt nhất để đảm bảo điều này là CHUẨN BỊ truy vấn một lần, sau đó THỰC HIỆN nó mỗi lần.
Kết quả của một truy vấn không được lưu trữ tự động. Nếu bạn chạy lại cùng một truy vấn - ngay cả khi nó giống hệt nhau từng chữ cái và không có cập nhật nào được thực hiện trên DB - thì nó vẫn sẽ thực hiện toàn bộ kế hoạch. Tất nhiên, nó sẽ sử dụng bất kỳ dữ liệu bảng / chỉ mục nào đã có trong bộ đệm chia sẻ bộ đệm; vì vậy nó sẽ không nhất thiết phải đọc lại tất cả dữ liệu từ đĩa.
Cập nhật về bộ nhớ đệm kế hoạch
Bộ nhớ đệm kế hoạch thường được thực hiện mỗi phiên. Điều này có nghĩa là chỉ kết nối tạo kế hoạch mới có thể sử dụng phiên bản đã lưu trong bộ nhớ cache. Các kết nối khác phải tạo và sử dụng các phiên bản được lưu trong bộ nhớ cache của riêng chúng. Đây thực sự không phải là vấn đề về hiệu suất bởi vì dù sao thì khoản tiết kiệm bạn nhận được từ việc sử dụng lại một kế hoạch hầu như luôn rất nhỏ so với chi phí kết nối. (Trừ khi các truy vấn của bạn thực sự là phức tạp.)
Nó không bộ nhớ cache nếu bạn sử dụng PREPARE: http://www.postgresql.org /docs/current/static/sql-prepare.html
Nó không bộ đệm ẩn khi truy vấn nằm trong hàm PL / plSQL: http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING
Nó không truy vấn đặc biệt vào bộ nhớ cache được nhập trong psql.
Hy vọng rằng ai đó có thể giải thích cặn kẽ về bất kỳ trường hợp nào khác của bộ nhớ đệm kế hoạch truy vấn.