2010-03-12 36 views
56

Tôi cần xem các truy vấn được gửi đến máy chủ PostgreSQL. Thông thường tôi sẽ sử dụng SQL Server profiler để thực hiện hành động này trong SQL Server land, nhưng tôi vẫn chưa tìm cách làm điều này trong PostgreSQL. Dường như có khá nhiều công cụ trả tiền, tôi hy vọng có một biến thể nguồn mở.Có một PostgreSQL tương đương với SQL Server profiler không?

Trả lời

47

Bạn có thể sử dụng cài đặt log_statement cấu hình để có được danh sách tất cả các truy vấn đến một máy chủ

https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement

Chỉ cần đặt trước, và đường dẫn tập tin đăng nhập và bạn sẽ có danh sách. Bạn cũng có thể cấu hình nó để chỉ ghi lại các truy vấn chạy dài.

Sau đó, bạn có thể thực hiện các truy vấn đó và chạy EXPLAIN trên chúng để tìm hiểu điều gì đang xảy ra với chúng.

http://www.designmagick.com/article/23/Using-Explain/Using-Explain/page/2

+1

hoàn hảo, ném một cái đuôi -f chống lại nó – BozoJoe

27

Thêm vào câu trả lời của Giô-suê, để xem which queries are currently running chỉ đơn giản là đưa ra các tuyên bố sau bất cứ lúc nào (ví dụ như trong cửa sổ truy vấn PGAdminIII của):

SELECT datname,procpid,current_query FROM pg_stat_activity; 

Mẫu đầu ra:

 datname | procpid | current_query 
---------------+---------+--------------- 
    mydatabaseabc | 2587 | <IDLE> 
    anotherdb  | 15726 | SELECT * FROM users WHERE id=123 ; 
    mydatabaseabc | 15851 | <IDLE> 
(3 rows) 
+2

Với phiên bản của tôi về PG (9,3), tôi sử dụng các truy vấn sau đây: SELECT datname, pid, usename, application_name, client_addr, truy vấn FROM pg_stat_activity; pg_stat_activity là dạng xem của 'postgresql' của DB ' – mrmuggles

+1

SELECT client_addr, state_change, truy vấn FROM pg_stat_activity; – Dmitry

21

Tôi phát hiện ra pgBadger (http://dalibo.github.io/pgbadger/) và nó là một công cụ tuyệt vời đã cứu mạng tôi nhiều lần. Dưới đây là ví dụ về báo cáo: http://dalibo.github.io/pgbadger/samplev4.html. Nếu bạn mở nó và đi đến trình đơn 'top' bạn có thể thấy các truy vấn chậm nhất và các truy vấn tốn thời gian. Sau đó, bạn có thể hỏi chi tiết và xem biểu đồ đẹp hiển thị cho bạn các truy vấn theo giờ và nếu bạn sử dụng nút chi tiết, bạn có thể thấy văn bản SQL ở dạng đẹp. Vì vậy, tôi có thể thấy rằng công cụ này hoàn toàn miễn phí và hoàn hảo.

+1

Công cụ đẹp mắt. Tôi đã sử dụng hướng dẫn này để cài đặt nó, vì tài liệu chính thức khá chi tiết: https://www.dhis2.org/analysing-postgresql-logs-using-pgbadger – mrmuggles

+0

Chỉ cần lưu ý rằng công cụ này chỉ dành cho các hệ thống * nix, mà hút cho người dùng Windows –

0

Thêm vào câu trả lời vladr của của Giô-suê và

Nó làm việc cho tôi:

mở postgresql.conf

Set:

log_statement = 'mod'

log_min_messages = debug2

Mở nhật ký cuối cùng t thư mục C: \ Program Files \ PostgreSQL \ 9.6 \ data \ pg_log \

Các truy vấn sẽ có ở đó.

tôi sử dụng postgresql-9.6.5-1

Các vấn đề liên quan