נהל את סביבתך עם Resource Governor ב - SQL SERVER 2014 - ilDBA Portal

נהל את סביבתך עם Resource Governor ב – SQL SERVER 2014

09/11/2014 | פורסם על ידי

ה-Resource Governor נועד לעזור לנו לנהל ולפקח על צריכת המשאבים הפיזיים של ה-SQL Server בין בקשות האפליקציות השונות המתקבלות. הגישה בשימוש ב – Resource Governor היא לזהות את אותן אפליקציות שעלולות לחנוק את שרת ה – SQL Server ולשייך אותם לסביבת עבודה משלהם בעלת משאבים מוגבלים, בצורה הזאת נוכל למנוע עומס יתר על ה -SQL Server.

ה-Resource Governor הינו פיצ'ר שקיים מאז גרסת – SQL Server 2008 בגרסאות Enterprise ,Developer ו-Evaluation בלבד.

איך ה-Resource Governor עובד?

כדי להבין את המנגנון, נגדיר כמה מונחים בסיסים ב -Resource Governor :

Resource Pool

ה – Resource Pool הינו אוסף של משאבים פיזיים בו מגדירים ספי מינימום ומקסימום לכל משאב – לדוגמה CPU, זיכרון ו –IO  (הגבלת IO קיימת רק מגרסת SQL Server 2014 ועליו יורחב בהמשך).

ב – SQL Server ניתן להגדיר עד כ – 18 Pools וקיימים עודPools  2 פנימיים:

  • Internal– משמש את מנוע SQL Server בלבד ואינו ניתן לקינפוג.
  • Default– משמש את כל שלא הוגדר להם Resource Pool ספציפי.

נציין שה – DBA יכול ליצור בעצמו Resource Pools נוספים ולקנפג ספים לכל משאב.

Workload Group

על מנת שלא נצטרך לשייך כל Resource Pool למשתמש ספציפי, ה – Workload נועד להקל עלינו בניהול סביבות העבודה השונות כאשר כל  Resource Pool יכול להכיל Workload Group אחד ומעלה.

בדומה ל – Resource Pool, גם כאן קיימים שני Workload Group פנימיים:

  • Internal– מוקצה ל – Resource Pool פנימי המשמש את מנוע ה – SQL Server.
  • Default– מטפל בכל מי שלא סווג ל – Workload Group ספציפי.

Classifier Function

ה -Classifier Function  הוא החוט המקשר בין המשמש הפונה ל – Workload Group. מדובר בפונקציה רגילה UDF (User Defined Function) אשר מסווגת כל פניה לשרת על פי שם אפליקציה, שם משתמש, IP וכדומה.

יש להגדיר ל -Resource Governor  באיזו Classifier Function להשתמש.

איך הכול מתחבר?

ה -Resource Governor  מזהה כל פנייה המגיע מאפליקציה ומשייך אותה ל -Workload Group  המתאים ע"פ מה שהוגדר ב – Classifier Function ( לפי שם משתמש, שם אפליקציה, IP וכדומה(.

Resource Governor Architecture

מה חדש בגרסת SQL Server 2014

כאשר השתמשנו ב -Resource Governor  בגרסת SQL Server  2008 הייתה לנו רק את היכולת לנהל את משאבי CPU וזיכרון בלבד. בגרסת SQL Server  2014 הורחבה היכולת לשליטה  גם בכמות IOPS (IO Per Seconds) שיוקצו לסביבת עבודה, בכך נוכל לנהל ולפקח על צריכת שימוש ב – Storage מצד חלק מהצרכנים.

בנוסף, הגבלת IOPS יכולה להיות שימושית עבור פעולות אדמיניסטרציה ותחזוקה המתבצעות ע"י DBA וצורכות המון IO (כמו למשל סריקת טבלה, גיבויים, תחזוקת בסיס נתונים וכן הלאה .(ניקח לדוגמא סביבת ייצור שבה נדרשת זמינות גבוהה 24/7, במקרה כזה נוכל להתאים לפעילות כמו בניית אינדקס סביבת עבודה בעלת משאבים מוגבלים על מנת לא להשפיע על התפקוד השוטף של המערכת.

 

כיצד להשתמש ב -Resource Governor

להלן סקריפט ליצירה וקינפוג Resource Governor:

-- The code below establishes a Resource Pool that restricts I/O, 
-- We use a very high value for MAX_IOPS_PER_VOLUME so that we are:
USE master; 
GO
Create RESOURCE POOL IOPool WITH
(
       MAX_IOPS_PER_VOLUME = 100000,
       MIN_IOPS_PER_VOLUME = 1
);


-- To associate a Resource Group to the Resource Pool I created above I will run this code:

USE master;
GO
CREATE WORKLOAD GROUP IOPool
USING IOPool;

-- In the next step I’m creating the Classifier Function that is needed by Resource Governor.
USE master;
GO
CREATE FUNCTION dbo.LimitIO()
RETURNS SYSNAME WITH SCHEMABINDING
AS
BEGIN
       DECLARE @GroupName SYSNAME

       IF SUSER_NAME() = 'MyIOUser'
       BEGIN
              SET @GroupName = 'IOPool'
       END
       ELSE
       BEGIN
              SET @GroupName = 'default'
       END
       RETURN @GroupName;
