Saya sedang dalam proses meninjau setiap pernyataan SQL yang dibuat aplikasi terhadap database, untuk alasan kinerja. Apakah ada cara mudah untuk mencatat semua pernyataan yang dijalankan oleh server database PostgreSQL? Terima kasih.
Saya sedang dalam proses meninjau setiap pernyataan SQL yang dibuat aplikasi terhadap database, untuk alasan kinerja. Apakah ada cara mudah untuk mencatat semua pernyataan yang dijalankan oleh server database PostgreSQL? Terima kasih.
Jawaban:
Opsi konfigurasi yang Anda cari adalah log_statement = "all"
(jika Anda hanya menginginkan pernyataan), atau log_min_statement_duration = <some number>
jika Anda hanya setelah permintaan "lambat" (untuk beberapa nilai "lambat"). Lihat http://www.postgresql.org/docs/current/static/runtime-config-logging.html untuk detail lebih lanjut tentang konfigurasi pembuatan log.
explain analyze
permintaan yang lambat pada ikatan yang dieksekusi, Anda mungkin ingin memulai pengujian dengan ini karena 8.4 belum dirilis tetapi merupakan opsi yang bagus untuk mengetahui bahwa terjadi pada saat eksekusi , jika menganalisis menjelaskan output OK Anda mungkin menjalankan ke masalah dengan I / O atau batas CPU, tapi setidaknya Anda akan tahu itu bukan permintaan sendiri
The auto_explain
Modul ini sangat berguna untuk ini. Itu tidak hanya akan mencatat pernyataan, itu akan mencatat rencana pelaksanaannya dan bahkan dapat mencatat pernyataan yang dijalankan dalam fungsi PL / PgSQL. Hit kinerja cukup rendah kecuali Anda mengaktifkan analisis, dalam hal ini Anda mengeluarkan sedikit overhead waktu untuk semua pertanyaan.
Lihat auto_explain
di dokumentasi.
auto_explain
, ini ada dalam daftar modul yang diberkati. Lihat dokumentasi di docs.aws.amazon.com/AmazonRDS/latest/UserGuide/…
Tentu saja, Anda dapat mendeteksi kueri paling lambat sendiri, tetapi saya menyarankan Anda untuk menggunakan pgFouine - penganalisis log PostgreSQL. Sangat mudah untuk menginstal dan sangat berguna.