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 |
log_statement_sample_rate | – | Persentase pernyataan melebihi waktu yang ditentukan dalam |
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.
Atur parameter
log_statement
keall
. Contoh berikut ini menunjukkan informasi yang ditulis ke filepostgresql.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 ----------------------
Atur parameter
log_min_duration_statement
. Contoh berikut ini menunjukkan informasi yang ditulis ke filepostgresql.log
saat pengaturan parameter ini diatur ke1
.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. RDS2022-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
(danUNENCRYPTED
) dari pernyataanCREATE
danALTER
. 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.