Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
Tài soi kèo bóng đá truoctran này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

13.4. Kiểm tra tính nhất quán dữ liệu tại Cấp độ ứng soi kèo bóng đá truoctran

Rất khó để thực thi các quy tắc kinh doanh liên quan đến dữ liệu tính toàn vẹn bằng cách sử soi kèo bóng đá truoctran các giao dịch đã cam kết đọc vì quan điểm của dữ liệu đang thay đổi theo từng câu và thậm chí một câu lệnh duy nhất có thể không tự giới hạn trong ảnh chụp nhanh của câu lệnh nếu ghi Xung đột xảy ra.

Trong khi giao dịch đọc lặp lại có cái nhìn ổn định về dữ liệu trong quá trình thực hiện của nó, có một vấn đề tinh tế khi sử soi kèo bóng đá truoctranMVCCẢnh chụp nhanh cho dữ soi kèo bóng đá truoctran Kiểm tra tính nhất quán, liên quan đến một cái gì đó được gọi làĐọc/ghi xung đột. Nếu một giao dịch viết dữ soi kèo bóng đá truoctran và giao dịch đồng thời cố gắng đọc cùng một dữ soi kèo bóng đá truoctran (dù trước hay sau khi viết), nó không thể thấy công việc của giao dịch khác. Người đọc sau đó dường như đã thực hiện trước tiên Bất kể trong số đó bắt đầu đầu tiên hoặc cam kết đầu tiên. Nếu điều đó xa như nó đi, không có vấn đề gì, nhưng nếu người đọc cũng ghi dữ soi kèo bóng đá truoctran được đọc bởi một giao dịch đồng thời hiện có một giao dịch dường như đã chạy trước khi Các giao dịch được đề cập trước đây. Nếu giao dịch xuất hiện Để thực hiện cuối cùng thực sự cam kết đầu tiên, nó rất dễ dàng cho một chu kỳ xuất hiện trong biểu đồ của thứ tự thực hiện giao dịch. Khi một chu kỳ như vậy xuất hiện, kiểm tra tính toàn vẹn sẽ không làm việc chính xác mà không cần trợ giúp.

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 trong đó thêm giám sát không chặn cho các mẫu nguy hiểm của Đọc/viết xung đột. Khi một mô hình đượ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 được quay lại để phá vỡ chu kỳ.

13.4.1. Thực thi soi kèo bóng đá truoctran nhất quán với Giao dịch có thể nối tiếp

Nếu mức cách ly giao dịch có thể nối tiếp được sử soi kèo bóng đá truoctran cho tất 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 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ử soi kèo bóng đá truoctran serializable giao dịch để đảm bảo tính nhất quán nên"Chỉ công việc"Về vấn đề này trongPostgreSQL.

14059_14336default_transaction_isolationđếnserializable. Nó cũng sẽ là khôn ngoan để thực hiện một số hành động để đảm bảo rằng không có sự cô lập giao dịch khác Cấp độ được sử soi kèo bóng đá truoctran, vô tình hoặc để lật đổ kiểm tra tính toàn vẹn, thông qua 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ử soi kèo bóng đá truoctran serializable Giao dịch chưa mở rộng đến chế độ chờ nóng (Phần 25.5). Vì điều đó, những người đang sử soi kèo bóng đá truoctran Chờ nóng có thể muốn sử soi kèo bóng đá truoctran khóa đọc và khóa rõ ràng có thể lặp lại Master.

13.4.2. Thực thi soi kèo bóng đá truoctran nhất quán với Khóa chặn rõ ràng

15398_15538Chọ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ậtChọn chia sẻkhóa Chỉ các hàng đã trả lại 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 được tính đến khi chuyển các ứng soi kèo bóng đá truoctran sangPostgreSQLTừ 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ật16159_16264PostgreSQLBạn thực sự phải cập nhật hàng, ngay cả khi không có giá trị cần thay đổi.Chọn Để cập nhật tạm thời khố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óa16614_16801Cập nhậtcủa hàng đã được thực hiện Trong khi khóa được giữ.

Kiểm tra tính hợp lệ toàn cầu đòi hỏi phải suy nghĩ thêm không thể sử soi kèo bóng đá truoctran đượcMVCC. Vì Ví dụ, một ứng soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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. So sánh kết quả của hai liên tiếpChọn Sum (...)17261_18087chia sẻKhóa chế độ (hoặc cao hơn) đảm bảo rằng ở đó không phải là những thay đổi không được cam kết trong bảng bị khóa, ngoài những thay đổi của giao dịch hiện tại.

Lưu ý rằng nếu một người đang dựa vào khóa rõ ràng để ngăn chặn thay đổi đồng thời, người ta nên sử soi kèo bóng đá truoctran chế độ đã đọc hoặc trong chế độ đọc lặp lại, hãy cẩn thận để có được ổ khóa trước thực hiện truy vấn. Một khóa có được bằng cách đọc lặp lại giao dịch đả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 nhìn thấy bởi giao dịch trước khi có được khóa, nó có thể có trước một số Những thay đổi hiện có cam kết trong bảng. Một giao dịch đọc lặp lại ảnh chụp nhanh thực sự bị đóng băng khi bắt đầu truy vấn đầu tiên hoặc Lệnh sửa đổi dữ liệu (Chọn, Chèn, Cập nhật,, hoặcXóa), vì vậy có thể có được Khóa một cách rõ ràng trước khi ảnh chụp nhanh bị đóng băng.