PostgreSQL: soi kèo bóng đá truoctran liệu: | |||
---|---|---|---|
prev | UP | Chương 13. cách đọc kèo bóng đá soát đồng thời | Tiếp theo |
Rất khó để thực thi các quy tắc kinh doanh liên quan đến tính toàn vẹn dữ liệu bằng cách sử cách đọc kèo bóng đá các giao dịch đã cam kết vì quan điểm của dữ liệu đang thay đổi theo từng tuyên bố và thậm chí một câu lệnh duy nhất có thể không giới hạn trong ảnh chụp nhanh của câu lệnh nếu xung đột ghi.
Trong khi giao dịch đọc lặp lại có cái nhìn ổn định về dữ liệu trong suốt quá trình thực hiện của nó, có một vấn đề tinh tế khi sử cách đọc kèo bóng đáMVCCẢnh chụp nhanh cho kiểm tra tính nhất quán của dữ cách đọc kèo bóng đá, liên quan đến một cái gì đó được gọi làđọc/ghi xung đột. Nếu một giao dịch ghi dữ cách đọc kèo bóng đá và giao dịch đồng thời cố gắng đọc cùng một dữ cách đọc kèo bóng đá (dù trước hoặc sau khi ghi), nó không thể thấy công việc của giao dịch khác.
Như đã đề cập trongPhần 13.2.3, Các giao dịch có thể nối tiếp chỉ là các giao dịch đọc lặp lại để thêm giám sát không chặn cho các mẫu xung đột đọc/ghi nguy hiểm. Khi một mẫu được phát hiện có thể gây ra một chu kỳ theo thứ tự thực thi rõ ràng, một trong các giao dịch liên quan sẽ được quay lại để phá vỡ chu kỳ.
Nếu mức cách ly giao dịch có thể nối tiếp được sử cách đọc kèo bóng đá cho tất cả các ghi và cho tất cả các lần đọc cần một cái nhìn nhất quán về dữ liệu, không cần nỗ lực nào khác để đảm bảo tính nhất quán. Phần mềm từ các môi trường khác được viết để sử cách đọc kèo bóng đá các giao dịch có thể nối tiếp để đảm bảo tính nhất quán nên"Chỉ làm việc"Về vấn đề này trongPostgreSQL.
Khi sử cách đọc kèo bóng đá kỹ thuật này, nó sẽ tránh tạo ra một gánh nặng không cần thiết cho các lập trình viên ứng cách đọc kèo bóng đá nếu phần mềm ứng cách đọc kèo bóng đá đi qua một khung tự động thử lại các giao dịch được thực hiện lại với lỗi tuần tự hóa. Nó có thể là một ý tưởng tốt để thiết lậpdefault_transaction_isolationđếnserializable. Cũng sẽ là khôn ngoan khi thực hiện một số hành động để đảm bảo rằng không sử cách đọc kèo bóng đá mức độ phân lập giao dịch nào khác, vô tình hoặc để lật đổ kiểm tra tính toàn vẹn, thông qua việc kiểm tra mức cách ly giao dịch trong các kích hoạt.
xemPhần 13.2.3Đối với đề xuất hiệu suất.
CẢNH BÁO |
Mức độ bảo vệ toàn vẹn này bằng cách sử cách đọc kèo bóng đá các giao dịch có thể nối tiếp chưa mở rộng đến chế độ chờ nóng (Phần 25.5). Do đó, những người sử cách đọc kèo bóng đá chế độ chờ nóng có thể muốn sử cách đọc kèo bóng đá khóa đọc và khóa rõ ràng có thể lặp lại trên chủ. |
Khi có thể ghi không thể sử cách đọc kèo bóng đá được, để đảm bảo tính hợp lệ hiện tại của một hàng và bảo vệ nó chống lại các bản cập nhật đồng thời người ta phải sử cách đọc kèo bóng đáChọn để cập nhật, Chọn để chia sẻhoặc thích hợpBảng khóaTuyên bố. (Chọn để cập nhậtvàChọn chia sẻKhóa chỉ các hàng được trả về so với các bản cập nhật đồng thời, trong khiBảng khóaKhóa toàn bộ bảng.) Điều này nên được tính đến khi chuyển các ứng cách đọc kèo bóng đá thànhPostgreSQLTừ các môi trường khác.
Cũng cần lưu ý cho những người chuyển đổi từ các môi trường khác là thực tế làChọn để cập nhậtKhông đảm bảo rằng một giao dịch đồng thời sẽ không cập nhật hoặc xóa một hàng đã chọn. Để làm điều đó trongPostgreSQLBạn thực sự phải cập nhật hàng, ngay cả khi không cần thay đổi giá trị.Chọn để cập nhật khối tạm thờiCác giao dịch khác có được cùng một khóa hoặc thực hiện mộtCập nhậthoặcXóasẽ ảnh hưởng đến hàng bị khóa, nhưng một khi giao dịch giữ khóa này cam kết hoặc quay lại, một giao dịch bị chặn sẽ tiến hành hoạt động mâu thuẫn trừ khi thực tếCập nhậtcủa hàng đã được thực hiện trong khi khóa được giữ.
Kiểm tra cách đọc kèo bóng đá hợp lệ toàn cầu đòi hỏi phải suy nghĩ thêm theo không thể tự động hóaMVCC. Ví dụ, một ứng cách đọc kèo bóng đá ngân hàng có thể muốn kiểm tra xem tổng của tất cả các khoản tín cách đọc kèo bóng đá trong một bảng bằng tổng số các khoản ghi nợ trong một bảng khác, khi cả hai bảng đang được cập nhật tích cực.Chọn Sum (...)Các lệnh sẽ không hoạt động một cách đáng tin cậy trong chế độ đã cam kết đọc, vì truy vấn thứ hai có thể sẽ bao gồm kết quả của các giao dịch không được tính bởi đầu tiên. Thực hiện hai khoản tiền trong một giao dịch đọc lặp lại sẽ đưa ra một bức tranh chính xác chỉ về các tác động của các giao dịch đã thực hiện trước khi giao dịch đọc lặp lại bắt đầu - nhưng người ta có thể tự hỏi một cách hợp pháp cách đọc kèo bóng đá câu trả lời vẫn có liên quan vào thời điểm nó được gửi.chia sẻKhóa chế độ (hoặc cao hơn) đảm bảo rằng không có thay đổi nào trong bảng bị khóa, ngoài những thay đổi của giao dịch hiện tại.
cũng lưu ý rằng nếu một người đang dựa vào khóa rõ ràng để ngăn chặn các thay đổi đồng thời, người ta nên sử cách đọc kèo bóng đá chế độ đọc đã cam kết hoặc trong chế độ đọc lặp lại hãy cẩn thận để có được khóa trước khi thực hiện truy vấn. Một khóa thu được từ một giao dịch đọc lặp lại đảm bảo rằng không có giao dịch nào khác sửa đổi bảng vẫn đang chạy, nhưng nếu ảnh chụp nhanh được thấy trước giao dịch có được khóa, nó có thể có một số thay đổi hiện có trong bảng.Chọn, Chèn, Cập nhậthoặcXóa), vì vậy có thể có được các khóa một cách rõ ràng trước khi ảnh chụp nhanh bị đóng băng.