Postgresql
pgAdmin 是否增加了查詢時間成本?
我剛剛寫了一個很長的問題,關於我做了什麼來優化一個相當簡單的查詢,這個查詢花費的時間比我希望的要長得多。我一直在向 pgAdmin 查詢。然後我使查詢變得越來越簡單,直到我最終查詢了一個新創建的表的主鍵,其中只有 1 行。
create table perf_test (id bigint primary key);
然後查詢:
select count(t.id) from perf_test t where t.id = 1 ;
消息輸出是:
Successfully run. Total query runtime: 66 msec. 1 rows affected.
我需要優化從我的應用程序發出時通常需要大約 30-40 毫秒的查詢。如果 pgAdmin 中的執行時間對於所有最簡單的查詢來說已經高得多,我該如何試驗和測量性能?
是的,pgAdmin 增加了很多延遲成本。我很驚訝你甚至可以將它降低到 66 毫秒。
答案很簡單,不要將 pgAdmin 用於這樣的事情。
要嘗試找出查詢緩慢的原因,您應該
EXPLAIN (ANALYZE, BUFFERS)
在查詢上使用。pgAdmin 確實提供了一種方法來做到這一點,但 IME 比僅僅通過psql
或使用 auto_explain 將計劃擷取到日誌文件中更糟糕。
您正在查看錯誤的指標。
總查詢執行時間:66 毫秒。
pgAdmin 中的這份簡歷包括網路延遲和客戶端成本。用於
EXPLAIN (ANALYZE, BUFFERS)
詳細的查詢計劃和EXPLAIN (ANALYZE, TIMING OFF)
最短時間。客戶端對於這個指標完全無關緊要,您可以從伺服器獲得時間,而無需網路延遲和客戶端成本。看: