Một vài thuật ngữ: - Resource pools Nhóm tài nguyên: gồm một phần của CPU và bộ nhớ trong SQL server - Workload groups Nhóm công việc: là tập hợp các phiên làm việc được tạo ra khi sử dụ
Trang 1BIÊN BẢN ĐÁNH GIÁ
Nhóm: 10
Mã LHP: 1582eCIT2511 GV: Hà Minh Phương
1 Nguyễn Thị Trúc 12D190038 Nhóm trưởng
2 Lê Thanh Tùng 12D190039 Thành viên
3 Trần Ánh Tuyết 12D190098 Thành viên
4 Nguyễn Thị Uyên 12D190040 Thành viên
6 Phạm Minh Vân 12D190115 Thành viên
8 Đỗ Hoàng Việt 12D190229 Thành viên
9 Nguyễn Thị Yến 12D190100 Thành viên
Nhóm trưởng Nguyễn Thị Trúc
Mở đầu:
Trang 2Quản lý tài nguyên - Resource Governor - trong SQL Server 2008 là một điểm mới Governor được sử dụng để hạn chế người dùng hoặc nhóm người dùng chi phối các lớp tài nguyên mức cao Các mục có thể được kiểm tra gồm có độ rộng băng tần CPU, thời gian timeout, số lần ngoại lệ, số lần khóa và số lần nhàn rỗi Nếu một mức ngưỡng của Resource Governor đạt tới thì hệ thống có thể kích hoạt một sự kiện hoặc dừng quá trình
I Nội dung.
SQL server 2008 có một nét đặc trưng mới quản lý tài nguyên Nó cho phép bạn giới hạn lượng tiêu thu tài nguyên của server theo từng loại kết nối khác nhau Ví dụ: Bạn
có thể sử dụng nó để giới hạn thời gian xử lý, bộ nhớ cho từng người dùng, ứng dụng
và hệ thống
Một vài thuật ngữ:
- Resource pools (Nhóm tài nguyên): gồm một phần của CPU và bộ nhớ trong SQL server
- Workload groups (Nhóm công việc): là tập hợp các phiên làm việc được tạo ra khi
sử dụng tài nguyên của server Khi tạo một workload group, bạn cần gán giá trị cho vùng chứa tài nguyên
- Classifier function (Chức năng phân loại): giúp SQL Server gán giá trị mới cho các phiên trong nhóm công việc dựa trên mối quan hệ giữa các thuộc tính (như người dùng, ứng dụng…)
Mỗi khi một phiên làm việc mới bắt đầu trên SQL Server, Resource Governor (nếu được kích hoạt) sử dụng một chức năng để phân tích các thuộc tính kết nối của phiên
đó và gán nó vào một Workload groups dựa trên những thuộc tính
Sau đó SQL Server cho phép phiên làm việc sử dụng CPU và tài nguyên bộ nhớ được phân bổ cho các Resource Pool của nó trên cơ sở chia sẻ với các phiên khác trong cùng một Workload group (hoặc Workload group khác được gán trong cùng một Resource pools)
Trang 3Bộ điều chỉnh tài nguyên chỉ phân loại một phiên một lần: khi nó được tạo ra Nếu bạn thay đổi các chức năng phân loại, sự thay đổi này chỉ ảnh hưởng đến các phiên mới Các phiên đang tồn tại sẽ duy trì phân loại ban đầu của chúng
1 Creating resource pools: Tạo nhóm tài nguyên
SQL Server có 2 nhóm tài nguyên được cấu hình trước
- Nhóm tài nguyên nội bộ (trong đó sử dụng các nhóm khối lượng công việc nội bộ): xử lý tài nguyên cho chính SQL Server Không có giới hạn về việc sử dụng các nguồn lực trong các nhóm tài nguyên nội bộ và người dùng không thể sửa đổi được chúng
- Nhóm tài nguyên mặc định: có giá trị tối thiểu là 0 và giá trị tối đa là 100 cho cả
bộ nhớ và thời gian xử lý mặc định Người dùng có thể sửa đổi các đặc điểm nếu muốn
Bạn có thể tạo nhóm tài nguyên riêng bằng cách sử dụng CREATE RESOURCE POOL với cú pháp sau:
CREATE RESOURCE POOL resource_pool_name
WITH ( [ MIN_CPU_PERCENT = value]
[ [ , ] MAX_CPU_PERCENT = value]
[ [ , ] MIN_MEMORY_PERCENT = value]
[ [ , ] MAX_MEMORY_PERCENT = value] )
Trong câu lệnh trên resource_pool_name phải là tên duy nhất với các chữ cái và không quá 128 ký tự Mỗi value nên là các giá trị xác định như một số nguyên từ 0
đến 100 Các tham biến trong nhóm tài nguyên như sau:
MIN_CPU_PERCENT chỉ ra tỷ lệ phần trăm CPU trung bình để đảm bảo cho nhóm tài nguyên
Trang 4Tổng của các giá trị MIN_CPU_PERCENT cho tất cả các nhóm tài nguyên trong một trường hợp không thể vượt quá 100%
MAX_CPU_PERCENT cung cấp tỷ lệ phần trăm tối đa trung bình khi các truy vấn được gán, nhóm tài nguyên sẽ nhận nó khi các truy vấn khác hoàn thành cho thời gian xử lý
MIN_MEMORY_PERCENT chỉ ra các phần bảo đảm tối thiểu mà bộ nhớ dành riêng cho nhóm tài nguyên
Tổng các giá trị MIN_MEMORY_PERCENT cho tất cả các nhóm tài nguyên trong một trường hợp không thể vượt quá 100%
MAX_MEMORY_PERCENT cung cấp số lượng tối đa của bộ nhớ mà một nhóm tài nguyên có thể sử dụng
Ví dụ:
Muốn sử dụng Resource Governor để hạn chế người sử dụng SSMS đến 50% giá trị CPU và tài nguyên bộ nhớ Bạn có thể tạo một nhóm tài nguyên với tên “SSMS pool” với các câu lệnh T-SQL sau:
CREATE RESOURCE POOL SSMSpool
WITH (MAX_CPU_PERCENT = 50,
MAX_MEMORY_PERCENT = 50)
Nếu bạn muốn chỉnh sửa một nhóm tài nguyên sử dụng lệnh ALTER RESOURCE POOL tương tự như sau:
ALTER RESOURCE POOL {resource_pool_name | “default”}
WITH ( [ MIN_CPU_PERCENT = value]
[ [ , ] MAX_CPU_PERCENT = value]
[ [ , ] MIN_MEMORY_PERCENT = value]
Trang 5[ [ , ] MAX_MEMORY_PERCENT = value] )
Ví dụ khi bạn muốn sửa đổi mặc định để nó có thể chỉ tiêu thụ tối đa là 75% CPU
và 25% bộ nhớ Bạn sẽ sử dụng câu lệnh T-SQL sau:
ALTER RESOURCE POOL “default”
WITH ( MAX_CPU_PERCENT = 75,
MAX_MEMORY_PERCENT = 25)
Khi bạn muốn thay đổi tài nguyên được gán cho các nhóm tài nguyên theo mặc định, ban phải kèm theo từ “default” trong dấu ngoặc kép
2 Creating workload groups
SQL Server 2008 cũng đi kèm cấu hình sẵn với hai nhóm khối lượng công việc,
nội bộ và mặc định Những nhóm khối lượng công việc sử dụng các nguồn tài
nguyên đã tạo
Tạo các nhóm khối lượng công việc mới bằng cách sử dụng CREATE GROUP Với cú pháp sau đây:
CREATE WORKLOAD GROUP workload_group_name
WITH ( [ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
[ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
[ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
[ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
[ [ , ] MAX_DOP = value ]
[ [ , ] GROUP_MAX_REQUESTS = value ] )
[ USING { resource_pool_name | “default” } ]
Các tham số để CREATE Workload lệnh GROUP là:
Trang 6IMPORTANCE phản ánh tầm quan trọng tương đối của các nhóm và khối lượng công việc, có thể có một giá trị LOW | MEDIUM | HIGH Resource Governor sử dụng giá trị này phân bổ nguồn lực các nhóm công việc khác nhau bằng cách sử dụng tài nguyên cùng cạnh tranh cho thời gian CPU hoặc bộ nhớ
REQUEST_MAX_MEMORY_GRANT_PERCENT là một giá trị từ 0 đến 100 xác định số tiền tối đa của bộ nhớ mà một truy vấn có thể mất từ hệ thống tài nguyên Con số này là một tỷ lệ phần trăm của bộ nhớ được đến tài nguyên, chứ không phải là một tỷ lệ phần trăm của tổng số bộ nhớ hệ thống
REQUEST_MEMORY_GRANT_TIMEOUT_SEC là số tiền tối đa thời gian (toàn bộ giây) mà một truy vấn có thể chờ đợi cho các nguồn lực được sử dụng bởi truy vấn khác
MAX_DOP là một số giữa 0 và 64 cho thấy mức độ tối đa song song
GROUP_MAX_REQUESTS là một số nguyên xác định số lượng tối đa truy vấn
có thể thực hiện đồng thời trong nhóm
Resource_pool_name là tên của hệ thống tài nguyên có sẵn cho các nhóm khối lượng công việc
Ví dụ:
CREATE Workload GROUP SSMSworkload
WITH ( IMPORTANCE = MEDIUM)
USING SSMSpool
Bạn có thể sửa đổi một nhóm khối lượng công việc hiện tại bằng cách sử dụng các khối lượng công việc ALTER
Lệnh GROUP, trong đó có cú pháp tương tự như CREATE khối lượng công việc
Trang 73 Creating classifier function
Hàm phân loại là hàm do người dùng định nghĩa mà gán phiên mới cho các nhóm tải làm việc dựa trên các thuộc tính liên hệ Sau đây là 1 vài đặc trưng quan trọng của hàm phân loại:
Cần lập hàm phân loại trong cơ sở dữ liệu chính
Hàm phân loại trả về tên của nhóm tải làm việc, nếu nó không trả về tên của 1 nhóm tải làm việc hợp lệ, Resource Governor sẽ gán phiên cho nhóm mặc định
Hàm phân loại phải bị ràng buộc Lập hàm schemabound bằng cách thêm câu lệnh WITH SCHEMABINDING trong định nghĩa hàm
Chỉ có duy nhất 1 hàm phân loại hoạt động 1 lúc
Sau đây là 1 hàm phân loại bổ sung cho trường hợp đã mô tả ở trên: cho tất cả các phiên SSMS vào nhóm tải làm việc SSMS
CREATE FUNCTION dbo.SSMSClassifier()
RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @wkldgroup SYSNAME
IF (APP_NAME() = ‘Microsoft SQL Server Management Studio’)
SET @wkldgroup = ‘SSMSgroup’
ELSE
RETURN NULL
RETURN @wkldgroup
END
4 Activating and deactivating Resource Governor
Khi đã sẵn sàng khởi động Resource Governor, trước hết phải gán cho nó 1 hàm phân loại như lệnh dưới:
Trang 8ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.SSMSClassifier)
Cuối cùng, cần áp dụng những thay đổi đó bằng cách hướng dẫn máy chủ SQL cấu hình lại Resource Governor với những thay đổi Câu lệnh sau thực hiện điều này:
ALTER RESOURCE GOVERNOR RECONFIGURE
Phải đưa ra lệnh RECONFIGURE bất cứ khi nào muốn thay đổi cấu hình
Resource Governor nếu không máy chủ sẽ không thực hiện những thay đổi đó Nếu muốn giải hoạt Resource Governor trên đối tượng máy chủ SQL, sử dụng lệnh sau:
ALTER RESOURCE GOVERNOR DISABLE
II Demo
1 Creating resource pools
a) Đặt ra giới hạn.
_percent
max_cpu_pe rcent
min_memory_p ercent
max_memory_ percent
b) Thực hiện yêu cầu.
Cách 1: Sử dụng truy vấn.
CREATERESOURCEPOOL [ReportQueries] WITH ( min_cpu_percent = ,
max_cpu_percent = 50 ,
min_memory_percent = ,
max_memory_percent = 50 ,
AFFINITY SCHEDULER = AUTO
)
GO
CREATERESOURCEPOOL [FinanceApp] WITH ( min_cpu_percent = ,
max_cpu_percent = 25 ,
Trang 9min_memory_percent = ,
max_memory_percent = 40 ,
AFFINITY SCHEDULER = AUTO
)
GO
ALTER RESOURCE GOVERNOR RECONFIGURE ;
GO
Cách 2: Dùng trên giao diện.
Bước 1: Vào Resource governor -> click chuột phải vào Resource Pool, chọn
New Resource Pool.
Bước 2: Thêm các pool và các giá trị Minium CPU %, Maximum CPU %, Minium Memory % và Maxium memory % Và click [OK]
Trang 102 Creating workload groups
a) Yêu cầ u.
WORKLOA
DGROUP
importanc e
request_
max_cpu _time_se c
request_m ax_memor y_grant_p ercent
request_mem ory_grant_ti meout_sec
ma x_d op
group_ max_re quests
ReportQueri
Cách 1: Thực hiện truy vấn.
USE [master]
GO
CREATE WORKLOADGROUP [ExceQueries] WITH ( group_max_requests = 20 ,
importance = Medium ,
request_max_cpu_time_sec = 1000 ,
request_max_memory_grant_percent = 25 ,
request_memory_grant_timeout_sec = 1000 ,
max_dop = ) USING [FinanceApp]
Trang 11USE [master]
GO
CREATE WORKLOADGROUP [ReportQueriesWG] WITH ( group_max_requests = 30 ,
importance = Medium ,
request_max_cpu_time_sec = 2000 ,
request_max_memory_grant_percent = 40 ,
request_memory_grant_timeout_sec = 1000 ,
max_dop = ) USING [ReportQueries]
GO
Cách 2: Thực hiện trên giao diện
Bước 1: Vào Resource Governor > Resource Pool > System Resource Pool
-> click chuột phải vào FinanceApp chọn New Workload Group.
Bước 2: Tại bảng Wordload Group for resource pool default thêm các
wordload group và các giá trị tương ứng
Trang 123 Creating classifier function
Cách 1: Thực hiện câu truy vấn.
CREATE FUNCTION Resourcegclassifier ()
RETURNSSYSNAME
WITHSCHEMABINDING
AS
BEGIN
DECLARE @WLGRP ASSYSNAME
IF ( Host_name ()='TBSClient')
SET @WLGRP ='ReportQueriesWG'
ELSEIF ( Host_name ()='TBSSQL')
SET @WLGRP ='ExcelQueries'
ELSE
SET @WLGRP ='default'
RETURN @WLGRP
END
GO
Cách 2: Thực hiện trên giao diện.
Trang 13Bước 1: Vào Resource Governor -> Resource Pool - > System Resource Pool
-> click chuột phải vào FinanceApp chọn Properties
Bước 2: Tại button classifier function chọn [dbo] [Resourcegclassifie] và click
[OK]
Trang 144 Activating and deactivating Resource Governor
a) Activating Resource Governor
Cách 1: Thực hiện câu truy vấn.
Enable Resource Governor
ALTER RESOURCEGOVERNOR RECONFIGURE ;
GO
Cách 2: Thực hiện trên giao diện.
Bước 1: Vào Resource Governor -> click chuột phải chọn Enable.
Trang 15b) Deactivating Resource Governor
Cách 1: Thực hiện câu truy vấn.
-Disable Resource Governor
ALTER RESOURCE GOVERNOR Disable;
GO
Cách 2: Thực hiện trên giao diện.
Bước 1: Vào Resource Governor -> click chuột phải chọn Disable.
Trang 16Kết luận:
Sử dụng Resource Governor đã giúp giới hạn tài nguyê, giảm thiểu lãng phí, phân vùng và sử dụng hợp lý tài nguyên CPU và memory
Tài liệu tham khảo: SQL.Server.2008.For.Dummies, Google, Youtube.