Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
4922_503318 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5

57.5. Hàng khóa trong cách đọc kèo bóng đá gói dữ liệu nước ngoài#

Nếu cơ chế lưu trữ cơ bản của FDW có một khái niệm khóa cách đọc kèo bóng đá hàng riêng lẻ để ngăn chặn cách đọc kèo bóng đá bản cập nhật đồng thời của cách đọc kèo bóng đá hàng đó, thì thường có giá trị đối với FDW để thực hiện khóa cấp hàng với gần đúng như thực tế với ngữ nghĩa được sử dụng trong thông thườngPostgreSQLBảng. Có nhiều cân nhắc liên quan đến điều này.

Một quyết định quan trọng được đưa ra là có nên thực hiệncách đọc kèo bóng đá sớmhoặccách đọc kèo bóng đá trễ9068_9744PostgreSQLtids do.

Theo mặc định,PostgreSQLBỏ qua cách đọc kèo bóng đá cân nhắc khóa khi giao tiếp với FDW, nhưng FDW có thể thực hiện khóa sớm mà không cần hỗ trợ rõ ràng từ mã lõi. cách đọc kèo bóng đá chức năng API được mô tả trongPhần 57.2.6, được thêm vào trongPostgreSQL9.5, cho phép FDW sử dụng cách đọc kèo bóng đá trễ nếu nó muốn.

Một cân nhắc bổ sung là trongĐọc cam kếtChế độ cách ly,PostgreSQLCó thể cần kiểm tra lại hạn chế và tham gia cách đọc kèo bóng đá điều kiện so với phiên bản cập nhật của một số Tarple Target. Kiểm tra lại cách đọc kèo bóng đá điều kiện tham gia yêu cầu cách đọc kèo bóng đá bản sao lại của cách đọc kèo bóng đá hàng không phải mục tiêu trước đây đã được tham gia vào TUPLE mục tiêu. Khi làm việc với tiêu chuẩnPostgreSQLBảng, điều này được thực hiện bằng cách bao gồm cách đọc kèo bóng đá TID của cách đọc kèo bóng đá bảng không mục tiêu trong danh sách cột được chiếu qua tham gia, sau đó tìm nạp lại cách đọc kèo bóng đá hàng không mục tiêu khi được yêu cầu. Cách tiếp cận này giữ cho bộ dữ liệu tham gia nhỏ gọn, nhưng nó yêu cầu khả năng tìm nạp lại rẻ tiền, cũng như một TID có thể xác định duy nhất phiên bản hàng để được tìm nạp lại. Do đó, theo mặc định, cách tiếp cận được sử dụng với cách đọc kèo bóng đá bảng nước ngoài là bao gồm một bản sao của toàn bộ hàng được tìm nạp từ một bàn nước ngoài trong danh sách cột được chiếu qua tham gia. Điều này không có nhu cầu đặc biệt nào trên FDW nhưng có thể dẫn đến giảm hiệu suất hợp nhất và băm tham gia. Một FDW có khả năng đáp ứng cách đọc kèo bóng đá yêu cầu tìm nạp lại có thể chọn thực hiện theo cách đầu tiên.

cho mộtCập nhậthoặcXóa11551_11601nước ngoàiHoạt động trên bảng đích thực hiện khóa sớm trên cách đọc kèo bóng đá hàng mà nó lấy, có lẽ thông qua tương đươngChọn để cập nhật. FDW có thể phát hiện xem bảng có phải làCập nhật/Xóamục tiêu tại thời điểm lập kế hoạch bằng cách so sánh relid của nó vớiroot- parse- resultrelation12019_12053execRelationistArgetRelation (). Một khả năng thay thế là thực hiện cách đọc kèo bóng đá trễ trongExecforeIgnupDatehoặcExecforeIgnDeletegọi lại, nhưng không có hỗ trợ đặc biệt nào được cung cấp cho điều này.

Đối với cách đọc kèo bóng đá bảng nước ngoài được chỉ định là bị khóa bởi AChọn để cập nhật/chia sẻLệnh, TheForeignScanHoạt động một lần nữa có thể thực hiện khóa sớm bằng cách tìm nạp cách đọc kèo bóng đá bộ dữ liệu với tương đươngChọn để cập nhật/chia sẻ. Để thực hiện khóa trễ thay thế, hãy cung cấp cách đọc kèo bóng đá chức năng gọi lại được xác định trong12835_12856. TRONGgetforeignrowmarktype, chọn Tùy chọn RowmarkRow_Mark_Exclusive, 13009_13034, Row_Mark_Sharehoặc13111_13130Tùy thuộc vào cường độ cách đọc kèo bóng đá được yêu cầu. .get_plan_rowmarkTại kế hoạch, hoặcExecfindrowmarkTại thời điểm thực hiện; bạn phải kiểm tra không chỉ có một cấu trúc hàng không null được trả về hay không, mà là của nóSức mạnhTrường không phảiLCS_NONE.

Cuối cùng, đối với cách đọc kèo bóng đá bảng nước ngoài được sử dụng trong mộtCập nhật, XóahoặcChọn để cập nhật/chia sẻlệnh nhưng không được chỉ định là cách đọc kèo bóng đá hàng, bạn có thể ghi đè lựa chọn mặc định để sao chép toàn bộ hàng bằng cách cógetforeignrowmarktypeChọn tùy chọnRow_Mark_ReferenceKhi nhìn thấy sức mạnh cách đọc kèo bóng đáLCS_NONE. Điều này sẽ gây raRefetchForeIgnrowđược gọi với giá trị đó chomarktype; Sau đó, nó sẽ tìm nạp lại hàng mà không cần có bất kỳ cách đọc kèo bóng đá mới. (Nếu bạn cógetforeignrowmarktypeHàm nhưng không muốn tìm nạp lại cách đọc kèo bóng đá hàng đã mở khóa, chọn Tùy chọnRow_Mark_CopychoLCS_NONE.)

xemsrc/bao gồm/nút/lockoptions.h, cách đọc kèo bóng đá nhận xét choRowMarkTypeplanrowmarkinsrc/bao gồm/nút/plannodes.hvà cách đọc kèo bóng đá nhận xét choExecRowMarkinsrc/bao gồm/nút/execNodes.hĐể biết thêm thông tin.

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.