END

-- associate the Classifier Function within Resource Governor
USE master; 
GO

ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.LimitIO);

-- Reconfigure Resource Governor
ALTER RESOURCE GOVERNOR RECONFIGURE

GO

בוצע יצירה של אינדקס: ,Resource Governor לאחר קינפוג ה –

-- create NONCLUSTERED index on OrderStatus column
use [MyIOTestDB]
go
CREATE NONCLUSTERED INDEX idx_status ON Orders(OrderStatus)
GO

מדידת ביצועי IO באמצעות Performance Monitor :

בוצע הרצה של Rebuild Index על טבלה המכילה 10 מיליון רשומות (המשתמש (MyIOUser ביצע את ההרצה ):

-- rebuild index to measure iops
use [MyIOTestDB]
go
ALTER INDEX idx_status ON Orders REBUILD
GO

הופעל Performance Monitor במהלך הריצה שמדד את ה – counter Disk Read/write IO/sec ולהלן התוצאות:

img2

לפי הגרף, ניתן לזהות כמות IOPS גדולה מאוד, וכי על ה –Storage  הופעל עומס בזמן זה.

לאחר מכן , בוצע קינפוג ספים מחדש של ה – Resource Pool:

USE master; 
GO
alter RESOURCE POOL IOPool WITH
(
       MAX_IOPS_PER_VOLUME = 10,
       MIN_IOPS_PER_VOLUME = 1
);

ALTER RESOURCE GOVERNOR RECONFIGURE
GO

בוצע ניטור נוסף ב – Performance Monitor עבור אותה פעולת Index Rebuild ולהלן התוצאות:

img3Resource Governor הינו פיצ'ר שקיים מ – SQL Server 2008

כפי שניתן לראות, ה – Resource Governor אכן הגביל את כמות ה – IOPS ל – 10 בלבד, וה – Storage  לא עמד בפני שום עומס.

מניסיוני האישי ממליץ מאוד להשתמש ב -Resource Governor , המטרה היא לזהות מערכות העלולות להעמיס על ה -SQL Server  ולשייך אותן לסביבת עבודה בעלת משאבים מוגבלים כך שלא יושפעו מערכות נוספות. בארגוני הפיצ'ר נמצא חיוני מאוד בניהול ב -SQL Server  מרכזי המכיל מאות בסיסי נתונים ומשרת מערכות רבות.

The following two tabs change content below.

אביעד כהן

DBA אפליקטיבי ותשתיתי של SQL Server, Oracle, MySQL בעל ניסיון של למעלה מ – 5 שנים. מתמחה בשיפור ביצועים וכוונון שאילתות, שרידות, יתירות, רפלקציה, Mirroring, Spatial, T - SQL, PowerShell ו – Business Intelligence (SSIS, SSRS, SSAS).

השאר תגובה:

שם (חובה):
אימייל (לא יפורסם) (חובה):
תגובה (חובה):

*



מאמרים קשורים

בדיקת ביצועים של Clustered ColumnStore Index

במאמרים הקודמים דיברנו על איך משתמשים ב-Clustered ColumnStore Index, במאמר זה נשחק קצת עם הביצועים שלו לשם ההתרשמות. כדי לבצע את זה, ניצור 3 טבלאות על פי הבא: SalesOrders_Clustered- עם cluster index על השדה SalesOrderNumber. [...]

עבודה עם Clustered ColumnStore Index

במאמר זה נדבר על העבודה המעשית עם ה-Clustered ColumnStore Index (CCI). נסביר איך יוצרים אותו על חלק מהעמודות, נדבר על Catalog Views ואיך מתחזקים את ה-index. יצירה של CCI על חלק מהעמודות כל העמודות חיבות להיות מוכלות ב CCI [...]

Updateable Clustered ColumnStore Index – אשליה או אמת?

ה-Clustered ColumnStore Index (CCI) הם סוג של אשליה של SQL 2014 מכוון שהאינדקסים הם לא באמת ברי עדכון on the fly. אומנם אנחנו יכולים לעדכן את הנתונים בזמן אמת וזה בהחלט feature חדש עם הרבה אפשרויות, אבל יש להבין את המימוש [...]

Clustered ColumnStore Index מגבלות והערות נוספות

ה-Clustered ColumnStore Index הוא פיצ'ר נחמד של גרסה SQL Server 2014, אבל הוא מגיע עם כמה מגבלות ודברים ששווה לבדוק לפני שרצים לממש אותו. הנה כמה מהדברים האלה… תמיכה ב- isolation levels ל- SQL Server 6 isolation levels: Read Uncommitted, Read [...]
Copyright 2019 ilDBA Portal. Brought to you by Brillix - Israel Leading DBA company. Sponsored by: DBSnaps - Database Video Tutorialss
Website Security Test
%d בלוגרים אהבו את זה: