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?


23

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.


Trong phần giải thích sau đây được giải thích về cách xem hướng dẫn
tạidaba.com/2016

Câu trả lời:


27

Tùy chọn cấu hình mà 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ý.


1
Ghi nhật ký tất cả các báo cáo là một kẻ giết người hiệu suất (như đã nêu trong các tài liệu chính thức). Tuy nhiên, 8.4 có một tính năng hay là nhận được explain analyzemột truy vấn chậm tại cà vạt được thực hiện, bạn có thể muốn bắt đầu thử nghiệm với điều này vì 8.4 chưa được phát hành nhưng đó là một lựa chọn tốt để biết rằng tại thời điểm thực hiện , nếu đầu ra giải thích phân tích là OK, có lẽ bạn đang gặp vấn đề với giới hạn I / O hoặc CPU, nhưng ít nhất bạn sẽ biết đó không phải là chính truy vấn
dị

5
Tôi thực sự thích tùy chọn log_statement = 'mod'. Nó chỉ hiển thị tạo, cập nhật và xóa và bỏ qua tất cả các câu lệnh được chọn. Tuyệt vời nếu bạn đang cố gắng tìm ra mã nào đang điều chỉnh một số trường.
Don Kirkby

5

Các auto_explainmô-đun là 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_explaintrong tài liệu.


Lưu ý rằng "auto_explain" là một mô-đun, do đó, nó không chạy trên cơ sở dữ liệu AWS RDS Postgres :(
johntellsall

1
@johntellsall RDS hỗ trợ auto_explain, nó nằm trong danh sách các mô-đun may mắn của họ. Xem tài liệu tại docs.aws.amazon.com/AmazonRDS/latest/UserGuide/ mẹo
Craig Ringer

3

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: ở đâyở đây .


Tôi đã sử dụng pgFouine trong một dự án và xác định một số nơi mà một chỉ mục sẽ giúp mọi thứ rất nhiều.
Paul Tomblin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.