Mặc dù tất cả các mô-đun Wal-Logged tích hợp đều có các loại bản ghi WAL riêng của chúng, nhưng cũng có một loại kèo bóng đá euro, mô tả các thay đổi đối với các trang một cách chung. Điều này rất hữu ích cho các tiện ích mở rộng cung cấp các phương thức truy cập tùy chỉnh, vì họ không thể đăng ký các thói quen làm lại Wal của riêng họ.
API để xây dựng các kèo bóng đá euro được xác định trongAccess/Generic_xlog.h
8713_8735Access/transam/Generic_xlog.c
.
8801_8897
state = GenericXlogStart (quan hệ)
- Bắt đầu xây dựng một kèo bóng đá euro cho mối quan hệ đã cho.
page = GenericXlogregisterBuffer (trạng thái, bộ đệm, cờ)
- Đăng ký bộ đệm sẽ được sửa đổi trong kèo bóng đá euro hiện tại. Hàm này trả về một con trỏ vào một bản sao tạm thời của trang của bộ đệm, nơi cần sửa đổi. (Không sửa đổi nội dung của bộ đệm trực tiếp.) Đối số thứ ba là một chút mặt nạ của cờ áp dụng cho hoạt động. Hiện tại cờ duy nhất như vậy làGeneric_xlog_full_image
, chỉ ra rằng hình ảnh toàn trang thay vì cập nhật delta nên được đưa vào kèo bóng đá euro. Thông thường, cờ này sẽ được đặt nếu trang mới hoặc đã được viết lại hoàn toàn.GenericXlogregisterBuffer
có thể được lặp lại nếu hành động được kèo bóng đá euro lại cần sửa đổi nhiều trang.
Áp dụng các sửa đổi cho hình ảnh trang thu được trong bước trước.
GenericXlogfinish (State)
- Áp dụng các thay đổi cho bộ đệm và phát ra kèo bóng đá euro.
Xây dựng kèo bóng đá euro có thể bị hủy giữa bất kỳ bước nào trên bằng cách gọiGenericXLogabort (State)
. Điều này sẽ loại bỏ tất cả các thay đổi cho các kèo bóng đá euro sao hình ảnh trang.
Xin lưu ý các điểm sau khi sử dụng cơ sở kèo bóng đá euro:
Không được phép sửa đổi trực tiếp bộ đệm! Tất cả các sửa đổi phải được thực hiện trong các kèo bóng đá euro sao có được từGenericXLogRegisterBuffer ()
. Nói cách khác, mã tạo ra các kèo bóng đá euro không bao giờ được gọiBuffergetPage ()
cho chính nó. Tuy nhiên, nó vẫn là trách nhiệm của người gọi đối với pin/unpin và khóa/mở khóa các bộ đệm vào thời điểm thích hợp. Khóa độc quyền phải được giữ trên mỗi bộ đệm mục tiêu từ trướcGenericXlogRegisterBuffer ()
cho đến sauGenericXlogfinish ()
.
11245_11515
Số lượng bộ đệm tối đa có thể được đăng ký cho kèo bóng đá euro làMAX_GENERIC_XLOG_PAGES
. Một lỗi sẽ bị ném nếu vượt quá giới hạn này.
kèo bóng đá euro cho rằng các trang cần sửa đổi có bố cục tiêu chuẩn và đặc biệt là không có dữ liệu hữu ích giữaPD_LOWER
vàPD_UPPER
.
Vì bạn đang sửa đổi các kèo bóng đá euro sao của các trang bộ đệm,GenericXlogStart ()
không bắt đầu một phần quan trọng. Vì vậy, bạn có thể thực hiện phân bổ bộ nhớ, ném lỗi, v.v.GenicXlogStart ()
vàGenericXlogfinish ()
. Phần quan trọng thực tế duy nhất có mặt bên trongGenericXlogfinish ()
. Không cần phải lo lắng về việc gọiGenericXLogabort ()
Trong khi thoát lỗi.
GenericXlogfinish ()
Chăm sóc đánh dấu bộ đệm bẩn và đặt LSN của họ. Bạn không cần phải làm điều này một cách rõ ràng.
Đối với các mối quan hệ không được tính, mọi thứ đều hoạt động giống nhau ngoại trừ việc không có kèo bóng đá euro thực tế nào được phát ra. Do đó, bạn thường không cần phải thực hiện bất kỳ kiểm tra rõ ràng nào cho các mối quan hệ chưa được tính.
12980_13167
nếuGeneric_xlog_full_image
13256_13534