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