2015-06-04 69 views
0

我是查詢分析的新手,想了解這個概念實際上的含義。比如我跑EXPLAIN分析一些查詢,並得到了以下行:查詢的初始化時間

-> Sort (cost=816428.39..827478.32 rows=4419971 width=21) 
     (actual time=10780.477..12520.838 rows=4415703 loops=1) 

至於我可以谷歌周圍,在actual time=10780.477..12520.838的第一個數字是指花在初始化的時間,第二個是關於整個時間用於查詢的一部分。

什麼初始化均值和爲什麼需要執行

回答

1

的主要部分:簡短的回答你的問題是,它可能是觸發時間是花時間去找到一個很好的查詢執行計劃+ 等待鎖

:正如PG Documentation給出的,在「實際時間」中提到的兩個數字是:

  • 開始時間:當節點其實已經開始評估毫秒的時間。 (由於您沒有輸出完整的EXPLAIN ANALYSE輸出,因此無法確定這是否是執行計劃中的第一個節點)。現在,如果這是第一個要評估的節點,那麼這一次實際上是等待獲取鎖定所需的時間(如果需要)等等所花費的時間。但是,如果這不是第一個節點執行計劃,這是第一個數據項到達此節點時的第一個毫秒,來自執行計劃中的前一個節點。

  • 停止時間:節點執行實際停止時的時間(以毫秒爲單位)。值得注意的是,第二個數字不是節點花費的時間,而是停止時間。

爲了詳細看看這個EXPLAIN以下分析輸出:

# explain analyse update t set a = 20 where a = 10; 
              QUERY PLAN 
--------------------------------------------------------------------------------------------------- 
Update on t (cost=0.00..40.00 rows=12 width=6) (actual time=5719.955..5719.955 rows=0 loops=1) 
    -> Seq Scan on t (cost=0.00..40.00 rows=12 width=6) (actual time=0.015..0.018 rows=1 loops=1) 
     Filter: (a = 10) 
Total runtime: 5719.985 ms 
(4 rows) 

雖然順序掃描通過非常快的行走,Actualy更新需要時間,因爲其他事務我鎖定該行5 +秒......因此UPDATE行花費超過5000毫秒(5秒)甚至開始執行。