ãŸããã
å€ãã®å ŽåãMS SQL Server DBMSã®ãŠãŒã¶ãŒãéçºè
ãããã³ç®¡çè
ã¯ãããŒã¿ããŒã¹ããã©ãŒãã³ã¹ã®åé¡ãŸãã¯DBMSäžè¬ã«çŽé¢ãããããMS SQL Serverã®ç£èŠã¯éåžžã«éèŠã§ãã
ãã®èšäºã¯ã
Zabbixã䜿çšããŠMS SQL ServerããŒã¿ããŒã¹ãç£èŠããèšäºãžã®è¿œå èšäºã§ãããç¹ã«ãMS SQL Serverã®ç£èŠã«é¢ããããã€ãã®åŽé¢ãç¹ã«äžè¶³ããŠãããªãœãŒã¹ããã°ããç¹å®ããæ¹æ³ãããã³ãã¬ãŒã¹ãã©ã°ãèšå®ããããã®æšå¥šäºé
ã«ã€ããŠèª¬æããŸãã
次ã®ã¹ã¯ãªãããæ©èœãããã«ã¯ã次ã®ããã«ç®çã®ããŒã¿ããŒã¹ã«infã¹ããŒããäœæããå¿
èŠããããŸãã
Infã¹ããŒãã®äœæuse <_>; go create schema inf;
RAMã®äžè¶³ãæ€åºããæ¹æ³
RAMäžè¶³ã®æåã®ææšã¯ãMS SQL Serverã®ã€ã³ã¹ã¿ã³ã¹ãããã«å²ãåœãŠããããã¹ãŠã®RAMã䜿ãæãããå Žåã§ãã
ãããè¡ãã«ã¯ã次ã®inf.vRAMãã¥ãŒãäœæããŸãã
inf.vRAMãã¥ãŒã®äœæ CREATE view [inf].[vRAM] as select a.[TotalAvailOSRam_Mb]
次ã«ã次ã®ã¯ãšãªã«ãããMS SQL Serverã®ã€ã³ã¹ã¿ã³ã¹ãããã«å²ãåœãŠããããã¹ãŠã®ã¡ã¢ãªãæ¶è²»ããŠããããšã確èªã§ããŸãã
select SQL_server_physical_memory_in_use_Mb, SQL_server_committed_target_Mb from [inf].[vRAM];
ã€ã³ãã£ã±ãŒã¿ãŒSQL_server_physical_memory_in_use_Mbãåžžã«SQL_server_committed_target_Mbããå°ãããªãå Žåãäºæ³ã®çµ±èšã確èªããå¿
èŠããããŸãã
æåŸ
å€ã®çµ±èšããRAMã®äžè¶³ã倿ããã«ã¯ãinf.vWaitsãã¥ãŒãäœæããŸãã
inf.vWaitsãã¥ãŒã®äœæ CREATE view [inf].[vWaits] as WITH [Waits] AS (SELECT [wait_type],
ãã®å Žåãæ¬¡ã®ã¯ãšãªã«ãã£ãŠRAMã®äžè¶³ã倿ã§ããŸãã
SELECT [Percentage] ,[AvgWait_S] FROM [inf].[vWaits] where [WaitType] in ( 'PAGEIOLATCH_XX', 'RESOURCE_SEMAPHORE', 'RESOURCE_SEMAPHORE_QUERY_COMPILE' );
ããã§ã¯ãPercentageãšAvgWait_Sã®ããã©ãŒãã³ã¹ã«æ³šæãæãå¿
èŠããããŸãã ããããå
šäœãšããŠéèŠãªå ŽåãMS SQL Serverã®ã€ã³ã¹ã¿ã³ã¹ã«å¯ŸããŠRAMãååã§ãªãå¯èœæ§ãéåžžã«é«ããªããŸãã åºæ¬çãªå€ã¯ãã·ã¹ãã ããšã«åå¥ã«æ±ºå®ãããŸãã ãã ããæ¬¡ã®ã¡ããªãã¯ã§éå§ã§ããŸãïŒPercentage> = 1 and AvgWait_S> = 0.005ã
ã€ã³ãžã±ãŒã¿ãç£èŠã·ã¹ãã ïŒZabbixãªã©ïŒã«åºåããã«ã¯ã次ã®2ã€ã®ã¯ãšãªãäœæã§ããŸãã
- RAMã«å¯ŸããæåŸ
ã®ã¿ã€ããå ããå²åïŒãã®ãããªãã¹ãŠã®ã¿ã€ãã®æåŸ
ã®åèšïŒïŒ
select coalesce(sum([Percentage]), 0.00) as [Percentage] from [inf].[vWaits] where [WaitType] in ( 'PAGEIOLATCH_XX', 'RESOURCE_SEMAPHORE', 'RESOURCE_SEMAPHORE_QUERY_COMPILE' );
- RAMã®äºæž¬ã¿ã€ããå ããããªç§ïŒãã®ãããªãã¹ãŠã®äºæž¬ã¿ã€ãã®ãã¹ãŠã®å¹³åé
å»¶ã®æå€§å€ïŒïŒ
select coalesce(max([AvgWait_S])*1000, 0.00) as [AvgWait_MS] from [inf].[vWaits] where [WaitType] in ( 'PAGEIOLATCH_XX', 'RESOURCE_SEMAPHORE', 'RESOURCE_SEMAPHORE_QUERY_COMPILE' );
ããã2ã€ã®ã€ã³ãžã±ãŒã¿ãŒã®ååŸå€ã®ãã€ããã¯ã¹ã«åºã¥ããŠãMS SQL Serverã®ã€ã³ã¹ã¿ã³ã¹ã«ååãªRAMããããã©ãããçµè«ä»ããããšãã§ããŸãã
CPUéè² è·æ€åºæ¹æ³
CPUæéã®äžè¶³ãç¹å®ããã«ã¯ãsys.dm_os_schedulersã·ã¹ãã ãã¥ãŒã䜿çšããŸãã ããã§ãrunnable_tasks_countãåžžã«1ãã倧ããå Žåãã³ã¢æ°ãMS SQL Serverã®ã€ã³ã¹ã¿ã³ã¹ã«å¯ŸããŠååã§ãªãå¯èœæ§ãé«ããªããŸãã
ç£èŠã·ã¹ãã ïŒZabbixãªã©ïŒã§ã€ã³ãžã±ãŒã¿ãŒã衚瀺ããã«ã¯ã次ã®ã¯ãšãªãäœæã§ããŸãã
select max([runnable_tasks_count]) as [runnable_tasks_count] from sys.dm_os_schedulers where scheduler_id<255;
ãã®ã€ã³ãžã±ãŒã¿ãŒã®ååŸå€ã®ãã€ããã¯ã¹ã«åºã¥ããŠãMS SQL Serverã®ã€ã³ã¹ã¿ã³ã¹ã«ååãªããã»ããµãŒæéïŒCPUã³ã¢ã®æ°ïŒããããã©ãããçµè«ä»ããããšãã§ããŸãã
ãã ããèŠæ±èªââäœãäžåºŠã«è€æ°ã®ã¹ã¬ãããèŠæ±ã§ãããšããäºå®ãèŠããŠããããšãéèŠã§ãã ãŸãããªããã£ãã€ã¶ãŒããªã¯ãšã¹ãèªäœã®è€éããæ£ããè©äŸ¡ã§ããªãå ŽåããããŸãã ãã®åŸãèŠæ±ã«å²ãåœãŠãããã¹ã¬ãããå€ãããŠãæå®ãããæéã«åæã«åŠçã§ããªããªããŸãã ãŸããããã«ãããããã»ããµãŒæéã®äžè¶³ã«é¢é£ããã¿ã€ãã®åŸ
æ©ãçºçããç¹å®ã®CPUã³ã¢ã䜿çšããã¹ã±ãžã¥ãŒã©ãŒã®ãã¥ãŒã®å¢å ãã€ãŸãrunnable_tasks_countã€ã³ãžã±ãŒã¿ãŒããã®ãããªæ¡ä»¶äžã§å¢å ããŸãã
ãã®å ŽåãCPUã³ã¢ã®æ°ãå¢ããåã«ãMS SQL Serverã®ã€ã³ã¹ã¿ã³ã¹ã®äžŠååŠçããããã£ãæ£ããæ§æããå¿
èŠãããã2016ããŒãžã§ã³ãããå¿
èŠãªããŒã¿ããŒã¹ã®äžŠååŠçããããã£ãæ£ããæ§æããå¿
èŠããããŸãã


ããã§ã¯ã次ã®ãã©ã¡ãŒã¿ãŒã«æ³šæãã䟡å€ããããŸãã
- æå€§äžŠå床-åèŠæ±ã«å²ãåœãŠãããšãã§ããã¹ã¬ããã®æå€§æ°ãèšå®ããŸãïŒããã©ã«ãã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšMS SQL Serverãšãã£ã·ã§ã³ã®ã¿ã«ãã0å¶éã§ãïŒ
- 䞊ååŠçã®ã³ã¹ããããå€-䞊ååŠçã®æšå®ã³ã¹ãïŒããã©ã«ãã¯5ïŒ
- æå€§DOPã¯ãããŒã¿ããŒã¹ã¬ãã«ã§åã¯ãšãªã«å²ãåœãŠãããšãã§ããã¹ã¬ããã®æå€§æ°ãèšå®ããŸãïŒãã ãããæå€§äžŠå床ãããããã£ã®å€ä»¥äžïŒïŒããã©ã«ãã¯ããªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãšMS SQL Serverãšãã£ã·ã§ã³ã®ã¿ã«ãã0å¶éã§ãã MS SQL Serverã®ã€ã³ã¹ã¿ã³ã¹å
šäœã®ããããã£ãMax Degree of Parallelismãã®å¶éãšåæ§ã«ïŒ
ãã¹ãŠã®å Žåã«åçã®åªããã¬ã·ããæäŸããããšã¯äžå¯èœã§ããã€ãŸããé£ããèŠæ±ãåæããå¿
èŠããããŸãã
ç§èªèº«ã®çµéšããã䞊ååŠçã®ããããã£ãæ§æããã«ã¯ãOLTPã·ã¹ãã ã®æ¬¡ã®ã¢ã¯ã·ã§ã³ã¢ã«ãŽãªãºã ããå§ãããŸãã
- Max Degree of Parallelismã®ã€ã³ã¹ã¿ã³ã¹å
šäœã®ã¬ãã«ã1ã«èšå®ããŠãäžŠè¡æ§ãæåã«çŠæ¢ãã
- æãé£ããèŠæ±ãåæãããããã«æé©ãªã¹ã¬ããæ°ãéžæãã
- æå€§äžŠå床ããé
ç®2ããååŸããã¹ã¬ããã®éžæãããæé©ãªæ°ã«èšå®ããç¹å®ã®ããŒã¿ããŒã¹ã«ã€ããŠã¯ãåããŒã¿ããŒã¹ã«ã€ããŠé
ç®2ããååŸããæå€§DOPå€ãèšå®ããŸã
- æãå°é£ãªèŠæ±ãåæãããã«ãã¹ã¬ããã®æªåœ±é¿ãç¹å®ããŸãã ããã§ããå Žåã¯ã䞊ååŠçã®ã³ã¹ããããå€ãå¢ãããŸãã
1CãMicrosoft CRMãMicrosoft NAVãªã©ã®ã·ã¹ãã ã§ã¯ãã»ãšãã©ã®å Žåããã«ãã¹ã¬ããã®çŠæ¢ãé©ããŠããŸãã
ãŸããStandardãšãã£ã·ã§ã³ãã€ã³ã¹ããŒã«ãããŠããå Žåãã»ãšãã©ã®å Žåããã®ãšãã£ã·ã§ã³ã¯CPUã³ã¢ã®æ°ã«ãã£ãŠå¶éããããšããäºå®ãèæ
®ãããšããã«ãã¹ã¬ããã®çŠæ¢ãé©åã§ãã
OLAPã·ã¹ãã ã®å Žåãäžèšã®ã¢ã«ãŽãªãºã ã¯é©åã§ã¯ãããŸããã
ç§èªèº«ã®çµéšã«ãããšã䞊ååŠçããããã£ãèšå®ããã«ã¯ãOLAPã·ã¹ãã ã®æ¬¡ã®ã¢ã¯ã·ã§ã³ã¢ã«ãŽãªãºã ããå§ãããŸãã
- æãé£ããèŠæ±ãåæãããããã«æé©ãªã¹ã¬ããæ°ãéžæãã
- æå€§äžŠå床ããé
ç®1ããååŸããã¹ã¬ããã®éžæãããæé©ãªæ°ã«èšå®ããç¹å®ã®ããŒã¿ããŒã¹ã«ã€ããŠã¯ãåããŒã¿ããŒã¹ã«ã€ããŠé
ç®1ããååŸããæå€§DOPå€ãèšå®ããŸã
- æãå°é£ãªã¯ãšãªãåæããåæå®è¡å¶éã®æªåœ±é¿ãç¹å®ããŸãã ããã§ããå Žåã¯ã䞊ååŠçã®ã³ã¹ãã®ãããå€ãäžãããããã®ã¢ã«ãŽãªãºã ã®æé 1ã2ãç¹°ãè¿ããŸãã
ã€ãŸããOLTPã·ã¹ãã ã§ã¯ã·ã³ã°ã«ã¹ã¬ãããããã«ãã¹ã¬ããã«ç§»è¡ããOLAPã·ã¹ãã ã§ã¯ãã«ãã¹ã¬ããããã·ã³ã°ã«ã¹ã¬ããã«ç§»è¡ããŸãã ãããã£ãŠãç¹å®ã®ããŒã¿ããŒã¹ãšMS SQL Serverã®ã€ã³ã¹ã¿ã³ã¹å
šäœã®äž¡æ¹ã«æé©ãªåæå®è¡èšå®ãéžæã§ããŸãã
ãŸããMS SQL Serverã®ããã©ãŒãã³ã¹ç£èŠã®çµæã«åºã¥ããŠã䞊ååŠçã®ããããã£èšå®ãçµæçã«å€æŽããå¿
èŠãããããšãçè§£ããããšãéèŠã§ãã
ãã¬ãŒã¹ãã©ã°ã®èšå®ã«é¢ããæšå¥šäºé
ç§èªèº«ã®çµéšãšååã®çµéšãããæé©ãªããã©ãŒãã³ã¹ãåŸãã«ã¯ã2008-2016ããŒãžã§ã³ã®MS SQL ServerãµãŒãã¹ã®ã¹ã¿ãŒãã¢ããã¬ãã«ã§æ¬¡ã®ãã¬ãŒã¹ãã©ã°ãèšå®ããããšããå§ãããŸãã
- 610-ã€ã³ããã¯ã¹ä»ãããŒãã«ã§ã®æ¿å
¥ã®ãã®ã³ã°ãåæžããŸãã 倿°ã®ã¬ã³ãŒããšå€ãã®ãã©ã³ã¶ã¯ã·ã§ã³ãå«ãããŒãã«ãžã®æ¿å
¥ã«åœ¹ç«ã¡ãWRITELOGãã€ã³ããã¯ã¹ã§å€æŽãããã®ãé »ç¹ã«é·æéåŸ
æ©ããŸãã
- 1117-ãã¡ã€ã«ã°ã«ãŒãå
ã®ãã¡ã€ã«ãèªåæé·ã®ãããå€ãæºããå Žåããã¡ã€ã«ã°ã«ãŒãå
ã®ãã¹ãŠã®ãã¡ã€ã«ãå±éãããŸã
- 1118-ãã¹ãŠã®ãªããžã§ã¯ããç°ãªããšã¯ã¹ãã³ãã«é
眮ããïŒæ··åãšã¯ã¹ãã³ãã®çŠæ¢ïŒãããã«ãããæ··åãšã¯ã¹ãã³ãã®è¿œè·¡ã«äœ¿çšãããSGAMããŒãžãã¹ãã£ã³ããå¿
èŠãæå°éã«æãããã
- 1224-ããã¯ã®æ°ã«åºã¥ããŠããã¯ã®ãšã¹ã«ã¬ãŒã·ã§ã³ãç¡å¹ã«ããŸãã éå°ãªã¡ã¢ãªäœ¿çšéã«ã¯ãããã¯ã®ãšã¹ã«ã¬ãŒã·ã§ã³ãå«ãŸããå ŽåããããŸãã
- 2371-åºå®èªåçµ±èšæŽæ°ã®ãããå€ãåçèªåçµ±èšæŽæ°ã®ãããå€ã«å€æŽããŸãã ã¬ã³ãŒãã®æ°ã誀ã£ãŠæ±ºå®ãããšèª€ã£ãå®è¡ãã©ã³ãçºçãã倧ããªããŒãã«ã®ã¯ãšãªãã©ã³ãæŽæ°ããããšãéèŠã§ãã
- 3226-ãšã©ãŒãã°ã§æåããããã¯ã¢ããã¡ãã»ãŒãžãæå¶ããŸã
- 4199-环ç©çãªæŽæ°ããã°ã©ã ããã³SQL ServerãµãŒãã¹ããã¯ã§ãªãªãŒã¹ãããã¯ãšãªãªããã£ãã€ã¶ãŒãžã®å€æŽãå«ãŸããŠããŸã
- 6532-6534-空éããŒã¿åã®ã¯ãšãªããã©ãŒãã³ã¹ã®æ¹åãå«ãŸããŠããŸã
- 8048-NUMAããŒãã£ã·ã§ã³ã¡ã¢ãªãªããžã§ã¯ããCPUããŒãã£ã·ã§ã³ã«å€æããŸã
- 8780-èŠæ±ãã¹ã±ãžã¥ãŒã«ããããã®è¿œå ã®æéå²ãåœãŠãå«ãŸããŸãã ãã®ãã©ã°ã®ãªãäžéšã®ãªã¯ãšã¹ãã¯ããªã¯ãšã¹ããã©ã³ããªãããæåŠãããå ŽåããããŸãïŒéåžžã«ãŸããªãšã©ãŒïŒ
- 9389-远å ã®åçã«äžæçã«æäŸããããããã¢ãŒããªãã¬ãŒã¿ãŒçšã®ã¡ã¢ãªãããã¡ãŒãå«ã
ãŸãã2016ããŒãžã§ã³ãŸã§ã¯ãæ¡åŒµæ±ºå®ãµããŒãã®æé©åãå«ããã¬ãŒã¹ãã©ã°2301ãå«ãããšäŸ¿å©ã§ããããã«ãããããæ£ç¢ºãªã¯ãšãªãã©ã³ã®éžæã«åœ¹ç«ã¡ãŸãã ãã ããããŒãžã§ã³2016以éãã¯ãšãªã®å
šäœçãªå®è¡æéãããªãé·ããªããšãå€ãã®å Žåãã€ãã¹ã®åœ±é¿ããããŸãã
ãŸããã€ã³ããã¯ã¹ã倿°ããã·ã¹ãã ïŒ1CããŒã¿ããŒã¹ãªã©ïŒã§ã¯ããã¬ãŒã¹ãã©ã°2330ãæå¹ã«ããããšããå§ãããŸããããã«ãããã€ã³ããã¯ã¹ã®äœ¿çšã«é¢ããã³ã¬ã¯ã·ã§ã³ãç¡å¹ã«ãªããŸããããã¯éåžžãã·ã¹ãã ã«ãã©ã¹ã®å¹æããããããŸãã
ãã¬ãŒã¹ãã©ã°ã®è©³çްã«ã€ããŠã¯ã
ãã¡ããã芧ãã ããã
äžèšã®ãªã³ã¯ã䜿çšããå ŽåãMS SQL Serverã®ããŒãžã§ã³ãšã¢ã»ã³ããªãèæ
®ããããšãéèŠã§ããããã¯ãæ°ããããŒãžã§ã³ã§ã¯ãäžéšã®ãã¬ãŒã¹ãã©ã°ãããã©ã«ãã§æå¹ã«ãªã£ãŠããã广ããªãããã§ãã ããšãã°ã2017ããŒãžã§ã³ã§ã¯ã1224ã3226ã6534ã8780ãããã³9389ã®5ã€ã®ãã¬ãŒã¹ãã©ã°ã®ã¿ãèšå®ããããšãéèŠã§ãã
DBCC TRACEONã³ãã³ããšDBCC TRACEOFFã³ãã³ãããããã䜿çšããŠããã¬ãŒã¹ãã©ã°ãæå¹ãŸãã¯ç¡å¹ã«ã§ããŸãã 詳现ã¯
ãã¡ããã芧ãã ããã
DBCC TRACESTATUSã³ãã³ã
moreã䜿çšããŠããã¬ãŒã¹ãã©ã°ã®ã¹ããŒã¿ã¹ãååŸã§ããŸãã
ãã¬ãŒã¹ãã©ã°ãMS SQL ServerãµãŒãã¹ã®èªåå®è¡ã«å«ããã«ã¯ãSQL Serveræ§æãããŒãžã£ãŒã«ç§»åãã-Tãä»ããŠãµãŒãã¹ã®ããããã£ã«ãããã®ãã¬ãŒã¹ãã©ã°ã远å ããå¿
èŠããããŸãã

ãŸãšã
ãã®èšäºã§ã¯ãMS SQL Serverã®ç£èŠã®ããã€ãã®åŽé¢ã«ã€ããŠæ€èšããŸãããããã«ãããRAMã®äžè¶³ãCPUã®ç©ºãæéãããã³ãã®ä»ã®ããŸãæããã§ãªãåé¡ããã°ããç¹å®ã§ããŸãã æãäžè¬çã«äœ¿çšããããã¬ãŒã¹ãã©ã°ãèæ
®ãããŸããã
ãœãŒã¹
»
SQL Serverã¹ã¿ã³ãã€çµ±èšÂ»
SQL Serverã®æåŸ
å€ã®çµ±èšããŸãã¯ã©ããçãã®ãæããŠãã ãã»
ã·ã¹ãã ãã¥ãŒsys.dm_os_schedulers»
Zabbixã䜿çšããŠMS SQL ServerããŒã¿ããŒã¹ã远跡ãã»
SQLã©ã€ãã¹ã¿ã€ã«Â»
ãã¬ãŒã¹ãã©ã°Â»
Sql.ru