Nếu nguồn được chèn - chỉ cung cấp cho nó một IDENTITY
cột. Khi bạn thực hiện chuyển dữ liệu, bạn đăng nhập giá trị cao nhất được ghi lại. Trong lần chuyển tiếp theo, bạn chỉ cần truy vấn các giá trị lớn hơn giá trị được ghi trong lần chuyển trước đó. Chúng tôi làm điều này để chuyển các bản ghi nhật ký vào một kho dữ liệu.
Đối với các hàng có thể cập nhật, thêm một cờ "bẩn". Nó sẽ có ba giá trị - sạch, bẩn và bị xóa. Các truy vấn hàng ngày sẽ phải bỏ qua các hàng với cờ được đặt thành "đã xóa". Điều này sẽ tốn kém trong bảo trì, thử nghiệm và thời gian chạy. Sau truy vấn lớn, bạn đề cập đến tất cả các hàng được đánh dấu để xóa phải được xóa và đặt lại cờ cho tất cả các hàng khác. Điều này sẽ không quy mô tốt.
Một thay thế nhẹ hơn cho Thay đổi dữ liệu là Thay đổi theo dõi . Nó sẽ không cho bạn biết giá trị nào đã thay đổi, chỉ là hàng đã thay đổi kể từ lần truy vấn cuối cùng. Các chức năng tích hợp tạo điều kiện truy xuất các giá trị thay đổi và quản lý theo dõi. Chúng tôi đã thành công khi sử dụng CT để xử lý khoảng 100.000 thay đổi mỗi ngày trong bảng hàng 100.000.000.
Thông báo truy vấn hoạt động ở mức đòn bẩy cao hơn - ở cấp độ của tập kết quả. Về mặt khái niệm, nó giống như xác định một quan điểm. Nếu SQL Server phát hiện ra rằng bất kỳ hàng nào được trả về qua chế độ xem đó đã thay đổi, nó sẽ gửi một thông báo tới ứng dụng. Không có dấu hiệu cho thấy có bao nhiêu hàng thay đổi, hoặc cột nào. Chỉ có một tin nhắn đơn giản nói rằng "một cái gì đó đã xảy ra." Nó là tùy thuộc vào ứng dụng để tìm hiểu và phản ứng. Thực tế nó phức tạp hơn thế nhiều, như bạn có thể tưởng tượng. Có các hạn chế về cách xác định truy vấn và thông báo có thể kích hoạt các điều kiện khác với dữ liệu đã thay đổi. Khi thông báo kích hoạt nó sẽ bị xóa. Nếu hoạt động quan tâm tiếp theo xảy ra sau đó sẽ không có tin nhắn nào nữa được gửi đi.
Trong bối cảnh câu hỏi của OP, QN sẽ có lợi thế là chi phí thấp để thiết lập và chi phí thời gian chạy ít. Nó có thể là nỗ lực đáng kể để thiết lập và duy trì một chế độ phản ứng tin nhắn đăng ký nghiêm ngặt. Vì bảng dữ liệu lớn nên có thể sẽ có những thay đổi thường xuyên đối với nó, có nghĩa là thông báo có khả năng kích hoạt trong hầu hết các chu kỳ xử lý. Vì không có dấu hiệu cho thấy những gì đã thay đổi xử lý gia tăng của đồng bằng sẽ không thể thực hiện được, như với CT hoặc CDC. Chi phí hoạt động do kích hoạt sai là rất mệt mỏi, nhưng ngay cả trong trường hợp xấu nhất, truy vấn đắt tiền không cần phải chạy thường xuyên hơn hiện tại.