Có rất nhiều thứ đang diễn ra ở đây, và hầu hết nó khá rộng và mơ hồ.
2008R2 RTM ra mắt vào ngày 21 tháng 4 năm 2010. Nó hoàn toàn không hỗ trợ. Bạn sẽ muốn ưu tiên nhận Gói dịch vụ mới nhất, được phát hành chỉ khoảng 3 năm trước cho đến ngày. Bằng cách đó, bạn sẽ được bảo vệ nếu bạn gặp phải một lỗi lạ hoặc thứ gì đó. Đi qua đây để tìm ra những gì bạn cần tải về.
Vì bạn đã thêm vCPUs (từ 1 đến 4) và không thay đổi bất kỳ cài đặt nào, giờ đây các truy vấn của bạn có thể đi song song. Tôi biết điều này có vẻ như tất cả chúng sẽ nhanh hơn, nhưng hãy kiên nhẫn!
Bạn có thể đã thêm RAM, nhưng bạn có thể không thay đổi Bộ nhớ máy chủ tối đa để máy chủ của bạn có thể tận dụng lợi thế của nó.
Tìm hiểu những gì máy chủ của bạn đang chờ đợi. Một dự án nguồn mở mà tôi làm việc cung cấp các tập lệnh miễn phí để giúp bạn đo SQL Server của mình. Đi về phía trên nếu bạn muốn cho họ một thử.
Bạn sẽ muốn lấy sp_BlitzFirst để kiểm tra số liệu thống kê chờ của máy chủ của bạn. Bạn có thể chạy nó một vài cách.
Điều này sẽ cho bạn thấy những gì máy chủ của bạn đã chờ đợi kể từ khi nó khởi động.
EXEC dbo.sp_BlitzFirst @SinceStartup = 1;
Điều này sẽ cho bạn thấy những truy vấn nào đang chờ đợi bây giờ, trong một cửa sổ 30 giây.
EXEC dbo.sp_BlitzFirst @Seconds = 30, @ExpertMode = 1;
Khi bạn tìm ra những truy vấn nào đang chờ đợi (có rất nhiều nội dung được viết về số liệu thống kê chờ đợi ngoài kia), bạn có thể bắt đầu thực hiện các thay đổi để kiểm soát mọi thứ.
Nếu bạn thấy họ chờ đợi CXPACKET
, điều đó có nghĩa là các truy vấn của bạn sẽ diễn ra song song và có thể chà đạp lên nhau. Nếu bạn đạt được điều này, có lẽ bạn sẽ muốn xem xét Ngưỡng chi phí cho tính song song lên tới 50 và có thể giảm MAXDOP xuống còn 2.
Sau bước này là khi bạn muốn sử dụng một cái gì đó như sp_WhoIsActive hoặc sp_BlitzWho (cái sau nằm trong repo GitHub từ trước đó) để bắt đầu nắm bắt các kế hoạch truy vấn. Ngoài số liệu thống kê chờ đợi, chúng là một trong những điều quan trọng nhất bạn có thể xem xét để tìm ra điều gì sai.
Bạn cũng có thể muốn xem bài viết này của Jonathan Kehayias về Bộ đếm VMWare để kiểm tra liên quan đến SQL Server.
Cập nhật
Xem lại các số liệu thống kê chờ đợi và cậu bé là lạ. Chắc chắn có điều gì đó xảy ra với CPU. Máy chủ của bạn chủ yếu ngồi xung quanh buồn chán, nhưng khi mọi thứ nóng lên, mọi thứ trở nên tồi tệ. Tôi sẽ cố gắng phá vỡ điều này một cách dễ dàng.
Bạn đang chờ đợi một chất độc được gọi là THREADPOOL
. Bạn không có quá nhiều thứ, nhưng điều đó có ý nghĩa vì máy chủ của bạn không hoạt động khủng khiếp. Tôi sẽ giải thích tại sao trong một phút nữa.
Bạn đã thực sự chờ đợi trung bình dài SOS_SCHEDULER_YIELD
và CXPACKET
. Bạn đang sử dụng máy ảo, vì vậy bạn sẽ chắc chắn rằng Máy chủ SQL có đặt chỗ hoặc hộp không bị đăng ký quá khủng khiếp. Một người hàng xóm ồn ào thực sự có thể làm hỏng ngày của bạn ở đây. Bạn cũng sẽ muốn đảm bảo rằng máy chủ / máy khách VM / máy chủ VM không chạy ở chế độ Cân bằng. Điều này làm cho CPU của bạn quay xuống tốc độ thấp không cần thiết và chúng không ngay lập tức quay trở lại tốc độ tối đa.
Làm thế nào để họ buộc trong? Với 4 CPU bạn có 512 luồng công nhân. Hãy nhớ rằng, bạn có cùng số tiền với một CPU, nhưng bây giờ các truy vấn của bạn có thể đi song song, chúng có thể tiêu thụ nhiều luồng công nhân hơn. Trong trường hợp của bạn, 4 luồng trên mỗi nhánh song song của một truy vấn song song.
Điều gì đang xảy ra song song? Nhiều khả năng là tất cả mọi thứ. Ngưỡng chi phí mặc định cho tính song song là 5. Con số đó được làm mặc định vào cuối những năm 90 làm việc trên máy tính để bàn trông như thế này .
Cấp, phần cứng của bạn nhỏ hơn hầu hết các máy tính xách tay, nhưng bạn vẫn đi trước một chút về điều đó.
Khi có nhiều truy vấn song song, bạn sẽ hết các luồng công nhân đó. Khi điều đó xảy ra, các truy vấn chỉ cần ngồi chờ đợi các chủ đề được thực hiện. Đó cũng là nơi SOS_SCHEDULER_YIELD
xuất hiện. Các truy vấn đang loại bỏ CPU và không hoạt động trở lại trong một thời gian dài. Tôi không thấy bất kỳ sự chờ đợi chặn nào, vì vậy rất có thể bạn chỉ bị nhồi nhét vào sự chờ đợi song song truy vấn nội bộ.
Bạn có thể làm gì?
- Đảm bảo không có gì ở chế độ Cân bằng điện
- Thay đổi MAXDOP thành 2
- Thay đổi ngưỡng chi phí cho song song thành 50
- Thực hiện theo bài viết Jon K. ở trên để xác thực sức khỏe VM
- Sử dụng tập lệnh được gọi
sp_BlitzIndex
để tìm kiếm bất kỳ yêu cầu chỉ mục bị thiếu.
Để khắc phục sự cố kỹ lưỡng hơn, hãy xem whitepaper tôi đã viết cho Google về kích thước phần cứng trong đám mây.
Hi vọng điêu nay co ich!