Memahami statistik
Saat kueri berjalan, kueri perlu membuat rencana untuk memutuskan cara mengakses data. Misalnya, jika kueri SELECT mengembalikan setiap baris, tidak ada gunanya menggunakan indeks dan akan lebih efisien untuk memindai seluruh tabel. Dalam skenario ini, sangat mudah untuk merencanakan kueri, tetapi sebagian besar rencana kueri tidak begitu mudah untuk diselesaikan.
Bayangkan sebuah skenario di mana Anda menjalankan kueri yang menelusuri setiap pesanan antara $10,00 dan $20,00. Awalnya, kita tidak tahu apakah kueri mengembalikan semua data dalam tabel, atau hanya subset kecil. Ini tidak diketahui membuatnya sulit untuk merencanakan strategi kueri sampai kita melihat data. Jika kita tahu bahwa tabel berisi pesanan yang memiliki harga pembelian antara $1,00 dan $800,00, indeks dapat digunakan untuk mencari subset kecil data. Namun, mungkin masih belum ada informasi yang cukup untuk menghasilkan rencana kueri yang tepat. Dalam contoh ini, meskipun pesanan memiliki harga pembelian antara $ 1,00 dan $ 800,00, 95% pesanan antara $ 10,00 dan $ 20,00 dan pemindaian data sebenarnya adalah rencana yang paling efektif.
Dengan skenario seperti contoh sebelumnya, PostgreSQL memerlukan statistik terperinci untuk dapat menggunakan rencana kueri optimal.
Untuk memantau statistik perencanaan dan pelaksanaan, ada ekstensi PostgreSQL yang disebut pg_stat_statements. pg_stat_statements diaktifkan secara default di Azure Database for PostgreSQL dan memungkinkan anggota peran pg_read_all_stats untuk menanyakan statistik menggunakan beberapa tampilan pg_stat. Kueri berikut mengembalikan aktivitas kueri menggunakan tampilan pg_stat_activity:
SELECT * FROM pg_stat_activity;
Menonaktifkan pg_stat_statements
Jika kueri Anda unik dan Anda tidak mengulangi kueri yang sama secara berkala, data kueri historis kurang berguna. Selain itu, jika Anda tidak menggunakan tampilan pg_stat, tampilan tersebut tidak memberikan manfaat apa pun. Ada biaya tambahan untuk mempertahankan pg_stat_statements, yang bisa mencapai 50%, dan Anda dapat menonaktifkan pelacakan pg_stat_statements dalam skenario ini.
Untuk menonaktifkan pelacakan pg_stat_statements, lakukan langkah-langkah berikut: