我需要查看哪些查詢正在 Amazon Relational Database Service (Amazon RDS) 或 Amazon Aurora PostgreSQL 資料庫執行個體上主動執行。我該如何操作?
解決方案
檢查執行查詢
您的使用者帳戶必須被授與 rds_superuser 角色,才能查看在 RDS for PostgreSQL 或 Aurora PostgreSQL 的資料庫執行個體上執行的所有程序。否則,pg_stat_activity 只會顯示執行其自有程序的查詢。如需詳細資訊,請參閱針對統計資料收集器的 PostgreSQL 文件。
1. 連接到正在執行 PostgreSQL 或 Aurora PostgreSQL 的資料庫執行個體。
2. 執行下列命令:
SELECT * FROM pg_stat_activity ORDER BY pid;
您也可以修改此命令,以檢視建立連線時訂購的執行查詢清單:
SELECT * FROM pg_stat_activity ORDER BY backend_start;
如果資料欄值為 null,則該工作階段沒有開啟任何交易:
SELECT * FROM pg_stat_activity ORDER BY xact_start;
或者,檢視上次執行查詢時所訂購的相同執行查詢清單:
SELECT * FROM pg_stat_activity ORDER BY query_start;
如需等待事件的彙總檢視 (如果有的話),請執行下列命令:
select state, wait_event, wait_event_type, count(*) from pg_stat_activity group by 1,2,3 order by wait_event;
診斷資源使用情況
藉由使用 pg_stat_activity 並啟用增強型監控,您可以識別耗用大量系統資源的查詢 / 程序。啟用增強型監控之後,請確定設定的精細程度足以查看診斷問題所需的資訊。然後,您可以檢查 pg_stat_activity 以查看資料庫中目前的活動和當時的增強型監控指標。
1. 檢視作業系統程序清單指標,以識別耗用資源的查詢。在下列範例中,此程序耗用 RDS 資料庫執行個體上大約 95% 的 CPU 時間。該程序的處理 ID (PID) 是 14431,且該程序正在執行一個 SELECT 陳述式。您還可以透過檢查 MEM% 以查看系統記憶體的使用情況。
| | | | | |
---|
NAME | VIRT | RES | CPU% | MEM% | VMLIMIT |
postgres: master postgres 27.0.3.145(52003) SELECT [14431] | 457.66 MB | 27.7 MB | 95.15 | 2.78 | 無限制 |
2. 連接到正在執行 PostgreSQL 或 Aurora PostgreSQL 的資料庫執行個體。
3. 執行下列命令,以識別工作階段的目前活動:
SELECT * FROM pg_stat_activity WHERE pid = PID;
** 注意:** 用您在步驟 1 中識別的 PID 取代 PID。
4. 檢查命令的結果:
datid | 14008
datname | postgres
pid | 14431
usesysid | 16394
usename | master
application_name | psql
client_addr | 27.0.3.145
client_hostname |
client_port | 52003
backend_start | 2020-03-11 23:08:55.786031+00
xact_start | 2020-03-11 23:12:16.960942+00
query_start | 2020-03-11 23:12:16.960942+00
state_change | 2020-03-11 23:12:16.960945+00
wait_event_type |
wait_event |
state | active
backend_xid |
backend_xmin | 812
query | SELECT COUNT(*) FROM columns c1, columns c2, columns c3, columns c4, columns c5;
backend_type | client backend
若要停止執行查詢的程序,請從另一個工作階段調用下列查詢。請務必將 PID 替換為您在步驟 3 中識別的處理 PID。
SELECT pg_terminate_backend(PID);
**重要事項:**在終止交易之前,請評估每個交易對資料庫和應用程式狀態的潛在影響。
相關資訊
如何針對 Amazon RDS 或 Amazon Aurora PostgreSQL 高 CPU 使用率進行疑難排解?
建立角色
增強型監控
適用於 psql 的 PostgreSQL 文件
適用於 pg_stat_activity 的 PostgreSQL 文件