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.
database
sql
postgresql
Jin Kim
sumber
sumber
Jawaban:
Opsi konfigurasi yang Anda cari adalah
log_statement = "all"
(jika Anda hanya menginginkan pernyataan), ataulog_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.sumber
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 sendiriThe
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.sumber
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.
Contoh laporan: di sini dan di sini .
sumber