Tại sao thống kê cập nhật quét toàn bộ sử dụng 100% CPU trên SQL Server 2014 khi nó sử dụng có thể 20% CPU trên SQL Server 2008 R2, cho cùng một bảng, có khả năng phần cứng tương tự?
Tôi đã xem xét MAXDOP
, các lựa chọn khác, và thực sự thấy không có gì nổi bật. Tôi nhận ra rằng có thể có các cài đặt có thể gây ra điều này, nhưng các cài đặt rất giống nhau cho cả hai cơ sở dữ liệu (ví dụ: MAXDOP
là 4 cho cả hai, với cả hai đều có nhiều lõi). Cả hai đều là phiên bản doanh nghiệp.
Có điều gì đó "khác biệt" trong SQL Server 2014 so với SQL Server 2008 R2 có thể giải thích điều này không? Tôi có tùy chọn bộ nhớ ở 90% cho cả hai máy chủ. Bất kỳ suy nghĩ về những gì để tìm kiếm?
Tôi chạy thống kê cập nhật với quét toàn bộ (100%) mỗi tuần một lần trên hai máy chủ sử dụng SQL Server 2008 R2 / SP3 và SQL Server 2014 / SP2 và các cơ sở dữ liệu có cùng cấu trúc. Trên máy chủ 2008 R2, số liệu thống kê cập nhật của hai bảng rất lớn mất vài giờ, đó là những gì tôi mong đợi, nhưng CPU vẫn ở mức dưới 20% hoặc sử dụng toàn bộ thời gian. Tuy nhiên, trên máy chủ 2014, CPU đạt 100% trong khoảng 40 phút. Các bảng nhỏ hơn một chút trên máy chủ 2014. Tôi thấy điều này bằng cách sử dụng các menu phân tích SQL Monitor.
Đây là đầu ra của tệp nhật ký Ola trên Máy chủ SQL 2014, CPU đạt 100% từ khoảng 2:10 đến 2:45:
Date and time: 2017-06-24 02:10:20
Command: UPDATE STATISTICS [InVA].[dbo].[AuditField] [_WA_Sys_00000005_15502E78] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:07:48
Date and time: 2017-06-24 02:18:08
Date and time: 2017-06-24 02:18:08
Command: UPDATE STATISTICS [InVA].[dbo].[AuditField] [_WA_Sys_00000006_15502E78] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:32:22
Date and time: 2017-06-24 02:50:30
Đây là đầu ra của tệp nhật ký Ola trên Máy chủ SQL 2008 R2 cho hai số liệu thống kê ở trên, nhưng CPU có thể đạt 15%:
Date and time: 2017-06-24 03:30:32
Command: UPDATE STATISTICS [InGA].[dbo].[AuditField] [_WA_Sys_00000003_0425A276] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:05:00
Date and time: 2017-06-24 03:35:32
Date and time: 2017-06-24 03:35:32
Command: UPDATE STATISTICS [InGA].[dbo].[AuditField] [_WA_Sys_00000004_0425A276] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:52:31
Date and time: 2017-06-24 04:28:03
Tôi không thể chạy chúng với máy chủ maxdop = 1 vì điều đó loại bỏ tất cả việc tạo kế hoạch song song và điều đó có thể làm tổn thương ứng dụng. Tôi dự định đi theo hướng ngược lại và tăng lên 8 (có 16 lõi trên hộp) và xem điều gì sẽ xảy ra. Có thể đi nhanh hơn để giảm thời gian CPU được chốt. Công việc này chạy trong khi người dùng hầu hết đã biến mất.
tempdb
cấu hình giống nhau không? Nó có thể được sử dụng trong khiUPDATE STATISTICS
đang chạy, do đó cũng có thể là một vấn đề.