KB2887888 - KHẮC PHỤC: Hiệu năng chậm trong SQL Server khi bạn dựng chỉ mục trên loại dữ liệu không gian của bảng lớn trong phiên bản SQL Server 2012 hoặc SQL Server 2014

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

Triệu chứng

Khi bạn cố gắng xây dựng chỉ mục (bằng cách sử dụng CREATE INDEX hoặc ALTER INDEX) trên loại dữ liệu không gian của bảng lớn trong Microsoft SQL Server 2012 hoặc SQL Server 2014, loại chờ CMEMTHREAD sẽ có nhiều tranh chấp và hiệu suất của SQL Server sẽ giảm.

Giải pháp

Sự cố này được khắc phục lần đầu tiên trong bản cập nhật tích lũy tiếp theo của SQL Server.

Cập nhật tích lũy 1 cho SQL Server 2014 /en-us/help/2931693

Bản cập nhật tích lũy 7 cho SQL Server 2012 SP1 /en-us/help/2894115

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

Mỗi bản cập nhật tích lũy mới dành cho SQL Server chứa tất cả các bản sửa lỗi nóng và bản sửa lỗi bảo mật được tích hợp trong bản cập nhật tích lũy trước đó. Xem các bản cập nhật tích lũy mới nhất cho SQL Server:

      

Thông tin gói cập nhật hotfix Hotfix Microsoft có sẵn hotfix được hỗ trợ. Tuy nhiên, hotfix này chỉ nhằm mục đích khắc phục sự cố được mô tả trong bài viết này. Chỉ áp dụng hotfix này cho các hệ thống đang gặp phải sự cố cụ thể này.

Nếu hotfix sẵn có để tải xuống, sẽ có một phần "Hotfix Tải xuống Sẵn dùng" ở phía trên cùng của bài viết Cơ sở Kiến thức này. Nếu mục này không xuất hiện, hãy gửi yêu cầu đến Dịch vụ khách hàng và Hỗ trợ của Microsoft để tải hotfix.

Lưu ý Nếu phát sinh sự cố bổ sung hoặc nếu cần khắc phục sự cố thì có thể bạn phải tạo yêu cầu dịch vụ riêng. Chi phí hỗ trợ thông thường sẽ áp dụng đối với các vấn đề và câu hỏi hỗ trợ bổ sung không phù hợp với hotfix cụ thể này. Để biết danh sách đầy đủ các số điện thoại hỗ trợ và dịch vụ khách hàng của Microsoft hoặc để tạo một yêu cầu dịch vụ riêng biệt, hãy truy cập trang web sau của Microsoft:

/contactus/?ws=support Lưu ý: Biểu mẫu "Hotfix Tải xuống Sẵn dùng" sẽ hiển thị các ngôn ngữ cho hotfix khả dụng. Nếu bạn không thấy ngôn ngữ của mình thì đó là do không có hotfix cho ngôn ngữ đó.

Xem thêm thông tin

Loại chờ CMEMTHREAD biểu thị thời gian chờ trên các đối tượng bộ nhớ nội bộ, an toàn cho chuỗi. Mức độ song song truy vấn cao hơn có thể kích hoạt tình trạng chờ dẫn đến làm giảm hiệu suất của hoạt động không gian.

Bản sửa lỗi này phân vùng CMEMTHREAD liên kết với "Đối tượng bộ nhớ không gian" bằng cách sử dụng phân vùng nút NUMA. Điều này giảm hoạt động đồng thời của worker đối với số lượng bộ lập lịch hoạt động trên một nút duy nhất. Đối với các hệ thống có mức bộ lập lịch cao hơn trên mỗi nút, cờ theo dõi –T8048 có thể được sử dụng để phân vùng thêm tất cả các đối tượng bộ nhớ cho phép phân vùng bằng bộ lập lịch. Sử dụng cờ theo dõi cẩn thận vì nó gây ra một lượng nhỏ chi phí bộ nhớ cho tất cả các đối tượng bộ nhớ được phân vùng nút NUMA.

Lưu ý Đối tượng bộ nhớ không gian được tạo ra khi tải SqlServerSpatial110.dll vào không gian địa chỉ SQL Server trình. Trong hầu hết các điều kiện, điều này yêu cầu phải khởi động lại quy trình SQL Server để áp dụng hiệu ứng cờ theo dõi.

Loại chờ CMEMTHREAD sẽ tăng dần cho mọi đối tượng bộ nhớ an toàn cho luồng chứ không chỉ đối tượng không gian. Có thể sử dụng định nghĩa phiên XEvent và sử dụng các ký hiệu công khai để xác định dòng mã cụ thể đang tạo ra CMEMTHREAD WAITS:CREATE EVENT SESSION wait_stacks
TRÊN MÁY CHỦ
THÊM sqlos.wait_info SỰ KIỆN
(
      action(package0.callstack)
      trong đó opcode = 1 -- đợi hoàn tất
            và wait_type = 191 -- CMEMTHREAD
)
thêm package0.asynchronous_bucketizer mục tiêu (SET source_type = 1, source = 'package0.callstack'),
thêm package0.ring_buffer mục tiêu (SET max_memory = 4096)
Với (MAX_DISPATCH_LATENCY = 1 GIÂY)
Truy cập
wait_stacks phiên ALTER EVENT trên máy chủ trạng thái = bắt đầu
đi

Chạy mô phỏng

chọn event_session_address, target_name, execution_count, truyền (target_data dưới dạng XML)
từ sys.dm_xe_session_targets XST
      nối trong sys.dm_xe_sessions xs trên (xst.event_session_address = xs.address)
trong đó xs.name = 'wait_stacks'
đi

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho".