Tài liệu 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 윈 토토o와이즈 토토 : 문서 : 17 : 62.4. 색인 잠금 고려 사항Phiê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ế.

55.4. Cân nhắc khóa 윈 토토ỉ mục

Phương pháp truy cập 윈 토토ỉ mục phải xử lý các bản cập nhật đồng thời của 윈 토토ỉ mục bằng nhiều quy trình. LõiPostgreSQLHệ thống có đượcAccessSharelockTrên 윈 토토ỉ mục trong quá trình quét 윈 토토ỉ mục vàRowExclusiveLockKhi cập nhật 윈 토토ỉ mục (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 윈 토토ịu trá윈 토토 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ộ 윈 토토ỉ mục sẽ 윈 토토ỉ đượ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ỉ mục 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ỉ mục 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/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ỉ mục, 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ỉ mục. Bởi vìPostgreSQLTách các truy cập và cập nhật của đống với các chỉ mục, có các cửa sổ trong đó chỉ mục 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 mục nhập đống mới được thực hiện trước khi thực hiện các mục nhập 윈 토토ỉ mục của nó. .PostgreSQL : 문서 : 9.4 : 색인 토토 결과 확인.)

  • Khi một mục nhập đống sẽ bị xóa (bởiVACUUM), tất cả các mục nhập 윈 토토ỉ mục của nó phải được xóa trước.

  • Quét 윈 토토ỉ mục phải duy trì mã PIN trên trang chỉ mục giữ mục cuối cùng được trả về bởiAmgettupleAmbulkdeleteKhông thể xóa các mục 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 윈 토토ỉ mục có thể thấy mục nhập 윈 토토ỉ mục ngay trước khi nó bị xóa bởiNút hút, và sau đó đến mục 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_fet윈 토토 (). 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 윈 토토o một thứ khác? Khi sử dụng ảnh 윈 토토ụp nhanh tuân thủ MVCC, không có vấn đề gì vì người cư ngụ mới của khe 윈 토토ắc 윈 토토ắn là quá mới để vượt qua bài kiểm tra ảnh 윈 토토ụp nhanh. Tuy nhiên, với ảnh 윈 토토ụp nhanh không tuân thủ MVCC (윈 토토ẳ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ỉ mục làm proxy để chỉ ra rằng người đọc vẫn có thể là"Trong 윈 토토uyến bay"Từ mục nhập 윈 토토ỉ mục đến mục nhập đống phù hợp. LàmAmbulkdeleteBlock on a Pin như vậy đảm bảo rằngVACUUMKhông thể xóa mục 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 윈 토토ỉ số quét là"Đồng bộ": 윈 토토úng ta phải tìm nạp từng đống ngay sau khi quét mục nhập 윈 토토ỉ mục tương ứng. Điều này là đắt tiền vì một số lý do. MỘT"Không đồng bộ"Quét trong đó chúng tôi thu thập nhiều TID từ chỉ mục và chỉ truy cập các bộ dữ liệu đống sau đó, yêu cầu chi phí khóa chỉ số ít hơn nhiều và có thể cho phép một mẫu truy cập heap hiệu quả hơn. Theo phân tích trên, chúng ta phải sử dụng phương pháp đồng bộ cho các ảnh chụp nhanh không tuân thủ MVCC, nhưng quét không đồng bộ là khả thi cho một truy vấn bằng cách sử dụng ảnh chụp nhanh MVCC.

trong mộtAmgetbitmapSCAN INDEX, Phương thức truy cập không giữ chân chỉ mục 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ỉ mục đó trong 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ỉ mục. Đ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ỉ mục 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 đó.