Tôi có bản cài đặt WinServer2012R2 và SQL Server Express 2016 ~ 10 ngày cũ để thử nghiệm. Tôi là người dùng duy nhất trên máy này. Cơ sở dữ liệu có .bak từ SQL Server 2005 có ~ 250MB được khôi phục mà không gặp sự cố nào. Sau khi khởi động lại máy, quy trình "SQL Server NT - 64 Bit" sử dụng CPU 0%.
Sau vài phút hoặc vài giờ và một số truy vấn đơn giản (không cập nhật / chèn!) Từ việc sử dụng CPU SSMS của "SQL Server NT - 64 Bit" đột nhiên nhảy lên ~ 15% và ở đó, ngay cả khi không hoạt động. Từ thời điểm đó, các truy vấn thường mất ít hơn một giây đột nhiên mất 2 phút. Trong một truy vấn thực tế, việc sử dụng CPU KHÔNG tăng. Máy chủ trở nên hầu như không sử dụng được trong trạng thái này.
Chỉ kết nối SQL Server Profiler sau đó mất> 30 giây. Bên cạnh các truy vấn của riêng tôi, tôi chỉ thấy rất ít truy vấn từ SQLServerCEIP / SQLTELEMETRY, ~ 3 mỗi phút.
Khởi động lại SQL-Server không giải quyết được nó. Sử dụng CPU nhảy trở lại ~ 15%. Ngay cả sau nhiều giờ SQL-Server vẫn không phục hồi. Chỉ khởi động lại toàn bộ máy giải quyết vấn đề.
Vì đây là một bản cài đặt "ngoài luồng", chỉ có một cơ sở dữ liệu nhỏ, hầu như không có truy vấn nào, chỉ có tôi là người dùng và có lẽ không có khóa, nhiều bài viết về các vấn đề hiệu năng SQL-Server thông thường nói về rất nhiều điều không nên Tôi thực sự áp dụng ở đây. Có vẻ như SQL-Server chỉ muốn tập trung vào một số nhiệm vụ nội bộ.
Đây là một máy ảo với RAM 2GB và Xeon kép với tốc độ 2 GHz. Tôi cũng có VS2016 trên đó và nó thực sự nhanh. Không có phần mềm chống vi-rút, thậm chí không có Windows Defender. Đã trễ ở đây. Tôi sẽ thử sp_whoisactive vào ngày mai. Tôi thực sự tự hỏi SQL-Server đang làm gì ở đó ... Trên máy trước đó có 1 GB DB tương tự chạy dưới SQLServer2005 trong 10 năm mà không gặp vấn đề gì ...
Tôi không phải là chuyên gia SQL-Profiler. Tôi nên bắt đầu tìm kiếm ở đâu?
auto_update_statistics_async
được bật.