Sql server da Resource Governor kullanaranak serverınızda
transactionlara aciliyet ve önemlilik durumlarına göre kısıtlama
getirebilirisiniz.
Bu işlemin bir değişik versiyonu default olarak sql server tarafından yapılmakta, incelemek isterseniz management studio interface'imizden magement menüsü altındaki "Resource Governor" grubunu açıp "Resource Pools" ı inceleye bilirsiniz.
burada poollar default olarak sorgular arasında önceliklendirme yapmakta ama yapay zeka kullanamadıklarından henüz aciliyet ve önem derecesine göre öncelik tanıma noktasını ayırt edememektedirler.
Sql server üzerinde bazı kullanıcılara veya gruplara memory ve cpu bazlı çeşitli kısıtlamalar getirerek workload tanımlayıp sorgu, user vb gibi bir çok bazda öncelik tanımlayabilirsiniz.
Resource Governor direk management studio wizart'ı ile yapabiliriz. yanlız işin son bir parçası olan classified funciton tanımlamak için t-sql den faydalanmamız gerekir.
Resource Governor kıstasını şu şekilde tanımlayabiliriz.
Bu işlemin bir değişik versiyonu default olarak sql server tarafından yapılmakta, incelemek isterseniz management studio interface'imizden magement menüsü altındaki "Resource Governor" grubunu açıp "Resource Pools" ı inceleye bilirsiniz.
burada poollar default olarak sorgular arasında önceliklendirme yapmakta ama yapay zeka kullanamadıklarından henüz aciliyet ve önem derecesine göre öncelik tanıma noktasını ayırt edememektedirler.
Sql server üzerinde bazı kullanıcılara veya gruplara memory ve cpu bazlı çeşitli kısıtlamalar getirerek workload tanımlayıp sorgu, user vb gibi bir çok bazda öncelik tanımlayabilirsiniz.
Resource Governor direk management studio wizart'ı ile yapabiliriz. yanlız işin son bir parçası olan classified funciton tanımlamak için t-sql den faydalanmamız gerekir.
Resource Governor kıstasını şu şekilde tanımlayabiliriz.
use master
go
-- önce workload oluşturuyorum
CREATE WORKLOAD GROUP BI_User_groups;
go
-- Classifier fonksiyonu tanımlıyorum bun noktada dikkat edilmesi gereken bir Classifier fonksiyonu bir sistem üzerinde yanlızca bir adet çalışır
CREATE FUNCTION dbo.Classifier_fonksiyon()
RETURNS sysname
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_adi sysname
IF (
SUSER_SNAME() IN ('BI_User')
AND IS_MEMBER ('db_admin') = 1
--AND HOST_NAME() IN ('BI_User')
--AND IS_SRVROLEMEMBER('dba') = 1
--AND APP_NAME()
)
BEGIN
SET @grp_adi= 'BI_User_groups';
END
RETURN @grp_adi
END;
GO
-- Resource Governor tanımladığımız classifier fonksiyonu ile register ediyorum
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION= dbo.fnResourceGovernorClassifier);
GO
CREATE RESOURCE POOL MaxMemory_icin
WITH (
MAX_MEMORY_PERCENT = 60
-- aynı şekilde aşağıdaki kıstaslardada kısıtlama tanımlayabilirsiniz.yuzde olarak
--, MIN_CPU_PERCENT = 0
--, MIN_CPU_PERCENT = 0
--, MAX_CPU_PERCENT = 80
--, MIN_MEMORY_PERCENT = 0
);
GO
ALTER WORKLOAD GROUP BI_User_groups
WITH (
MAX_DOP = 1
--, IMPORTANCE = { LOW | MEDIUM | HIGH }
--, REQUEST_MAX_MEMORY_GRANT_PERCENT = 40
--, REQUEST_MAX_CPU_TIME_SEC = 600
--, REQUEST_MEMORY_GRANT_TIMEOUT_SEC = 600
--, GROUP_MAX_REQUESTS = 50
)
USING MaxMemory_icin
GO
-- Resource Governor ı start ediyorum.
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
Resource Governer ile vermiş
olduğumuz kıstaslar eşliğinde çalışıp çalışmadığını, kontrol etmek
için ise aşağıdaki sorguyu çalıştırıp kontrollerinizi yapabilirsiniz.
SELECT
es.session_id ,
es.login_time ,
es.login_name ,
[Group Name] = wg.name ,
[Host Name] = es.host_name ,
Application = es.program_name ,
Pool_Max_Memory_kb = rp.max_memory_kb,
Pool_Max_Memory_kb = rp.used_memory_kb ,
es.client_interface_name,
es.memory_usage,
es.total_elapsed_time
--buradaki * kullanarak tüm kontrollere de ulaşabiliriz SELECT *
FROM
sys.dm_resource_governor_workload_groups wg
INNER JOIN
sys.dm_exec_sessions es
ON es.group_id = wg.group_id
LEFT OUTER JOIN
sys.dm_resource_governor_resource_pools rp
on rp.pool_id = wg.pool_id
WHERE
wg.group_id > 2 --grup id ye göre kontrol edebiliriz.
Not: tüm değerler için isteğe göre aşağıdaki sorguları
select * from sys.dm_resource_governor_workload_groups
select * from sys.dm_resource_governor_workload_groups
select * from sys.dm_exec_sessions
ve
select * from sys.dm_resource_governor_resource_pools
Hiç yorum yok:
Yorum Gönder