1、等待事件概述
?
等待事件:指當數據庫會話(session)因資源競爭或依賴無法繼續執行時,進入"等待"狀態,此時產生的性能事件即等待事件。
2、等待事件本質
性能瓶頸的信號燈,反映CPU,I/O、鎖、網絡等關鍵資源的阻塞情況。當系統存在阻塞時,優先通地等待事件分析瓶頸點。
3、 常見等待事件
常見等待事情如下表:
等待事件???????? | 解釋 |
STATUS(WAIT CMD) | 等待應用側發數據,表示此內核session正在等待用戶發送數據???????????????? |
STATUS(none) | 正在執行過程中,未在某個events產生較多耗時,此狀態下內核側從events來看無明顯瓶頸 |
IO_EVENT(LOGCTRL_SLEEP) | 數據庫發生限流,為了保障數據庫的RTO,數據庫本身具備流控的能力(受recovery_time_target控制);在壓力測試的時候,性能壓制較為明顯。 |
STATUS(wait node)? ? ? ? ? ? ? ? ? ? ? ? | 表示當前Query正在等待其他結點返回,通常如果多數查詢在等待某個節點。 |
STATUS(wait wal sync) | 等待wal日志同步,通常表示事務提交等待備機日志下盤。 |
STATUS(flush data) | 網絡數據發送 |
STATUS(Sort/Sort-fetch tuple/Sort-write file) | 分別表示正在執行sort算子,獲取sort元組,sort下盤操作,其它算子Material/HashJoin/HashAgg等類似 |
IO_EVENT(DataFileRead/ DataFileWrite) | IO異常使用 |
LOCK_EVENT(tuple/transactionid) | 通常大量出現這兩個等件事件,業務極大可能出來并發更新,出現整體業務阻塞 |
詳細的其它等待事件看:
PG_THREAD_WAIT_STATUS_系統視圖_系統表和系統視圖_開發指南(集中式_V2.0-3.x)_云數據庫 GaussDB-華為云????????
4、查詢等待事件視圖:
- dbe_perf.wait_events、dbe_perf.global_wait_events
- statement_history表detail字段
- pgxc_thread_wait_status(實時-分布式)、pg_thread_wait_status(實時-集中式)、
- gs_asp、dbe_perf.local_active_session(歷史)
5、等待事件優化流程
?
??
?
6、批注
? ? ?等待事件是我們分析性能問題的重要手段,在實際生產環境性能調優非常的有用。
?