Umumnya, hanya konten tabel dan file indeks yang akan di-cache di ruang buffer bersama.
Paket kueri di-cache dalam beberapa keadaan. Cara terbaik untuk memastikan ini adalah dengan SIAPKAN kueri satu kali, lalu EKSEKUSI setiap kali.
Hasil kueri tidak di-cache secara otomatis. Jika Anda menjalankan ulang kueri yang sama -- meskipun identik satu huruf demi huruf, dan tidak ada pembaruan yang dilakukan pada DB -- itu akan tetap menjalankan seluruh rencana. Tentu saja, ini akan menggunakan data tabel/indeks apa pun yang sudah ada di cache buffer bersama; jadi tidak perlu membaca semua data dari disk lagi.
Pembaruan pada caching paket
Caching rencana umumnya dilakukan per sesi. Ini berarti hanya koneksi yang membuat paket yang dapat menggunakan versi cache. Koneksi lain harus membuat dan menggunakan versi cache mereka sendiri. Ini sebenarnya bukan masalah kinerja karena penghematan yang Anda dapatkan dari penggunaan kembali paket hampir selalu sangat kecil dibandingkan dengan biaya koneksi. (Kecuali pertanyaan Anda benar-benar rumit.)
Itu memang cache jika Anda menggunakan SIAPKAN:http://www.postgresql.org /docs/current/static/sql-prepare.html
Itu memang cache ketika kueri dalam fungsi PL/plSQL:http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING
Itu tidak cache kueri ad-hoc yang dimasukkan dalam psql.
Semoga orang lain dapat menguraikan kasus lain dari caching paket kueri.