SQL Server 2016: Hiệu suất bảng tạm thời so với Triggers và CDC


7

Dường như khá khó để tìm thấy sự so sánh giữa các bảng tạm thời được phiên bản hệ thống và các tùy chọn cũ hơn, chẳng hạn như trình kích hoạt DB và CDC. Hiện tại tôi không có thời gian để viết một bài kiểm tra mở rộng trên SQL Server 2016, vì vậy tôi nghĩ tôi sẽ hỏi về nó ở đây.

Về cơ bản, ưu điểm điển hình với các trình kích hoạt là chúng dễ quản lý hơn trong các môi trường độc lập và phân cụm / alwaysOn, là thời gian thực để được đồng bộ hóa và có quyền truy cập vào dữ liệu phiên như ID người dùng.

Mặt khác, CDC trong khi yêu cầu quản lý nhiều hơn một chút và không đồng bộ, nhẹ hơn nhiều , và do đó hoạt động tốt hơn nhiều. Vì vậy, nếu có bất kỳ nghi ngờ nào về việc thắt cổ chai gây ra bởi các yếu tố kích hoạt có thể trở thành một vấn đề, CDC về cơ bản sẽ là giải pháp ưu việt. Về mặt yêu cầu phần cứng, CDC yêu cầu không gian bổ sung không đáng kể do sử dụng nhật ký và bảng kiểm toán cdc để theo dõi các thay đổi.

Câu hỏi: Làm thế nào để bảng thời gian so với hai bảng trên? Về tốc độ, hiệu suất, sử dụng không gian lưu trữ. KHI NÀO tôi nên sử dụng bảng tạm thời thay vì kích hoạt hoặc CDC? Khi nào tôi không nên?

Tôi hiểu bất cứ điều gì có khả năng phức tạp vì các yêu cầu kinh doanh và giới hạn kỹ thuật đằng sau kiểm toán DB sẽ không có một câu trả lời dễ dàng, vì nó phụ thuộc phần lớn vào các yêu cầu và phạm vi của dự án. Nhưng bất cứ điều gì để làm sáng tỏ hơn các câu hỏi trên sẽ được đánh giá cao. Cảm ơn!

Câu trả lời:


5

Nó phụ thuộc vào trường hợp kinh doanh của bạn, bảng tạm thời và thay đổi dữ liệu cung cấp chức năng khác nhau.

Các bảng tạm thời được sử dụng để cung cấp một phiên bản của bảng của bạn tại một thời điểm. Trường hợp sử dụng có thể là thứ nguyên thay đổi chậm trong đó bạn muốn theo dõi các thay đổi trong thuộc tính thứ nguyên và báo cáo chúng từ bất kỳ thời điểm nào.

Thay đổi dữ liệu có thể được sử dụng trên bảng OLTP, để cho phép bạn dễ dàng tạo điều kiện xuất sang dữ liệu mart. Nó ghi nhật ký tất cả các thay đổi vào một bảng riêng biệt, vì vậy bạn có thể dễ dàng xem các hàng đã thay đổi kể từ điểm xuất LSN cuối cùng của bạn.


Tuy nhiên, cảm ơn tôi vẫn quan tâm nhất đến hiệu suất kỹ thuật và yêu cầu lưu trữ so với các giải pháp khác, vì chúng sẽ cho tôi ý tưởng tốt nhất về cách áp dụng chúng cho các yêu cầu kinh doanh trong trường hợp này.
Kahn

Nhưng họ đã nói như trường hợp sử dụng hoàn toàn khác nhau. CDC theo dõi các thay đổi dữ liệu, ví dụ để gửi chúng đến kho dữ liệu. Dữ liệu cũ không còn có sẵn trong bảng. Các bảng tạm thời được sử dụng để cho phép truy cập vào dữ liệu cũ, ví dụ như trong kho dữ liệu đã nói (có thể được cập nhật từ dữ liệu đã thu được của CDC). Các hệ thống đăng lại thường cần truy cập vào bối cảnh dữ liệu lịch sử (cung cấp cho tôi báo cáo rủi ro TỪ chủ nhật tuần trước - với dữ liệu như đã thấy vào thứ năm tuần trước). Bảng tạm thời. Ghi lại thay đổi - CDC. Tập trung vào sự khác biệt cực đoan trong chức năng.
TomTom

@Kahn Tôi đã hạ cánh ở đây để tìm kiếm chi tiết về các phần bên trong của lưu trữ bảng tạm thời. Hy vọng của tôi là đã có một số loại "khác biệt" được thực hiện, tương tự như các hệ thống kiểm soát phiên bản làm gì, nhưng có vẻ như các bảng lịch sử được lưu trữ như các bảng thông thường. Chi tiết tối ưu hóa lưu trữ mà tôi đã tìm thấy theo mặc định, bảng lịch sử được nén PAGE.
John Mo

Các bảng tạm thời là một ví dụ về nơi nén trang có thể tạo ra sự khác biệt lớn: bởi vì toàn bộ hàng được lưu trữ cho mỗi phiên bản và thường xuyên hơn không phải là số lượng thay đổi nhỏ, có rất nhiều cơ hội để tiết kiệm dung lượng bằng cách loại bỏ trùng lặp. Ngay cả khi mọi thứ thay đổi, bất kỳ chuỗi unicode nào cũng sẽ được nén lại có thể tiết kiệm rất nhiều. Lưu ý rằng việc nén hoàn toàn không chạm vào các giá trị ngoài trang, do đó, việc sử dụng NVARCHAR(MAX)hoặc VARBINARY(MAX)(hoặc cũ hơn TEXT/ NTEXT/ IMAGE) có thể khiến các bảng tạm thời tiêu tốn một lượng lớn không gian.
David Spillett

Chào các bạn. Trong kịch bản của tôi, tôi đang phát triển một trang web dữ liệu có cấu trúc giống như wiki do cộng đồng điều khiển, nơi tôi cần có thể quay lại các phiên bản trước. Điều gì sẽ là sự lựa chọn tốt nhất CDC hoặc TT?
Shimmy Weitzhandler
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.