Làm cách nào để xác định xem một biến đổi SSIS không chặn, chặn một phần hoặc chặn hoàn toàn?


12

Có một số blog yêu cầu phân loại Chuyển đổi SSIS thành chặn (không đồng bộ), không chặn (đồng bộ) và chặn một phần (không đồng bộ).

Khi xem xét câu hỏi cụ thể: Là đa tuyến (không chặn) hay không đồng bộ (chặn một phần)?

Một tài nguyên tuyên bố không đồng bộ: "Multicast là một biến đổi không đồng bộ (còn được gọi là chặn một phần)" : http://social.technet.microsoft.com/wiki/contents/articles/7392.ssis-multicast-transifying.aspx

và một từ đồng bộ khác: https://jorgklein.com/2009/04/14/ssis-lookup-is-case-sensitive/

Các tài nguyên khác tuyên bố biến đổi DQS Cleansing là một biến đổi không chặn, nhưng đối với tôi dường như nó bị chặn một phần.

Vui lòng không trả lời bằng một liên kết đến danh sách các biến đổi được phân loại theo loại. Câu trả lời cho câu hỏi này hy vọng sẽ cho phép một phương pháp chặt chẽ hơn để CHỨNG MINH một câu trả lời đúng.

Vì các phép biến đổi chặn và chặn một phần sẽ chuyển dữ liệu sang bộ đệm mới trái ngược với phép không chặn hoạt động trên bộ đệm tại chỗ, tôi nghi ngờ rằng giải pháp sẽ là xem tạo bộ đệm trong khi thực hiện chuyển đổi, nhưng tôi không chắc chắn (a ) nếu điều này sẽ tạo ra câu trả lời dứt khoát và (b) làm thế nào để làm điều này.

Tôi tin rằng một biến đổi không chặn sẽ không bắt đầu một cây thực thi mới, vì vậy có thể câu trả lời nằm ở việc ghi nhật ký PipelineExectionTrees và PipelineExecutPlan. Điều này có thể phân biệt giữa đồng bộ và không đồng bộ, nhưng có thể không phân biệt giữa chặn một phần và chặn hoàn toàn.


3
Mulitcast là đồng bộ. Thử nghiệm đánh hơi nhanh cho đồng bộ so với async là liệu lineageid (trước năm 2012) có giữ nguyên trước và sau khi chuyển đổi hay không. Hãy để tôi nhìn vào năm 2012 và làm thế nào bây giờ làm việc.
billinkc

2
Hành vi chặn và tính đồng bộ không giống nhau. Tính đồng bộ là về việc liệu dữ liệu có cần được chuyển vào bộ đệm mới hay không, trong khi đó, việc chặn là liệu mỗi hàng có thể được xử lý ngay lập tức hay không. Ví dụ, Union All không chặn, nhưng không đồng bộ - nó tạo ra bộ đệm mới và luồng thực thi mới, nhưng không cần phải chờ để làm điều đó.
Rob Farley

@Rob - trong khi tôi đồng ý rằng chúng không giống nhau (không đồng bộ có thể chặn một phần hoặc toàn bộ) - Blog jorg_klein thực sự nói rằng Union All đang chặn một phần. Tôi có khuynh hướng đồng ý như thể dữ liệu được chuyển vào bộ đệm mới, trực giác khiến tôi nghĩ rằng điều đó sẽ chặn một phần. Nếu anh ta có thể được chứng minh là sai và trực giác của tôi là không chính xác, thì tốt hơn hết là điều đó sẽ trả lời câu hỏi!
Thronk

Có ai có bất kỳ ý tưởng về làm thế nào điều này có thể được thử nghiệm? Tôi đoán chắc chắn hiệu suất hoặc nhật ký thông tin có thể được sử dụng để tìm hiểu điều này chắc chắn nhưng tôi không chắc chắn chính xác.
Nick.McDilyn

1
Đối với những người có thể muốn kiểm tra mẹo

Câu trả lời:


4

Một hoạt động đang chặn phải đợi cho đến khi tất cả các hàng đã được nhìn thấy và xử lý trước khi nó có thể bắt đầu điền vào bộ đệm.

Một hoạt động chặn dữ liệu ghi một phần vào bộ đệm mới, chỉ được xử lý bởi thao tác tiếp theo sau khi mỗi bộ đệm (thường chỉ dưới 10.000 hàng) được đưa vào.

Một hoạt động không chặn có thể có hoạt động tiếp theo hoạt động trên cùng một bộ đệm, vì mỗi hàng được xử lý.

Nhưng nhiều văn bản sẽ đề cập đến 'chặn một phần' là 'không chặn', vì hành vi này gần với 'không chặn' hơn là 'chặn'.

Bạn sẽ có thể cho biết những gì đang diễn ra bằng cách xem luồng dữ liệu chạy và xem khi nào số lượng tăng lên ở mỗi điểm.

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.