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
Tài liệu này dành cho phiên bản không được hỗ trợ của tỷ lệ kèo bóng đá.
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ế.

48.5. Chỉ mục tỷ lệ kèo bóng đá duy nhất

tỷ lệ kèo bóng đáThực thi SQL Các ràng buộc tỷ lệ kèo bóng đá độc đáo bằng cách sử dụngĐộc đáo chỉ tỷ lệ kèo bóng đá, là những chỉ mục không cho phép nhiều mục với các khóa giống hệt nhau. Một phương thức truy cập hỗ trợ tỷ lệ kèo bóng đá năng này đặtpg_am.AmcanuniqueĐúng. (Hiện tại, chỉ có B-Tree hỗ trợ nó.)

Vì MVCC, luôn luôn cần phải cho phép trùng lặp Các mục nhập tồn tại về mặt vật lý trong một chỉ mục: các mục có thể tham khảo đến các phiên bản liên tiếp của một hàng logic duy nhất. Hành vi chúng tôi thực sự muốn thực thi là không có ảnh chụp nhanh MVCC nào có thể bao gồm Hai hàng với các phím chỉ số bằng nhau. Điều này bị phá vỡ vào Các trường hợp sau phải được tỷ lệ kèo bóng đá khi chèn một hàng mới thành một chỉ mục duy nhất:

  • Nếu một hàng hợp lệ xung đột đã bị xóa bởi hiện tại Giao dịch, không sao cả. (Đặc biệt, kể từ khi cập nhật Luôn xóa phiên bản hàng cũ trước khi chèn phiên bản, điều này sẽ cho phép một bản cập nhật trên một hàng mà không cần thay đổi khóa.)

  • Nếu một hàng xung đột đã được chèn bởi một giao dịch khi được cam kết, mà người đưa vào phải Đợi xem giao dịch đó có cam kết không. Nếu nó quay trở lại Sau đó không có xung đột. Nếu nó cam kết mà không xóa Hàng xung đột một lần nữa, có một vi phạm độc đáo. (TRONG Thực hành chúng tôi chỉ chờ giao dịch khác kết thúc và sau đó làm lại tỷ lệ kèo bóng đá khả năng hiển thị trong toto.)

  • Tương tự, nếu một hàng hợp lệ xung đột đã bị xóa bởi một giao dịch chưa có cam kết, người sẽ phải là chờ giao dịch đó cam kết hoặc hủy bỏ, sau đó lặp lại bài tỷ lệ kèo bóng đá.

Chúng tôi yêu cầu phương thức truy cập chỉ mục để áp dụng các thử nghiệm này chính nó, có nghĩa là nó phải chạm vào đống để tỷ lệ kèo bóng đá Trạng thái cam kết của bất kỳ hàng nào được hiển thị có khóa trùng lặp Theo nội dung chỉ số. Điều này chắc chắn là xấu xí và không mô-đun, nhưng nó tiết kiệm công việc dư thừa: nếu chúng ta làm riêng thăm dò sau đó tìm kiếm chỉ mục cho một hàng mâu thuẫn sẽ là về cơ bản lặp đi lặp lại trong khi tìm nơi chèn mục nhập chỉ mục của hàng. Hơn nữa, không có cách nào rõ ràng để tránh điều kiện chủng tộc trừ khi tỷ lệ kèo bóng đá xung đột là một phần không thể thiếu của Lắp mục nhập chỉ mục mới.

Giới hạn chính của sơ đồ này là nó không có cách thuận tiện để hỗ trợ tỷ lệ kèo bóng đá duy nhất trì hoãn.