如果查詢長時間沒有返回結果,則需要確認查詢是否處于鎖等待狀態。AnalyticDB PostgreSQL版新增鎖診斷功能,幫助您快速診斷數據庫中的鎖情況。
前提條件
- 實例資源類型為存儲彈性模式。
- 引擎版本為6.0。
操作步驟
處理方法
如果查詢長時間未返回結果且鎖診斷頁面顯示查詢狀態為鎖等待,您可以選擇等待之前的查詢完成后系統自動執行您的查詢任務,也可以結束造成阻塞的查詢任務。
您可以取消(Cancel)或結束(Kill)造成阻塞的查詢,方法如下。
說明 只有高權限(superuser權限)賬號才能取消或結束查詢。
- 取消查詢
查詢所屬的會話必須在運行中狀態才能取消該查詢,取消查詢后數據庫需要花費一定的時間來做清理和事務的回滾。取消查詢語句如下:
SELECT pg_cancel_backend(<進程ID>);
如果會話已經處于空閑(Idle)狀態,則需要使用結束查詢的方法。
- 結束查詢
結束查詢語句如下:
SELECT pg_terminate_backend(<進程ID>);
相關文檔
AnalyticDB PostgreSQL版還支持通過pg_stat_activity視圖查看SQL的運行信息,詳細信息,請參見通過pg_stat_activity分析診斷正在執行的SQL。
相關API
API | 說明 |
---|---|
DescribeWaitingSQLRecords | 獲取鎖診斷列表。 |
DescribeWaitingSQLInfo | 獲取鎖診斷詳細信息。 |