PostgreSQL: kèo chấp bóng đá | |||
---|---|---|---|
prev | UP | Chương 55. Định nghĩa giao diện phương thức truy cập chỉ soi kèo bóng đá truoctran | Tiếp theo |
Phương pháp truy cập chỉ soi kèo bóng đá truoctran phải xử lý các bản cập nhật đồng thời của chỉ soi kèo bóng đá truoctran bằng nhiều quy trình. Lõi10171_10183Hệ thống có đượcAccessSharelockTrên chỉ soi kèo bóng đá truoctran trong quá trình quét chỉ soi kèo bóng đá truoctran vàRowExclusiveLockKhi cập nhật chỉ soi kèo bóng đá truoctran (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ột khóa độc quyền trên toàn bộ chỉ soi kèo bóng đá truoctran sẽ chỉ được thực hiện trong quá trình tạo, phá hủy hoặcReindex.
Xây dựng một loại chỉ soi kèo bóng đá truoctran 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ỉ soi kèo bóng đá truoctran 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/readmevàSRC/phụ trợ/truy cập/băm/readme.
Ngoài các yêu cầu tính nhất quán nội bộ của chỉ soi kèo bóng đá truoctran, 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ỉ soi kèo bóng đá truoctran. Bởi vìPostgreSQLTách các truy cập và cập nhật của đống với các chỉ soi kèo bóng đá truoctran, có các cửa sổ trong đó chỉ soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran nhập đống mới được thực hiện trước khi thực hiện các soi kèo bóng đá truoctran nhập chỉ soi kèo bóng đá truoctran của nó. .Phần 55.5.)
Khi một soi kèo bóng đá truoctran nhập đống sẽ bị xóa (bởiVACUUM), tất cả các soi kèo bóng đá truoctran nhập chỉ soi kèo bóng đá truoctran của nó phải được xóa trước.
Quét chỉ soi kèo bóng đá truoctran phải duy trì mã PIN trên trang chỉ soi kèo bóng đá truoctran giữ soi kèo bóng đá truoctran cuối cùng được trả về bởiAmgettuple
vàAmbulkdelete
Không thể xóa các soi kèo bóng đá truoctran 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ỉ soi kèo bóng đá truoctran có thể thấy soi kèo bóng đá truoctran nhập chỉ soi kèo bóng đá truoctran ngay trước khi nó bị xóa bởiNút hút, và sau đó đến soi kèo bóng đá truoctran nhập đống tương ứng sau khi 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 ()
. Nhưng điều gì sẽ xảy ra nếu một phụ trợ thứ ba đã sử dụng lại khe cắm vật phẩm cho một thứ khác? Khi sử dụng ảnh chụp nhanh tuân thủ MVCC, không có vấn đề gì vì người cư ngụ mới của khe chắc chắn là quá mới để vượt qua bài kiểm tra ảnh chụp nhanh. Tuy nhiên, với ảnh chụp nhanh không tuân thủ MVCC (chẳng hạn nhưSnapshotany), 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 khóa 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ỉ soi kèo bóng đá truoctran làm proxy để chỉ ra rằng người đọc vẫn có thể là"Trong chuyến bay"Từ soi kèo bóng đá truoctran nhập chỉ soi kèo bóng đá truoctran đến soi kèo bóng đá truoctran nhập đống phù hợp. LàmAmbulkdelete
Block on a Pin như vậy đảm bảo rằngVACUUMKhông thể xóa soi kèo bóng đá truoctran 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ộ": Chúng ta phải tìm nạp từng đống ngay sau khi quét soi kèo bóng đá truoctran nhập chỉ soi kèo bóng đá truoctran tương ứng. Điều này là đắt tiền vì một số lý do. MỘT"Không đồng bộ"13958_14320
trong mộtAmgetbitmap
SCAN INDEX, Phương thức truy cập không giữ chân chỉ soi kèo bóng đá truoctran 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.
KhiAmpredlocks14593_15237