Mengaktifkan pencatatan kueri untuk SQL - Layanan Basis Data Relasional Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengaktifkan pencatatan kueri untuk SQL

Anda dapat mengumpulkan informasi yang lebih mendetail tentang aktivitas basis data, termasuk kueri, kueri yang menunggu kunci, titik pemeriksaan, dan banyak detail lainnya dengan mengatur beberapa parameter yang tercantum dalam tabel berikut. Topik ini berfokus pada kueri pencatatan log.

Parameter Default Deskripsi

log_connections

Mencatat log setiap koneksi yang berhasil.

log_disconnections

Mencatat log akhir setiap sesi dan durasinya.

log_checkpoints

1

Mencatat log setiap titik pemeriksaan.

log_lock_waits

Mencatat log waktu tunggu kunci yang panjang. Secara default, parameter ini tidak diatur.

log_min_duration_sample

(md) Menetapkan waktu eksekusi minimum yang jika terlampaui akan membuat sampel pernyataan dicatat. Ukuran sampel diatur menggunakan parameter log_statement_sample_rate.

log_min_duration_statement

Setiap SQL pernyataan yang berjalan setidaknya untuk jumlah waktu tertentu atau lebih lama akan dicatat. Secara default, parameter ini tidak diatur. Mengaktifkan parameter ini dapat membantu Anda menemukan kueri yang belum dioptimalkan.

log_statement

Mengatur jenis pernyataan yang dicatat. Secara default, parameter ini tidak disetel, tetapi Anda dapat mengubahnya menjadi allddl,, atau mod untuk menentukan jenis SQL pernyataan yang ingin Anda log. Jika menentukan apa pun selain none untuk parameter ini, Anda juga harus mengambil langkah-langkah tambahan untuk mencegah eksposur kata sandi dalam file log. Untuk informasi selengkapnya, lihat Mengurangi risiko eksposur kata sandi saat menggunakan pencatatan log kueri.

log_statement_sample_rate

Persentase pernyataan melebihi waktu yang ditentukan dalam log_min_duration_sample untuk dicatat, yang dinyatakan sebagai nilai titik mengambang antara 0,0 dan 1,0.

log_statement_stats

Menulis statistik performa kumulatif ke log server.

Menggunakan pencatatan log untuk menemukan kueri performa lambat

Anda dapat mencatat SQL pernyataan dan kueri untuk membantu menemukan kueri yang berkinerja lambat. Anda mengaktifkan kemampuan ini dengan memodifikasi pengaturan di log_statement dan parameter log_min_duration seperti yang diuraikan dalam bagian ini. Sebelum mengaktifkan pencatatan kueri untuk untuk instance Postgre SQL DB, Anda harus mengetahui kemungkinan paparan kata sandi di log dan cara mengurangi risiko. Untuk informasi selengkapnya, lihat Mengurangi risiko eksposur kata sandi saat menggunakan pencatatan log kueri.

Berikut ini, Anda dapat menemukan informasi referensi tentang parameter log_statement dan log_min_duration.

log_statement

Parameter ini menentukan jenis SQL pernyataan yang harus dikirim ke log. Nilai default-nya adalah none. Jika Anda mengubah parameter ini ke all, ddl, atau mod, pastikan untuk menerapkan tindakan yang disarankan untuk mengurangi risiko eksposur kata sandi di dalam log. Untuk informasi selengkapnya, lihat Mengurangi risiko eksposur kata sandi saat menggunakan pencatatan log kueri.

all

Mencatat log semua pernyataan. Pengaturan ini direkomendasikan untuk tujuan debugging.

ddl

Log semua pernyataan definisi data language (DDL)CREATE, sepertiALTER,DROP,, dan sebagainya.

mod

Log semua DDL pernyataan dan pernyataan bahasa manipulasi data (DML), sepertiINSERT,UPDATE, danDELETE, yang memodifikasi data.

none

Tidak ada SQL pernyataan yang dicatat. Kami merekomendasikan pengaturan ini untuk menghindari risiko eksposur kata sandi di dalam log.

log_min_duration_statement

