Cam kết cách đọc kèo bóng đá bộlà một tùy chọn cho phép các giao dịch hoàn thành nhanh hơn, với chi phí các giao dịch gần đây nhất có thể bị mất nếu cơ sở dữ liệu sẽ bị sập. Trong nhiều ứng dụng, đây là một sự đánh đổi có thể chấp nhận được.
Như được mô tả trong phần trước, cách đọc kèo bóng đá giao dịch thường làĐồng bộ: Máy chủ chờ giao dịchWal10394_10876WalHồ sơ được tạo ra đã thực sự tìm đường đến đĩa. Điều này có thể cung cấp một sự thúc đẩy đáng kể về thông lượng cho các giao dịch nhỏ.
Cam kết cách đọc kèo bóng đá bộ giới thiệu rủi ro mất dữ liệu. Có một cửa sổ thời gian ngắn giữa báo cáo hoàn thành giao dịch cho khách hàng và thời gian giao dịch thực sự được thực hiện (nghĩa là, nó được đảm bảo sẽ không bị mất nếu máy chủ gặp sự cố). Do đó, cam kết cách đọc kèo bóng đá bộ không nên được sử dụng nếu khách hàng sẽ thực hiện các hành động bên ngoài dựa vào giả định rằng giao dịch sẽ được ghi nhớ. Ví dụ, một ngân hàng chắc chắn sẽ không sử dụng cam kết cách đọc kèo bóng đá bộ cho một giao dịch ghi lại việc phân phối tiền mặt của ATM. Nhưng trong nhiều tình huống, chẳng hạn như ghi nhật ký sự kiện, không cần phải đảm bảo mạnh mẽ cho loại này.
Rủi ro được thực hiện bằng cách sử dụng cam kết cách đọc kèo bóng đá bộ là mất dữ liệu, không tham nhũng dữ liệu. Nếu cơ sở dữ liệu sẽ bị sập, nó sẽ phục hồi bằng cách phát lạiWallên đến bản ghi cuối cùng đã được xóa. Do đó, cơ sở dữ liệu sẽ được khôi phục về trạng thái tự đồng nhất, nhưng bất kỳ giao dịch nào chưa được chuyển sang đĩa sẽ cách đọc kèo bóng đá được phản ánh ở trạng thái đó. Do đó, hiệu ứng ròng là mất vài giao dịch cuối cùng. Do các giao dịch được phát lại theo thứ tự cam kết, cách đọc kèo bóng đá có sự cách đọc kèo bóng đá nhất quán nào có thể được đưa ra - ví dụ, nếu giao dịch B thực hiện các thay đổi dựa trên các tác động của giao dịch A trước đó, cách đọc kèo bóng đá thể mất hiệu ứng của A trong khi các hiệu ứng của B được bảo tồn.
Người dùng có thể chọn chế độ cam kết của mỗi giao dịch, để có thể có cả giao dịch cam kết đồng bộ và cách đọc kèo bóng đá bộ đồng thời. Điều này cho phép sự đánh đổi linh hoạt giữa hiệu suất và sự chắc chắn về độ bền của giao dịch. Chế độ cam kết được điều khiển bởi tham số có thể xử lý người dùngsynchronous_commit, có thể được thay đổi theo bất kỳ cách đọc kèo bóng đá nào mà tham số cấu hình có thể được đặt. Chế độ được sử dụng cho bất kỳ một giao dịch nào phụ thuộc vào giá trị củasynchronous_commit
Khi bắt đầu cách đọc kèo bóng đá giao dịch.
Ví dụ, các lệnh tiện ích nhất địnhBẢNG DROP
, buộc phải cách đọc kèo bóng đá đồng bộ bất kể cài đặt củasynchronous_commit
. Điều này là để đảm bảo tính nhất quán giữa hệ thống tệp của máy chủ và trạng thái logic của cơ sở dữ liệu. Các lệnh hỗ trợ cách đọc kèo bóng đá hai pha, chẳng hạn nhưChuẩn bị giao dịch
, cũng luôn đồng bộ.
13496_13613Walbản ghi, sau đó thay đổi được thực hiện trong giao dịch đóWillbị mất. Thời lượng của cửa sổ rủi ro bị giới hạn vì quy trình nền (WAL Writer) Flushes UnwrittenWalbản ghi vào đĩa mỗiwal_writer_delaymili giây. Thời lượng tối đa thực tế của cửa sổ rủi ro là ba lầnwal_writer_delay
Bởi vì người viết Wal được thiết kế để ủng hộ việc viết toàn bộ trang tại một thời điểm trong thời gian bận rộn.
Tắt máy ngay lập tức tương đương với sự cố máy chủ và do đó sẽ gây ra mất bất kỳ cam kết cách đọc kèo bóng đá bộ nào.
Cam kết cách đọc kèo bóng đá bộ cung cấp hành vi khác với cài đặtfsync= TẮT.fsync
là cài đặt toàn bộ máy chủ sẽ thay đổi hành vi của tất cả các giao dịch. Nó vô hiệu hóa tất cả logic trongPostgreSQLcố gắng đồng bộ hóa việc ghi vào các phần khác nhau của cơ sở dữ liệu và do đó, sự cố hệ thống (nghĩa là sự cố phần cứng hoặc hệ điều hành, cách đọc kèo bóng đá phải là lỗi củaPostgreSQLchính nó) có thể dẫn đến tham nhũng xấu tùy ý của trạng thái cơ sở dữ liệu. Trong nhiều tình huống, cam kết cách đọc kèo bóng đá bộ cung cấp hầu hết các cải tiến hiệu suất có thể có được bằng cách tắtfsync
, nhưng cách đọc kèo bóng đá có nguy cơ tham nhũng dữ liệu.
cam kết_delayCũng có vẻ rất giống với cam kết cách đọc kèo bóng đá bộ, nhưng nó thực sự là một phương pháp cam kết đồng bộ (trên thực tế,cam kết_delay
bị bỏ qua trong một cam kết cách đọc kèo bóng đá bộ).cam kết_delay
gây ra sự chậm trễ ngay trước khi giao dịch xảWalvới đĩa, với hy vọng rằng một lần xả duy nhất được thực hiện bởi một giao dịch như vậy cũng có thể phục vụ các giao dịch khác thực hiện cùng một lúc. Cài đặt có thể được coi là một cách đọc kèo bóng đá để tăng cửa sổ thời gian trong đó các giao dịch có thể tham gia một nhóm sắp tham gia vào một lần xả, để khấu hao chi phí cho việc tuôn ra giữa nhiều giao dịch.