PostgreSQL: kèo bóng đá hôm nay và ngày | |||
---|---|---|---|
prev | UP | Chương 55. Viết trình bao bọc dữ liệu nước ngoài | NEXT |
8545_8818PostgreSQLBả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ệnkèo bóng đá cúp c2 sớmhoặckèo bóng đá cúp c2 muộn. Trong kèo bóng đá cúp c2 sớm, một hàng bị kèo bóng đá cúp c2 khi lần đầu tiên được lấy từ cửa hàng bên dưới, trong khi kèo bóng đá cúp c2 muộn, hàng chỉ bị kèo bóng đá cúp c2 khi biết rằng nó cần phải bị kèo bóng đá cúp c2. . Ngoài ra, kèo bóng đá cúp c2 trễ chỉ có thể nếu hàng bị kèo bóng đá cúp c2 có thể được xác định lại duy nhất sau này. Tốt nhất là định danh hàng nên xác định một phiên bản cụ thể của hàng, làPostgreSQLtids do.
Theo mặc định,PostgreSQLBỏ qua các cân nhắc kèo bóng đá cúp c2 khi giao tiếp với FDW, nhưng FDW có thể thực hiện kèo bóng đá cúp c2 sớm mà không cần hỗ trợ rõ ràng từ mã lõi. Các chức năng API được mô tả trongPhần 55.2.5, được thêm vàoPostgreSQL9.5, cho phép FDW sử dụng kèo bóng đá cúp c2 trễ nếu nó muốn.
Một cân nhắc bổ sung là trongĐọc cam kếtChế độ cách ly,PostgreSQL10356_10616PostgreSQL10657_11374
cho mộtCập nhậthoặcXóaTrên bàn nước ngoài, khuyến nghị rằngnước ngoài11537_11651Chọ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- resultrelationhoặc tại thời điểm thực hiện bằng cách sử dụngExecrelationistArgetRelation ()
. Một khả năng thay thế là thực hiện kèo bóng đá cúp c2 trễ trongEXECFORIGNUPDATE
hoặcExecforeIgnDelete
Callback, 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ác bảng nước ngoài được chỉ định là bị kèo bóng đá cúp c2 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 kèo bóng đá cúp c2 sớm bằng cách tìm nạp các bộ dữ liệu với tương đươngChọn để cập nhật/chia sẻ. Để thực hiện kèo bóng đá cúp c2 trễ thay thế, hãy cung cấp các chức năng gọi lại được xác định trongPhần 55.2.512658_12665getforeignrowmarktype
, chọn Tùy chọn RowmarkRow_Mark_Exclusive, 12803_12828, Row_Mark_SharehoặcROW_MARE_KEYSHARE12919_13162get_plan_rowmark
Tại kế hoạch, hoặcExecfindrowmark
Tạ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 kèo bóng đá cúp c2 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 kèo bóng đá cúp c2 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à kèo bóng đá cúp c2 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ógetforeignrowmarktype
Chọn tùy chọnRow_Mark_ReferenceKhi nhìn thấy sức mạnh kèo bóng đá cúp c2LCS_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ỳ kèo bóng đá cúp c2 mới. (Nếu bạn cógetforeignrowmarktype
Hàm nhưng không muốn tìm nạp lại các hàng đã mở kèo bóng đá cúp c2, chọn Tùy chọnRow_Mark_CopychoLCS_NONE.)
xemSRC/bao gồm/nút/LockOptions.h, kèo bóng đá cúp c2 nhận xét choRowMarkTypevàplanrowmarkinsrc/bao gồm/nút/plannodes.hvà kèo bóng đá cúp c2 bình luận choExecRowMarkinsrc/bao gồm/nút/execNodes.hĐể biết thêm thông tin.