2013-05-20 33 views
8

Tôi đang cố gắng tăng tốc tải bảng thực tế như là một phần của dự án hiệu suất tổng thể. Bảng chỉ là khoảng 120 triệu hàng khoảng 100k được thêm vào mỗi buổi tối. Bảng này được lập chỉ mục khá nhiều.Hậu quả của việc sử dụng tùy chọn khóa bảng với đích tải nhanh là gì?

Hiện tại tôi đang sử dụng điểm đến OLE DB tải nhanh SSIS và tải 100.000 hàng mất khoảng 15 phút. Điều này dường như thực sự cao đối với tôi để chèn 100k hàng, vì vậy tôi thay đổi gói để đổ kết quả của nó vào một bảng dàn dựng, sau đó đã chèn T-SQL vào bảng thực tế từ bảng dàn dựng đó. Chèn bây giờ chạy trong chưa đầy 1 phút.

Tôi thấy khá kỳ quặc rằng một đoạn chèn T-SQL cũ đơn giản sẽ nhanh hơn SSIS Fast Load, vì vậy tôi bắt đầu xem các hộp nào đã được kiểm tra trên đích OLEDB. Hóa ra Table Lock KHÔNG được chọn. Khi tôi kiểm tra tùy chọn này, tải SSIS hiện dưới 1 phút. Câu hỏi của tôi là:

  • Ý nghĩa của việc kiểm tra Khóa bảng là gì?
  • Câu lệnh chèn T-SQL có đưa ra khóa bảng theo mặc định hay không và đó là lý do tại sao ban đầu nó nhanh hơn?

Trả lời

7

Vâng, tôi nghĩ rằng lời giải thích rất đơn giản (xem tài liệu tham khảo chi tiết hơn here):

Đối với câu hỏi đầu tiên của bạn:

Bảng Khóa - Theo mặc định thiết lập này sẽ được kiểm tra và các khuyến nghị là để cho nó được kiểm tra, trừ khi cùng một bảng đang được sử dụng bởi một số quá trình khác cùng một lúc. Nó chỉ định một khóa bảng sẽ được mua trên bảng đích thay vì mua nhiều mức hàng khóa, điều này có thể biến thành các vấn đề về leo thang khóa.

Đối với tuyên bố chèn, xem xét số lượng hàng lớn cần được chèn, sau đó SQL Server rất có thể sẽ chọn tạo khóa bảng.

Để xác nhận điều này, bạn có thể kiểm tra loại khóa nào được giữ trên bàn bằng cách sử dụng sys.dm_tran_locks DMV. Dưới đây là một vài mẫu tốt về cách diễn giải kết quả (và cũng đọc tốt về khóa leo thang): http://aboutsqlserver.com/2012/01/11/locking-in-microsoft-sql-server-part-12-lock-escalation/.

+0

Ah, vì vậy, các khóa cấp nhiều hàng sẽ giải thích sự chậm trễ. Hay quá cảm ơn. – AS2012

+0

@ AS2012: Không chỉ vậy, nhưng nhiều khóa hơn cũng chiếm nhiều bộ nhớ hơn. Có những bài viết tôi liên kết đến rất phù hợp và chi tiết về chủ đề này. –

Các vấn đề liên quan