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.
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.
Câu trả lời:
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ý.
explain analyze
mộ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
Các auto_explain
mô-đ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_explain
trong tài liệu.
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
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.