KB3180087 - Hiệu năng kém khi bạn chạy INSERT. Thao tác CHỌN trong SQL Server 2016 hoặc SQL Server 2017 trên Windows

Áp dụng cho
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use)

Triệu chứng

Trong Microsoft SQL Server 2016 hoặc SQL Server 2017 trên Windows, bạn có thể gặp phải tình trạng giảm hiệu suất trong các trường hợp sau:

  • Khi bạn chạy nhiều thao tác INSERTSELECT đồng thời vào bảng tạm thời.
  • Khi bạn truy vấn sys.dm_os_waiting_tasks. Trong trường hợp này, cột resource_description hiển thị thời gian chờ trên trang Dung lượng Trang trống (PFS) cho nhiều yêu cầu.

Nguyên nhân

Tính song song INSERT cho các thao tác INSERTSELECT đã được giới thiệu trong SQL Server 2016 hoặc SQL Server 2017 trên Windows. INSERT vào các bảng tạm thời cục bộ (chỉ những bảng được xác định bằng tiền tố # và không phải các bảng tạm thời toàn cục được xác định bằng tiền tố ##) giờ đây sẽ tự động được bật để song song mà không cần phải chỉ định gợi ý TABLOCK mà bảng không phải tạm thời yêu cầu. 

Mặc dù tính song song INSERT thường cải thiện hiệu suất truy vấn, nếu có một số lượng đáng kể các thao tác INSERTSELECT bảng tạm thời đồng thời, sự tranh chấp có thể là đáng kể đối với các trang PFS. Trong một số trường hợp, điều này có thể làm giảm tổng thể hiệu suất.

Giải pháp

Sự cố này được khắc phục lần đầu trong SQL Server 2016 Gói dịch vụ 1. Sau khi bạn áp dụng SQL Server 2016 SP1, CHÈN Song song trong INSERT. SELECT đối với các bảng tạm thời cục bộ bị tắt theo mặc định, giúp giảm sự tranh chấp trên trang PFS và cải thiện hiệu suất tổng thể cho khối lượng công việc đồng thời. Nếu muốn INSERT song song với các bảng tạm thời cục bộ, người dùng nên sử dụng gợi ý TABLOCK trong khi chèn vào bảng tạm thời cục bộ.

Nếu bạn đã bật cờ Theo dõi 9495 được đề cập trong phần giải pháp thay thế, bạn nên tắt và loại bỏ cờ theo dõi sau khi áp dụng SQL Server 2016 SP1 dưới dạng cờ Theo dõi 9495 sẽ tắt tính năng chèn song song bất kể gợi ý TABLOCK.

Thông tin cập nhật tích lũy

Sự cố này đã được khắc phục trong bản cập nhật tích lũy sau đây cho SQL Server 2016:

Giới thiệu về các bản cập nhật tích lũy cho SQL Server