it-swarm-vi.com

Postgres: Làm thế nào tôi có thể thấy tất cả các câu lệnh SQL đang được máy chủ cơ sở dữ liệu thực thi?

Tôi đang trong quá trình xem xét mọi câu lệnh SQL mà một ứng dụng tạo ra đối với cơ sở dữ liệu, vì lý do hiệu năng. Có cách nào dễ dàng để ghi nhật ký tất cả các câu lệnh được thực hiện bởi máy chủ cơ sở dữ liệu PostgreQuery không? Cảm ơn.

23
Jin Kim

Tùy chọn cấu hình bạn đang tìm kiếm là log_statement = "all" (nếu bạn chỉ muốn các câu lệnh) hoặc log_min_statement_duration = <some number> nếu bạn chỉ sau các truy vấn "chậm" (đối với một số giá trị của "chậm"). Xem http://www.postgresql.org/docs/civerse/static/r nb-config-logging.html để biết thêm chi tiết về cấu hình ghi nhật ký.

27
womble

Các auto_explain mô-đun rất hữu ích cho việc này. Nó sẽ không chỉ ghi nhật ký các câu lệnh, nó sẽ ghi lại các kế hoạch thực hiện của chúng và thậm chí có thể ghi lại các câu lệnh chạy trong các hàm PL/PGQuery. Lượt truy cập hiệu suất khá thấp trừ khi bạn kích hoạt phân tích, trong trường hợp đó, bạn phải chịu một chút chi phí thời gian hợp lý cho tất cả các truy vấn.

Xem auto_explain trong tài liệu.

5
Craig Ringer

Tất nhiên, bạn có thể tự mình phát hiện các truy vấn chậm nhất, nhưng tôi khuyên bạn nên sử dụng pgFouine - một công cụ phân tích nhật ký PostgreQuery. Thật dễ dàng để cài đặt và thực sự hữu ích.

Báo cáo mẫu: tại đâytại đây .

3
Severe_admin