Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14
Phiên bản phát triển:18 / Devel

47.9. Truyền trực tuyến các kèo bóng đá hom nay lớn để giải mã logic#

Gọi cho plugin đầu ra cơ bản (ví dụ:BEGIN_CB, Change_cb, cam kết_cbmessage_cb) chỉ được gọi khi kèo bóng đá hom nay thực sự cam kết. Các thay đổi vẫn được giải mã từ nhật ký kèo bóng đá hom nay, nhưng chỉ được chuyển sang plugin đầu ra tại cam kết (và bị loại bỏ nếu phá thai kèo bóng đá hom nay).

Điều này có nghĩa là trong khi việc giải mã xảy ra tăng dần và có thể tràn vào đĩa để kiểm soát việc sử dụng bộ nhớ, tất cả các thay đổi được giải mã phải được truyền khi kèo bóng đá hom nay cuối cùng thực hiện (hoặc chính xác hơn là khi cam kết được giải mã khỏi nhật ký kèo bóng đá hom nay). Tùy thuộc vào kích thước của băng thông kèo bóng đá hom nay và mạng, thời gian chuyển có thể làm tăng đáng kể độ trễ áp dụng.

Để giảm độ trễ áp dụng do các kèo bóng đá hom nay lớn, một plugin đầu ra có thể cung cấp cuộc gọi lại bổ sung để hỗ trợ phát trực tuyến các kèo bóng đá hom nay đang tiến triển. Có nhiều cuộc gọi lại phát trực tuyến cần thiết (stream_start_cb, stream_stop_cb, stream_abort_cb, stream_commit_cbstream_change_cb) và hai cuộc gọi lại tùy chọn (stream_message_cbstream_truncate_cb). Ngoài ra, nếu phát trực tuyến kèo bóng đá hom nay lệnh hai pha sẽ được hỗ trợ, thì phải cung cấp kèo bóng đá hom nay cuộc gọi lại bổ sung. (Nhìn thấyPhần 47.10để biết chi tiết).

Khi phát trực tuyến một kèo bóng đá hom nay đang diễn ra, các thay đổi (và tin nhắn) được truyền phát trong các khối được phân định bởistream_start_cbstream_stop_cbgọi lại. Khi tất cả các thay đổi được giải mã được truyền đi, kèo bóng đá hom nay có thể được cam kết bằng cách sử dụngstream_commit_cbgọi lại (hoặc có thể bị hủy bỏ bằng cách sử dụngstream_abort_cbgọi lại). Nếu các cam kết hai pha được hỗ trợ, kèo bóng đá hom nay có thể được chuẩn bị bằng cách sử dụngstream_prepare_cbCallback,Cam kết đã chuẩn bịsử dụngcomme_prepared_cbgọi lại hoặc bị hủy bỏ bằng cách sử dụngrollback_prepared_cb.

Một ví dụ trình tự gọi lại các cuộc gọi lại cho một kèo bóng đá hom nay có thể trông giống như thế này:

stream_start_cb (...);   <- Bắt đầu khối thay đổi đầu tiên
  stream_change_cb (...);
  stream_change_cb (...);
  stream_message_cb (...);
  stream_change_cb (...);
  ...
  stream_change_cb (...);
stream_stop_cb (...);    <- Kết thúc khối thay đổi đầu tiên

stream_start_cb (...);   <- Bắt đầu khối thứ hai của các thay đổi
  stream_change_cb (...);
  stream_change_cb (...);
  stream_change_cb (...);
  ...
  stream_message_cb (...);
  stream_change_cb (...);
stream_stop_cb (...);    <- Kết thúc khối thứ hai của các thay đổi

[Một. Khi sử dụng cam kết bình thường]
stream_commit_cb (...);    <- Cam kết của kèo bóng đá hom nay được phát trực tuyến

[b. Khi sử dụng cam kết hai pha]
stream_prepare_cb (...);   <- Chuẩn bị kèo bóng đá hom nay được phát trực tuyến
cam kết_prepared_cb (...);  <- cam kết của kèo bóng đá hom nay đã chuẩn bị

chuỗi các cuộc gọi gọi lại thực tế có thể phức tạp hơn, tất nhiên. Có thể có các khối cho nhiều kèo bóng đá hom nay được phát trực tuyến, một số kèo bóng đá hom nay có thể bị hủy bỏ, v.v.

10954_11132Logical_decoding_work_memCài đặt. Tại thời điểm đó, kèo bóng đá hom nay cấp cao nhất (được đo bằng lượng bộ nhớ hiện đang được sử dụng để thay đổi được giải mã) được chọn và phát trực tuyến. Tuy nhiên, trong một số trường hợp, chúng tôi vẫn phải tràn vào đĩa ngay cả khi phát trực tuyến được bật vì chúng tôi vượt quá ngưỡng bộ nhớ nhưng vẫn chưa giải mã được bộ hoàn toàn, ví dụ, chỉ được giải mã trên bàn nướng nhưng không phải là phần chèn chính.

Ngay cả khi phát trực tuyến các kèo bóng đá hom nay lớn, các thay đổi vẫn được áp dụng theo thứ tự cam kết, bảo tồn các đảm bảo tương tự như chế độ không phát trực tuyến.

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.