本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
針對您的 Aurora PostgreSQL 資料庫叢集開啟查詢記錄
您可以設定下表中列出的一些參數,來收集有關資料庫活動的詳細資訊,包括查詢、等待鎖定的查詢、檢查點,以及許多其他詳細資訊。本主題著重於記錄查詢。
參數 | 預設 | 描述 |
---|---|---|
log_connections |
– |
記錄每個成功連線。若要了解如何使用此參數搭配 |
log_disconnections |
– |
記錄每個工作階段的結束及其持續時間。若要了解如何使用此參數搭配 |
log_checkpoints |
– |
不適用於 Aurora PostgreSQL |
log_lock_waits |
– |
記錄長鎖定等待。根據預設,不會設定此參數。 |
log_min_duration_sample |
– |
(毫秒) 設定執行時間下限,超出此時間就會記錄陳述式樣本。使用 log_statement_sample_rate 參數設定範例大小。 |
log_min_duration_statement |
– |
至少執行指定時間或更長時間的任何 SQL 陳述式都會被記錄下來。根據預設,不會設定此參數。開啟此參數可以協助您尋找未最佳化的查詢。 |
log_statement |
– |
設定已記錄的陳述式類型。依預設,不會設定此參數,但您可以將其變更為 |
log_statement_sample_rate |
– |
超過要記錄之 |
log_statement_stats |
– |
將累積效能統計資訊寫入至伺服器日誌。 |
使用記錄來尋找執行緩慢的查詢
您可以記錄 SQL 陳述式和查詢,以協助尋找執行緩慢的查詢。您可以依照本節所述修改 log_statement
和 log_min_duration
參數中的設定來開啟此功能。在針對您的 Aurora PostgreSQL 資料庫叢集 開啟查詢記錄之前,您應該注意到日誌檔中可能暴露密碼,以及如何降低風險。如需詳細資訊,請參閱降低使用查詢記錄時密碼暴露的風險。
接下來,您可以尋找有關 log_statement
和 log_min_duration
參數的參考資訊。
log_statement
此參數指定應該傳送至日誌的 SQL 陳述式類型。預設值為 none
。如果您將此參數變更為 all
、ddl
或 mod
,請務必套用建議的動作,以降低在日誌檔中暴露密碼的風險。如需詳細資訊,請參閱降低使用查詢記錄時密碼暴露的風險。
- 全部
-
記錄所有陳述式。此設定是基於偵錯用途而建議的。
- DDL
-
記錄所有資料定義語言 (DDL) 陳述式,例如 CREATE、ALTER、DROP 等。
- MOD
-
記錄所有 DDL 陳述式和資料操作語言 (DML) 陳述式,例如 INSERT、UPDATE 和 DELETE),這些陳述式會修改資料。
- 無
-
不會記錄任何 SQL 陳述式。建議您使用此設定,以避免在日誌中暴露密碼的風險。
log_min_duration_statement
至少執行指定時間或更長時間的任何 SQL 陳述式都會被記錄下來。根據預設,不會設定此參數。開啟此參數可以協助您尋找未最佳化的查詢。
- –1–2147483647
-
記錄陳述式之執行時間的毫秒數。
設定查詢記錄
這些步驟假設您的 Aurora PostgreSQL 資料庫叢集使用自訂資料庫叢集參數群組。
-
將
log_statement
參數設為all
。下列範例顯示使用此參數設定寫入至postgresql.log
檔案的資訊。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 ----------------------
-
設定
log_min_duration_statement
參數。下列範例說明此參數設定為postgresql.log
時寫入至1
檔案的資訊:系統會記錄超過
log_min_duration_statement
參數中所指定持續時間的查詢。下列顯示一個範例。您可以在 Amazon RDS 主控台中檢視 Aurora PostgreSQL 資料庫叢集的日誌檔。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 ----------------------
降低使用查詢記錄時密碼暴露的風險
建議您保持 log_statement
設定為 none
以避免密碼暴露。如果您將 log_statement
設定為 all
、ddl
或 mod
,建議您採取下列一或多個步驟。
-
對於用戶端,請加密敏感資訊。如需的詳細資訊,請參閱 PostgreSQL 文件中的加密選項
。使用 CREATE
和ALTER
陳述式的ENCRYPTED
(和UNENCRYPTED
) 選項。如需詳細資訊,請參閱 PostgreSQL 文件中的 CREATE USER。 -
對於您的 Aurora 資料庫叢集,請設定並使用 PostgreSQL 稽核 (pgAudit) 擴充功能。此擴充功能會刪減傳送至日誌的 CREATE 和 ALTER 陳述式中的敏感資訊。如需詳細資訊,請參閱用 pgAudit 來記錄資料庫活動。
-
限制對 CloudWatch 日誌的存取。
-
使用更強大的身分驗證機制,例如 IAM。