Setiap SQL pernyataan yang berjalan setidaknya untuk jumlah waktu tertentu atau lebih lama akan dicatat. Secara default, parameter ini tidak diatur. Mengaktifkan parameter ini dapat membantu Anda menemukan kueri yang belum dioptimalkan.

–1–2147483647

Jumlah milidetik (md) runtime di mana pernyataan dicatat.

Untuk menyiapkan pencatatan log kueri

Langkah-langkah ini mengasumsikan bahwa cluster . RDSuntuk Postgre SQL DB misalnya menggunakan kelompok parameter DB kustom.

  1. Atur parameter log_statement ke all. Contoh berikut ini menunjukkan informasi yang ditulis ke file postgresql.log dengan pengaturan parameter ini.

    2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: statement: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:LOG: QUERY STATISTICS 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:DETAIL: ! system usage stats: ! 0.017355 s user, 0.000000 s system, 0.168593 s elapsed ! [0.025146 s user, 0.000000 s system total] ! 36644 kB max resident size ! 0/8 [0/8] filesystem blocks in/out ! 0/733 [0/1364] page faults/reclaims, 0 [0] swaps ! 0 [0] signals rcvd, 0/0 [0/0] messages rcvd/sent ! 19/0 [27/0] voluntary/involuntary context switches 2022-10-05 22:05:52 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: SELECT feedback, s.sentiment,s.confidence FROM support,aws_comprehend.detect_sentiment(feedback, 'en') s ORDER BY s.confidence DESC; 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:ERROR: syntax error at or near "ORDER" at character 1 2022-10-05 22:05:56 UTC:52.95.4.1(11335):postgres@labdb:[3639]:STATEMENT: ORDER BY s.confidence DESC; ----------------------- END OF LOG ----------------------
  2. Atur parameter log_min_duration_statement. Contoh berikut ini menunjukkan informasi yang ditulis ke file postgresql.log saat pengaturan parameter ini diatur ke 1.

    Kueri yang melebihi durasi yang ditentukan dalam parameter log_min_duration_statement dicatat. Bagian berikut menunjukkan satu contoh. Anda dapat melihat file log untuk di Amazon Console. RDS

    2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: statement: DROP table comments; 2022-10-05 19:05:19 UTC:52.95.4.1(6461):postgres@labdb:[6144]:LOG: duration: 167.754 ms 2022-10-05 19:08:07 UTC::@:[355]:LOG: checkpoint starting: time 2022-10-05 19:08:08 UTC::@:[355]:LOG: checkpoint complete: wrote 11 buffers (0.0%); 0 WAL file(s) added, 0 removed, 0 recycled; write=1.013 s, sync=0.006 s, total=1.033 s; sync files=8, longest=0.004 s, average=0.001 s; distance=131028 kB, estimate=131028 kB ----------------------- END OF LOG ----------------------

Mengurangi risiko eksposur kata sandi saat menggunakan pencatatan log kueri

Sebaiknya Anda tetap mengatur log_statement ke none agar tidak mengekspos kata sandi. Jika Anda mengatur log_statement ke all, ddl, atau mod, sebaiknya Anda mengambil satu atau beberapa langkah berikut.

  • Untuk klien, enkripsi informasi sensitif. Untuk informasi selengkapnya, lihat Opsi Enkripsi dalam dokumentasi PostgreSQL. Gunakan opsi ENCRYPTED (dan UNENCRYPTED) dari pernyataan CREATE dan ALTER. Untuk informasi lebih lanjut, lihat CREATEUSERdi dokumentasi PostgreSQL.

  • Untuk Anda RDSuntuk instans Postgre SQL DB, siapkan dan gunakan ekstensi Postgre Auditing (). SQL pgAudit Ekstensi ini menyunting informasi sensitif CREATE dan ALTER pernyataan yang dikirim ke log. Untuk informasi selengkapnya, lihat Menggunakan pgAudit untuk mencatat aktivitas database.

  • Batasi akses ke CloudWatch log.

  • Gunakan mekanisme otentikasi yang lebih kuat sepertiIAM.