Giữ chặt giữ
Mặc dù các khía cạnh hiệu suất và cấp phép là thú vị, chúng không phải là khía cạnh duy nhất của khối lượng công việc cần xem xét.
Một điều có thể có tác động đến sự lựa chọn bộ xử lý là các luồng công nhân.
Chủ đề công nhân?
Vâng bạn thân! Chúng là những thứ mà SQL Server của bạn sẽ sử dụng để chạy các truy vấn của bạn và thực hiện tất cả các công cụ nền mà nó cần làm để giữ mọi thứ trong hình dạng.
Khi bạn hết chủ đề công nhân, bạn nhấn THREADPOOL chờ
THREADPOOL?
THREADPOOL. Đây là một trong những chờ đợi nhanh nhất mà bạn có thể có trên máy chủ của mình, cùng với RESOURCE_SEMAPHORE và RESOURCE_SEMAPHORE_QUERY_COMPILE . Nhưng đó là những chờ đợi bộ nhớ, và đây là một câu hỏi CPU.
Vì vậy, trở lại lý do tại sao điều này là wiggity wack.
Đây là cách SQL Server tính toán các luồng công nhân :
Lưu ý cách nhân đôi số lượng lõi không nhân đôi Chủ đề Max Worker và bạn có cùng số với 1 lõi như bạn làm với 4 lõi không? Phương trình là:512 + ((logical CPUs - 4) * 16)
Đó là một sự xấu hổ, bởi vì khi số lượng lõi tăng lên, tốc độ đồng hồ thường tăng lên một hoặc hai thế hệ.
Nhìn vào bất kỳ dòng chip Intel nào gần đây sẽ cho thấy một xu hướng tương tự.
Làm thế nào để tôi biết tôi cần bao nhiêu chủ đề?
Điều này sẽ phụ thuộc rất nhiều vào:
- Số lượng người dùng
- Số lượng truy vấn song song
- Số lượng truy vấn nối tiếp
- Số lượng cơ sở dữ liệu và đồng bộ hóa dữ liệu (Phản chiếu, AG, sao lưu cho Nhật ký vận chuyển)
- Nếu bạn để MAXDOP và CTFP mặc định
Nếu bạn không chạy ra khỏi chúng ngày hôm nay, có lẽ bạn ổn.
Nhưng làm thế nào để bạn biết nếu bạn là?
Có những câu hỏi hay, và có những câu hỏi hay, và tôi nói cho bạn điều gì đó, đó là một CÂU HỎI TUYỆT VỜI .
THREADPOOL có thể biểu hiện dưới dạng sự cố kết nối và bạn có thể thấy các thông báo trong nhật ký lỗi về việc không thể sinh ra một chuỗi .
Bạn cũng có thể xem số liệu thống kê chờ của máy chủ của mình bằng công cụ miễn phí như sp_Blitz hoặc sp_BlitzFirst (tiết lộ đầy đủ, tôi đóng góp cho dự án này).
EXEC sp_Blitz
EXEC sp_BlitzFirst @SinceStartup = 1
Tôi không thể tăng Chủ đề Công nhân Tối đa?
Tăng MWT có thể dẫn đến tăng SOS_SCHEDULER_YIELD
chờ đợi.
Đó không phải là ngày tận thế, nhưng hãy nghĩ về nó giống như thêm một lũ trẻ la hét vào lớp giáo viên.
Thật bất ngờ, mỗi đứa trẻ sẽ khó thu hút sự chú ý hơn.
Khi một quá trình cạn kiệt lượng tử 4ms của nó , có khả năng sẽ có nhiều luồng hơn trước nó chờ đợi để có được trên CPU.
Hiệu suất có thể cảm thấy như nhau.
Làm thế nào tôi có thể sử dụng ít Chủ đề Công nhân hơn?
Bạn độc ác [danh từ] của một [danh từ], đó là những công nhân có gia đình để hỗ trợ! Thế chấp! Ước mơ!
Nhưng không sao, phải tôn trọng điểm mấu chốt. Bạn là ông chủ.
Nơi dễ nhất để bắt đầu là thay đổi cài đặt như MAXDOP và Ngưỡng chi phí cho tính song song từ mặc định.
Nếu bạn có câu hỏi về cách đặt chúng, hãy vào đây:
Sau đó, công việc của bạn trở nên khó khăn hơn rất nhiều. Bạn đã tìm ra những gì sử dụng tất cả các chủ đề. Đôi khi bạn có thể làm điều đó bằng cách nhìn vào số liệu thống kê chờ đợi của bạn.
Cụ thể hơn, nếu bạn có sự chờ đợi cao đối với tính song song ( CXPACKET
) VÀ sự chờ đợi cao đối với các khóa ( LCK_
), thì bạn có thể đang chạy vào chuỗi chặn dài liên quan đến các truy vấn song song.
Bạn biết những gì hôi thối? Trong khi tất cả các truy vấn song song đó đang chờ để lấy khóa của họ, họ không trả lại các luồng được phân bổ.
Bạn gần như có thể nghe thấy rằng bốn VM lõi mà quản trị viên của bạn đảm bảo rằng bạn đã quá đủ cho bất kỳ khối lượng công việc nào đang thở hổn hển, phải không?
Thật không may, loại truy vấn và điều chỉnh chỉ mục bạn phải làm để giải quyết nội dung đó nằm ngoài phạm vi của câu hỏi.
Hi vọng điêu nay co ich!