Phiên bản được hỗ trợ:hiện tại(173679_381016 / 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

61.4. Cân nhắc khóa chỉ kèo bóng đá cúp c2

Các phương thức truy cập chỉ kèo bóng đá cúp c2 phải xử lý các bản cập nhật đồng thời của chỉ kèo bóng đá cúp c2 bằng nhiều quy trình. LõiPostgreSQLHệ thống có đượcAccessSharelockTrên chỉ kèo bóng đá cúp c2 trong quá trình quét chỉ kèo bóng đá cúp c2 vàRowExclusiveLockKhi cập nhật chỉ kèo bóng đá cúp c2 (bao gồm cả đơn giảnVACUUM). Vì các loại khóa này không xung đột, phương pháp truy cập chịu trách nhiệm xử lý bất kỳ khóa hạt mịn nào mà nó có thể cần. MỘTAccess ExclusiveKhóa trên toàn bộ chỉ kèo bóng đá cúp c2 sẽ chỉ được thực hiện trong quá trình tạo chỉ kèo bóng đá cúp c2, phá hủy hoặcReindex(Cập nhật chia sẻ độc quyềnđược lấy thay vào đó vớiđồng thời).

Xây dựng một loại chỉ kèo bóng đá cúp c2 hỗ trợ các bản cập nhật đồng thời thường yêu cầu phân tích sâu rộng và tinh tế về hành vi cần thiết. Đối với các loại chỉ kèo bóng đá cúp c2 b-cây và băm, bạn có thể đọc về các quyết định thiết kế liên quan đếnsrc/backend/access/nbtree/readmeSRC/Backend/Access/Hash/Readme.

Ngoài các yêu cầu tính nhất quán nội bộ của chỉ kèo bóng đá cúp c2, các bản cập nhật đồng thời tạo ra các vấn đề về tính nhất quán giữa bảng cha (TheHeap) và chỉ kèo bóng đá cúp c2. Bởi vìPostgreSQLtách các truy cập và cập nhật của đống với các chỉ kèo bóng đá cúp c2, có các cửa sổ trong đó chỉ kèo bóng đá cúp c2 có thể không phù hợp với đống. Chúng tôi xử lý vấn đề này với các quy tắc sau:

  • Một kèo bóng đá cúp c2 nhập đống mới được thực hiện trước khi thực hiện các kèo bóng đá cúp c2 nhập chỉ kèo bóng đá cúp c2 của nó. .Phần 61.5.)

  • Khi một kèo bóng đá cúp c2 nhập đống sẽ bị xóa (bởiNút hút), tất cả các kèo bóng đá cúp c2 nhập chỉ kèo bóng đá cúp c2 của nó phải được xóa trước.

  • Quét chỉ kèo bóng đá cúp c2 phải duy trì mã PIN trên trang chỉ kèo bóng đá cúp c2 giữ kèo bóng đá cúp c2 cuối cùng được trả về bởiAmgettupleAmbulkdeleteKhông thể xóa các kèo bóng đá cúp c2 từ các trang được ghim bởi các phụ trợ khác. Nhu cầu về quy tắc này được giải thích bên dưới.

Không có quy tắc thứ ba, người đọc chỉ kèo bóng đá cúp c2 có thể thấy một kèo bóng đá cúp c2 nhập chỉ kèo bóng đá cúp c2 ngay trước khi nó bị xóa bởiVacuum, và sau đó đến kèo bóng đá cúp c2 nhập đống tương ứng sau đó đã bị xóa bởiVACUUM. Điều này không tạo ra vấn đề nghiêm trọng nào nếu số mặt hàng đó vẫn không được sử dụng khi người đọc đạt được nó, vì một khe trống sẽ bị bỏ qua bởiheap_fetch ()13147_13434Snapshotany), có thể chấp nhận và trả lại một hàng không thực tế khớp với các phím quét. Chúng tôi có thể bảo vệ chống lại kịch bản này bằng cách yêu cầu các khóa quét phải được kiểm tra lại đối với hàng đống trong mọi trường hợp, nhưng điều đó quá đắt. Thay vào đó, chúng tôi sử dụng mã PIN trên trang chỉ kèo bóng đá cúp c2 làm proxy để chỉ ra rằng người đọc vẫn có thể làVangTrong chuyến bayHồiTừ kèo bóng đá cúp c2 nhập chỉ kèo bóng đá cúp c2 đến kèo bóng đá cúp c2 nhập đống phù hợp. LàmAmbulkdeletekhối trên pin như vậy đảm bảo rằngNút hútKhông thể xóa kèo bóng đá cúp c2 nhập đống trước khi người đọc hoàn thành nó. Giải pháp này có giá rất ít trong thời gian chạy và chỉ thêm khối lượng chặn trong những trường hợp hiếm hoi thực sự có xung đột.

Giải pháp này yêu cầu chỉ số quét làĐồng bộHồi14345_14486không đồng bộ14552_14914

trong mộtAmgetbitmapSCAN INDEX, Phương thức truy cập không giữ chân chỉ kèo bóng đá cúp c2 trên bất kỳ bộ dữ liệu nào được trả về. Do đó, chỉ an toàn khi sử dụng các lần quét như vậy với ảnh chụp nhanh tuân thủ MVCC.

KhiAmpredlockscờ không được đặt, bất kỳ lần quét nào sử dụng phương thức truy cập chỉ kèo bóng đá cúp c2 đó trong một giao dịch có thể nối tiếp sẽ có được khóa dự đoán không chặn trên toàn bộ chỉ kèo bóng đá cúp c2. Điều này sẽ tạo ra một cuộc xung đột đọc-viết với việc chèn bất kỳ tuple nào vào chỉ số đó bằng một giao dịch có thể nối tiếp đồng thời. Nếu một số mô hình xung đột đọc được đọc được phát hiện giữa một tập hợp các giao dịch có thể nối tiếp đồng thời, một trong các giao dịch đó có thể bị hủy để bảo vệ tính toàn vẹn của dữ liệu. Khi cờ được đặt, nó chỉ ra rằng phương thức truy cập chỉ kèo bóng đá cúp c2 thực hiện khóa dự đoán chi tiết hơn, điều này sẽ có xu hướng giảm tần suất hủy giao dịch đó.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.