2

我是PostgreSQL中的新手。 請幫我找出答案。在PostgreSQL中獲取詳細信息執行查詢

我有一個表

company (
    id bigint primary key, 
    name text, 
    age integer, 
    address character(50), 
    salary real, 
    gender character(1)) 

然後我做簡單的查詢:

select * from company where address='texas' and salary=10000 
select * from company where address='texas' and salary=15000 
select * from company where address='houston' and salary=10000 
select * from company where address='texas' and salary=85000 
select * from company where address='norway' and salary=100 

我如何能得到執行的查詢,如查詢,輸入WHERE的變量和執行總的細​​節時間。所以我可以比較每個執行的查詢,以知道哪種類型的輸入長時間運行。

謝謝

+0

也不是那麼容易設置,但看[pg_stat_statements](https://www.postgresql.org/docs/current/static/pgstatstatements.html)模塊。 – Abelisto

+0

謝謝@Abelisto,我已經使用pg_stat_statement來做到這一點,但是我的導師說沒有這個模塊。也許有另一種方式? 謝謝 –

+0

好的,嘗試使用[Error Reporting and Logging](https://www.postgresql.org/docs/current/static/runtime-config-logging.html),查看參數'log_statement'(Sets記錄的語句的類型)'log_duration'(記錄每個完成的SQL語句的持續時間),'log_min_duration_statement'(設置語句將被記錄的最小執行時間)等等。 – Abelisto

回答

1

當我讀到這聽起來像你正在尋找的查詢執行計劃和執行細節,正確的問題?

如果是這樣,你想看看EXPLAIN的文檔[1]並熟悉它們。

explain沒有選項提供查詢計劃。它實際上並不運行查詢。

explain analyze給你預期VS實際時間(注意它不detoast輸出數據,但是這通常不是一個問題,它實際運行查詢,因爲它將你有你的選擇的分析任何時間。

explain analyze verbose爲您提供了更多的信息。

偶爾指定要緩衝的統計,可以幫助,但,這是一個罕見的極端情況。先從這三個。

另外請注意,您可以配置PostgreSQL的日誌查詢速度慢,這將包括參數或輸入。梳子這兩個問題通常對解決這些問題很重要。

[1] https://www.postgresql.org/docs/9.3/static/sql-explain.html

+0

非常感謝..我已閱讀關於EXPLAIN。通過使用EXPLAIN,我可以看到我的查詢計劃。但這不是我的問題。 如果我的問題不明確,我很抱歉。在我做簡單的選擇後,如上面的帖子,我如何得到每個選擇交易的細節,如查詢,交易時間沒有使用pg_stat_statement?謝謝 - –

+0

在PostgreSQL中沒有真正的方法來做到這一點。這對我來說聽起來像是你遇到了一些查詢緩慢的問題。最好的選擇是將緩慢查詢記錄在特定閾值以上,然後使用解釋來探索爲什麼這些緩慢。我想你可以跟蹤客戶端的時間,然後做一些客戶端日誌記錄。 –

+0

那麼,非常感謝你的解釋。 :) –