Tác động hiệu năng của việc thiết lập PostgreSQL để ghi nhật ký tất cả các báo cáo


8

PostgreQuery 9.2.2 trên Windows 7 64 bit.

Cài đặt log_statementtrong postgresql.conftệp chỉ định những câu lệnh nào cần ghi (không có, DDL, sửa đổi dữ liệu hoặc tất cả). Ở mức độ nào để thiết lập log_statement = 'all'hiệu suất suy giảm? Tôi đã đọc được rằng điều này làm giảm đáng kể hiệu suất, nhưng những tuyên bố này đến từ các bài viết cũ hơn, vì vậy tôi sẽ mất bao nhiêu cho hiệu suất log_statement = 'none'?

Câu trả lời:


12

Giống như hầu hết mọi thứ khác, nó phụ thuộc vào phần cứng, cấu hình và khối lượng công việc của bạn.

Nếu bạn đang chạy một vài báo cáo đắt tiền, nó sẽ tạo ra một chút khác biệt; nếu bạn đang chạy nhiều câu lệnh đơn giản nhỏ, nó sẽ tạo ra nhiều sự khác biệt.

Nếu nhật ký của bạn nằm trên cùng một hệ thống tệp hoặc thậm chí chỉ cùng một đĩa với cơ sở dữ liệu, việc ghi nhật ký sẽ tạo ra nhiều sự khác biệt so với nếu nhật ký được lưu trữ trên một đĩa riêng biệt. Mặc dù các nhật ký không rõ ràng fsync()và được viết tuần tự, chúng vẫn cạnh tranh với DB chính cho I / O.

Quan trọng hơn, một số hệ thống tệp (cụ thể là ext3) sẽ xóa tất cả dữ liệu khi có bất kỳ tệp nào fsync(), vì vậy nhật ký ghi trở nên gần với I / O ngẫu nhiên hơn I / O tuần tự và làm chậm mọi cam kết. IIRC đây không phải là vấn đề trên ext4 hoặc xfs.

Nó cũng sẽ phụ thuộc vào việc bạn có bật thời gian sao kê hay không, phương thức ghi nhật ký bạn đang sử dụng và hơn thế nữa.

Tùy chọn tốt nhất là điểm chuẩn nó với một mô phỏng khối lượng công việc thực sự của bạn và xem.


Đăng nhập vào stderr dưới dạng tệp văn bản đơn giản trên cùng một đĩa. Thời gian báo cáo bị vô hiệu hóa. Trình thu thập nhật ký được kích hoạt. Máy chủ đôi khi phải chịu các truy vấn thường xuyên, phức tạp vừa phải.
bwDraco

@DragonLord: thời gian tuyên bố tạo ra sự khác biệt lớn. cho tải CPU.
Erwin Brandstetter
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.