Kiểm soát tài nguyên SQL Server
Mặc dù một số phiên bản do SQL Servers hoặc Azure SQL quản lý được dành riêng cho cơ sở dữ liệu của một ứng dụng duy nhất, nhưng cấu hình thường thấy trong các ứng dụng quan trọng, nhiều máy chủ hỗ trợ cơ sở dữ liệu cho nhiều ứng dụng với các yêu cầu hiệu suất khác nhau và chu kỳ khối lượng công việc tối đa. Việc cân bằng các yêu cầu khác nhau này có thể là một thách thức đối với người quản trị. Một cách hiệu quả để quản lý tài nguyên máy chủ là sử dụng Thống đốc Tài nguyên, được giới thiệu trong SQL Server 2008.
Resource Governor là một tính năng trong các phiên bản được quản lý SQL Server và Azure SQL cho phép kiểm soát chi tiết đối với CPU, I/O vật lý và tài nguyên bộ nhớ cho các yêu cầu ứng dụng đến. Khi được kích hoạt ở cấp độ trường hợp, Thống đốc tài nguyên sử dụng một chức năng phân loại để xác định cách xử lý các kết nối, chia nhỏ phiên thành các nhóm khối lượng công việc. Mỗi nhóm khối lượng công việc được cấu hình để sử dụng một nhóm tài nguyên hệ thống cụ thể.
Tập hợp nguồn lực
Nhóm tài nguyên đại diện cho các tài nguyên vật lý có sẵn trên máy chủ. SQL Server luôn có hai nhóm: mặc định và nội bộ, ngay cả khi Thống đốc Tài nguyên không được kích hoạt. Vùng nội bộ được dành riêng cho các hàm SQL Server quan trọng và không thể bị hạn chế. Nhóm mặc định, cùng với bất kỳ nhóm tài nguyên nào bạn xác định rõ ràng, có thể được cấu hình với giới hạn về các tài nguyên họ có thể sử dụng. Đối với mỗi vùng không liên quan, bạn có thể chỉ định các giới hạn sau đây:
- Phần trăm CPU Tối thiểu/Tối đa
- Giới hạn phần trăm CPU
- Phần trăm bộ nhớ Tối thiểu/Tối đa
- Mối quan hệ nút NUMA
- IOPs Nhỏ nhất/Tối đa trên mỗi ổ đĩa
Ghi
Những thay đổi đối với nhóm tài nguyên chỉ tác động đến các phiên mới, chứ không ảnh hưởng đến các phiên đang diễn ra. Vì vậy, sửa đổi một hồ bơi sẽ không hạn chế các nguồn lực của một quá trình lâu dài. Ngoại lệ đối với quy tắc này là vùng bên ngoài được sử dụng với Dịch vụ Máy Học Máy SQL Server, có thể bị giới hạn bởi thay đổi vùng ngay cả đối với các phiên đang diễn ra.
Tất cả các thiết đặt vùng tài nguyên, ngoại trừ tỷ lệ phần trăm CPU tối thiểu và tối đa đại diện cho giới hạn cứng không thể vượt quá. Tỷ lệ phần trăm CPU tối thiểu/tối đa chỉ áp dụng khi có sự gợi ý từ CPU. Ví dụ: nếu bạn đặt tối đa 70%, khối lượng công việc có thể sử dụng tối đa 100% chu kỳ CPU khả dụng khi không có cạnh nhau. Tuy nhiên, nếu các khối lượng công việc khác đang chạy, khối lượng công việc sẽ bị hạn chế ở 70%.
Nhóm Khối lượng công việc
Nhóm khối lượng công việc đóng vai trò như một bộ chứa cho các yêu cầu phiên, được phân loại theo hàm phân loại. Tương tự như nhóm tài nguyên, có hai nhóm dựng sẵn: mặc định và nội bộ. Mỗi nhóm khối lượng công việc được liên kết với một nhóm tài nguyên duy nhất, nhưng một nhóm tài nguyên có thể lưu trữ nhiều nhóm khối lượng công việc. Theo mặc định, tất cả các kết nối được chuyển hướng đến nhóm khối lượng công việc mặc định trừ khi hàm phân loại gán chúng cho một nhóm do người dùng xác định. Nhóm khối lượng công việc mặc định sử dụng các tài nguyên được phân bổ cho nhóm tài nguyên mặc định.
Hàm bộ phân loại
Chức năng phân loại được chạy tại thời điểm kết nối được thiết lập để phiên bản SQL Server và phân loại mỗi kết nối vào một nhóm khối lượng công việc nhất định. Nếu hàm trả về NULL, mặc định hoặc tên của nhóm khối lượng công việc không tồn tại, phiên sẽ được chuyển vào nhóm khối lượng công việc mặc định. Vì bộ phân loại được chạy ở mọi kết nối nên cần được kiểm tra hiệu quả. Hình ảnh sau đây hiển thị hàm phân loại mẫu phân loại người dùng dựa trên tên người dùng của họ.
CREATE FUNCTION dbo.RGClassifier()
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @WorkloadGroup AS SYSNAME
IF(SUSER_NAME() = 'ReportUser')
SET @WorkloadGroup = 'ReportServerGroup'
ELSE IF (SUSER_NAME() = 'PrimaryUser')
SET @WorkloadGroup = 'PrimaryServerGroup'
ELSE
SET @WorkloadGroup = 'default'
RETURN @WorkloadGroup
END
Bạn có thể tăng độ phức tạp của định nghĩa hàm được hiển thị trong ví dụ, nhưng bạn nên xác minh rằng hàm phức tạp hơn không ảnh hưởng đến hiệu suất người dùng.
Trường hợp sử dụng Thống đốc Tài nguyên
Thống đốc Tài nguyên được sử dụng chủ yếu trong các kịch bản đa năng, trong đó một nhóm các cơ sở dữ liệu chia sẻ một phiên bản SQL Server duy nhất và hiệu suất cần được giữ nhất quán cho tất cả người dùng của máy chủ. Bạn cũng có thể sử dụng Thống đốc Tài nguyên để giới hạn tài nguyên được sử dụng bởi các hoạt động bảo trì như kiểm tra tính nhất quán và xây dựng lại chỉ mục, để cố gắng đảm bảo đủ tài nguyên cho truy vấn người dùng trong cửa sổ bảo trì của bạn.