2011-12-21 38 views
19

Tôi muốn theo dõi các truy vấn được gửi đến cơ sở dữ liệu của tôi từ một ứng dụng. Để kết thúc, tôi đã tìm thấy pg_stat_activity, nhưng thường thì không, các hàng được trả về đã đọc "trong giao dịch". Tôi đang làm một cái gì đó sai, không đủ nhanh để xem các truy vấn đi qua, bối rối, hoặc tất cả những điều trên!Ứng dụng để theo dõi các truy vấn PostgreSQL trong thời gian thực?

Ai đó có thể đề xuất cách chống idiot nhất để theo dõi các truy vấn chạy với PostgreSQL? Tôi muốn một số loại giải pháp dựa trên giao diện người dùng dễ sử dụng (ví dụ: "Profiler" của SQL Server), nhưng tôi không quá chọn lựa.

Trả lời

15

Với PostgreSQL 8.4 hoặc cao hơn, bạn có thể sử dụng các mô-đun contrib để thu thập thống kê thực hiện truy vấn của máy chủ cơ sở dữ liệu.

Chạy kịch bản SQL của module contrib này pg_stat_statements.sql (trên ubuntu nó có thể được tìm thấy trong /usr/share/postgresql/<version>/contrib) trong cơ sở dữ liệu của bạn và thêm cấu hình mẫu này để bạn postgresql.conf (yêu cầu tái khởi động):

custom_variable_classes = 'pg_stat_statements' 
pg_stat_statements.max = 1000 
pg_stat_statements.track = top # top,all,none 
pg_stat_statements.save = off 

Để xem những truy vấn nào được thực hiện trong thời gian thực bạn có thể chỉ cần cấu hình nhật ký máy chủ để hiển thị tất cả truy vấn hoặc truy vấn với thời gian thực hiện tối thiểu. Để làm như vậy, hãy đặt số logging configuration parameterslog_statementlog_min_duration_statement trong tệp postgresql.conf của bạn.

+0

Trong khi đó là một câu trả lời tốt, nó không bao gồm cách người ta có thể thu thập dữ liệu từ pg_stat_statements, bởi vì nó bao giờ thay đổi và chỉ có số liệu thống kê tích luỹ về việc thực hiện truy vấn. Cho rằng bạn có thể sử dụng một số công cụ như https://pganalyze.com/ hoặc https://okmeter.io sẽ hiển thị cho bạn các biểu đồ và thông tin chi tiết về việc thực hiện truy vấn và hiệu suất. Disclaimer - Tôi làm việc cho okmeter. –

0

Tôi chưa thử bản thân mình, nhưng tôi nghĩ rằng pgFouine có thể hiển thị cho bạn một số thống kê.

Mặc dù, có vẻ như nó không hiển thị cho bạn truy vấn trong thời gian thực, nhưng thay vào đó tạo báo cáo truy vấn sau đó, có lẽ nó vẫn đáp ứng nhu cầu của bạn?

Bạn có thể có một cái nhìn tại http://pgfouine.projects.postgresql.org/

22

PgAdmin cung cấp một công cụ gọi là màn hình máy chủ khá dễ sử dụng

(Tools -> ServerStatus)

+4

Công cụ này dường như đã biến mất trong PgAdmin 4. – Lasf

+0

@Lasf - Đồng ý ... bất kỳ ý tưởng tại sao điều này đã biến mất? –

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