Các điểm kiểm tra đang xảy ra quá thường xuyên trong pg_restore


14

Trong PostgreSQL 9.2.2 (Windows 32 bit), tôi có một pg_restorelệnh dẫn đến hệ thống cảnh báo nhật ký về tần suất điểm kiểm tra, ví dụ:

LOG:  checkpoints are occurring too frequently (17 seconds apart)
HINT:  Consider increasing the configuration parameter "checkpoint_segments".

Cơ sở dữ liệu có kích thước khoảng 3,3 Gb với 112 bảng / 160 lượt xem và khôi phục trong khoảng 14 phút.

Có phải bình thường cho điều đó xảy ra trong một pg_restore?

Câu trả lời:


17

Không có gì lạ trong quá trình khôi phục toàn bộ DB vì đó là một hoạt động cực kỳ lớn. Nếu bạn thấy điều này trong khi hoạt động bình thường, hãy xem xét việc tăng cài đặt của bạn checkpoint_segmentsvĩnh viễn, giống như gợi ý thông báo lỗi.

Bạn có thể gặp rắc rối khi thiết lập checkpoint_segmentscao hơn ngay trước khi khôi phục và sau đó hạ thấp lại. Đây thậm chí là những gì hướng dẫn sử dụng gợi ý (bao gồm một lời giải thích) :

Tăng tạm thời checkpoint_segmentsbiến cấu hình cũng có thể làm cho tải dữ liệu lớn nhanh hơn. Điều này là do việc tải một lượng lớn dữ liệu vào PostgreSQL sẽ khiến các điểm kiểm tra xảy ra thường xuyên hơn tần số điểm kiểm tra thông thường (được chỉ định bởi checkpoint_timeoutbiến cấu hình). Bất cứ khi nào một điểm kiểm tra xảy ra, tất cả các trang bẩn phải được xóa vào đĩa. Bằng cách tăng checkpoint_segmentstạm thời trong khi tải dữ liệu số lượng lớn, số lượng điểm kiểm tra được yêu cầu có thể được giảm.

Câu trả lời liên quan với nhiều chi tiết hơn:

Hậu 9,5

Bản phát hành mới sắp tới có cách tiếp cận thông minh hơn. Trích dẫn ghi chú phát hành beta :

Thay thế tham số cấu hình checkpoint_segmentsbằng min_wal_sizemax_wal_size(Heikki Linnakangas)

Điều này cho phép phân bổ một số lượng lớn tệp WAL mà không giữ chúng nếu không cần thiết. Do đó, mặc định cho max_wal_size đã được tăng lên 1GB.

Ngoài ra: số lượt xem hầu như không liên quan, những lượt xem không chứa bất kỳ dữ liệu nào, chỉ là "công thức", nghĩa là: truy vấn và một số thuộc tính của chế độ xem. Đối với câu hỏi, về cơ bản, chỉ có tổng kích thước của tệp sao lưu.


Sau khi đặt checkpoint_segments thành 30, không còn thông báo nào trong số này xuất hiện trong nhật ký. Cảm ơn.
Sébastien Clément
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.