MS SQL Server ๋ชจ๋‹ˆํ„ฐ๋ง์˜ ์ผ๋ถ€ ์ธก๋ฉด. ์ถ”์  ํ”Œ๋ž˜๊ทธ ์„ค์ • ์ง€์นจ

๋จธ๋ฆฌ๋ง

์ข…์ข… 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]						--ัะบะพะปัŒะบะพ ัะฒะพะฑะพะดะฝะพ ะžะ—ะฃ ะฝะฐ ัะตั€ะฒะตั€ะต ะฒ ะœะ‘
		 , a.[RAM_Avail_Percent]					--ะฟั€ะพั†ะตะฝั‚ ัะฒะพะฑะพะดะฝะพะณะพ ะžะ—ะฃ ะฝะฐ ัะตั€ะฒะตั€ะต
		 , a.[Server_physical_memory_Mb]				--ัะบะพะปัŒะบะพ ะฒัะตะณะพ ะžะ—ะฃ ะฝะฐ ัะตั€ะฒะตั€ะต ะฒ ะœะ‘
		 , a.[SQL_server_committed_target_Mb]			--ัะบะพะปัŒะบะพ ะฒัะตะณะพ ะžะ—ะฃ ะฒั‹ะดะตะปะตะฝะพ ะฟะพะด MS SQL Server ะฒ ะœะ‘
		 , a.[SQL_server_physical_memory_in_use_Mb] 		--ัะบะพะปัŒะบะพ ะฒัะตะณะพ ะžะ—ะฃ ะฟะพั‚ั€ะตะฑะปัะตั‚ MS SQL Server ะฒ ะดะฐะฝะฝั‹ะน ะผะพะผะตะฝั‚ ะฒั€ะตะผะตะฝะธ ะฒ ะœะ‘
		 , a.[SQL_RAM_Avail_Percent]				--ะฟะพั†ะตะฝั‚ ัะฒะพะฑะพะดะฝะพะณะพ ะžะ—ะฃ ะดะปั MS SQL Server ะพั‚ะฝะพัะธั‚ะตะปัŒะฝะพ ะฒัะตะณะพ ะฒั‹ะดะตะปะตะฝะฝะพะณะพ ะžะ—ะฃ ะดะปั MS SQL Server
		 , a.[StateMemorySQL]						--ะดะพัั‚ะฐั‚ะพั‡ะฝะพ ะปะธ ะžะ—ะฃ ะดะปั MS SQL Server
		 , a.[SQL_RAM_Reserve_Percent]				--ะฟั€ะพั†ะตะฝั‚ ะฒั‹ะดะตะปะตะฝะฝะพะน ะžะ—ะฃ ะดะปั MS SQL Server ะพั‚ะฝะพัะธั‚ะตะปัŒะฝะพ ะฒัะตะณะพ ะžะ—ะฃ ัะตั€ะฒะตั€ะฐ
		 --ะดะพัั‚ะฐั‚ะพั‡ะฝะพ ะปะธ ะžะ—ะฃ ะดะปั ัะตั€ะฒะตั€ะฐ
		, (case when a.[RAM_Avail_Percent]<10 and a.[RAM_Avail_Percent]>5 and a.[TotalAvailOSRam_Mb]<8192 then 'Warning' when a.[RAM_Avail_Percent]<=5 and a.[TotalAvailOSRam_Mb]<2048 then 'Danger' else 'Normal' end) as [StateMemoryServer]
	from
	(
		select cast(a0.available_physical_memory_kb/1024.0 as int) as TotalAvailOSRam_Mb
			 , cast((a0.available_physical_memory_kb/casT(a0.total_physical_memory_kb as float))*100 as numeric(5,2)) as [RAM_Avail_Percent]
			 , a0.system_low_memory_signal_state
			 , ceiling(b.physical_memory_kb/1024.0) as [Server_physical_memory_Mb]
			 , ceiling(b.committed_target_kb/1024.0) as [SQL_server_committed_target_Mb]
			 , ceiling(a.physical_memory_in_use_kb/1024.0) as [SQL_server_physical_memory_in_use_Mb]
			 , cast(((b.committed_target_kb-a.physical_memory_in_use_kb)/casT(b.committed_target_kb as float))*100 as numeric(5,2)) as [SQL_RAM_Avail_Percent]
			 , cast((b.committed_target_kb/casT(a0.total_physical_memory_kb as float))*100 as numeric(5,2)) as [SQL_RAM_Reserve_Percent]
			 , (case when (ceiling(b.committed_target_kb/1024.0)-1024)<ceiling(a.physical_memory_in_use_kb/1024.0) then 'Warning' else 'Normal' end) as [StateMemorySQL]
		from sys.dm_os_sys_memory as a0
		cross join sys.dm_os_process_memory as a
		cross join sys.dm_os_sys_info as b
		cross join sys.dm_os_sys_memory as v
	) as a;

๊ทธ๋Ÿฐ ๋‹ค์Œ 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], --ะธะผั ั‚ะธะฟะฐ ะพะถะธะดะฐะฝะธั
        [wait_time_ms] / 1000.0 AS [WaitS],--ะžะฑั‰ะตะต ะฒั€ะตะผั ะพะถะธะดะฐะฝะธั ะดะฐะฝะฝะพะณะพ ั‚ะธะฟะฐ ะฒ ะผะธะปะปะธัะตะบัƒะฝะดะฐั…. ะญั‚ะพ ะฒั€ะตะผั ะฒะบะปัŽั‡ะฐะตั‚ signal_wait_time_ms
        ([wait_time_ms] - [signal_wait_time_ms]) / 1000.0 AS [ResourceS],--ะžะฑั‰ะตะต ะฒั€ะตะผั ะพะถะธะดะฐะฝะธั ะดะฐะฝะฝะพะณะพ ั‚ะธะฟะฐ ะฒ ะผะธะปะปะธัะตะบัƒะฝะดะฐั… ะฑะตะท signal_wait_time_ms
        [signal_wait_time_ms] / 1000.0 AS [SignalS],--ะ ะฐะทะฝะธั†ะฐ ะผะตะถะดัƒ ะฒั€ะตะผะตะฝะตะผ ัะธะณะฝะฐะปะธะทะฐั†ะธะธ ะพะถะธะดะฐัŽั‰ะตะณะพ ะฟะพั‚ะพะบะฐ ะธ ะฒั€ะตะผะตะฝะตะผ ะฝะฐั‡ะฐะปะฐ ะตะณะพ ะฒั‹ะฟะพะปะฝะตะฝะธั
        [waiting_tasks_count] AS [WaitCount],--ะงะธัะปะพ ะพะถะธะดะฐะฝะธะน ะดะฐะฝะฝะพะณะพ ั‚ะธะฟะฐ. ะญั‚ะพั‚ ัั‡ะตั‚ั‡ะธะบ ะฝะฐั€ะฐั‰ะธะฒะฐะตั‚ัั ะบะฐะถะดั‹ะน ั€ะฐะท ะฟั€ะธ ะฝะฐั‡ะฐะปะต ะพะถะธะดะฐะฝะธั
        100.0 * [wait_time_ms] / SUM ([wait_time_ms]) OVER() AS [Percentage],
        ROW_NUMBER() OVER(ORDER BY [wait_time_ms] DESC) AS [RowNum]
    FROM sys.dm_os_wait_stats
    WHERE [waiting_tasks_count]>0
		and [wait_type] NOT IN (
        N'BROKER_EVENTHANDLER',         N'BROKER_RECEIVE_WAITFOR',
        N'BROKER_TASK_STOP',            N'BROKER_TO_FLUSH',
        N'BROKER_TRANSMITTER',          N'CHECKPOINT_QUEUE',
        N'CHKPT',                       N'CLR_AUTO_EVENT',
        N'CLR_MANUAL_EVENT',            N'CLR_SEMAPHORE',
        N'DBMIRROR_DBM_EVENT',          N'DBMIRROR_EVENTS_QUEUE',
        N'DBMIRROR_WORKER_QUEUE',       N'DBMIRRORING_CMD',
        N'DIRTY_PAGE_POLL',             N'DISPATCHER_QUEUE_SEMAPHORE',
        N'EXECSYNC',                    N'FSAGENT',
        N'FT_IFTS_SCHEDULER_IDLE_WAIT', N'FT_IFTSHC_MUTEX',
        N'HADR_CLUSAPI_CALL',           N'HADR_FILESTREAM_IOMGR_IOCOMPLETION',
        N'HADR_LOGCAPTURE_WAIT',        N'HADR_NOTIFICATION_DEQUEUE',
        N'HADR_TIMER_TASK',             N'HADR_WORK_QUEUE',
        N'KSOURCE_WAKEUP',              N'LAZYWRITER_SLEEP',
        N'LOGMGR_QUEUE',                N'ONDEMAND_TASK_QUEUE',
        N'PWAIT_ALL_COMPONENTS_INITIALIZED',
        N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP',
        N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP',
        N'REQUEST_FOR_DEADLOCK_SEARCH', N'RESOURCE_QUEUE',
        N'SERVER_IDLE_CHECK',           N'SLEEP_BPOOL_FLUSH',
        N'SLEEP_DBSTARTUP',             N'SLEEP_DCOMSTARTUP',
        N'SLEEP_MASTERDBREADY',         N'SLEEP_MASTERMDREADY',
        N'SLEEP_MASTERUPGRADED',        N'SLEEP_MSDBSTARTUP',
        N'SLEEP_SYSTEMTASK',            N'SLEEP_TASK',
        N'SLEEP_TEMPDBSTARTUP',         N'SNI_HTTP_ACCEPT',
        N'SP_SERVER_DIAGNOSTICS_SLEEP', N'SQLTRACE_BUFFER_FLUSH',
        N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
        N'SQLTRACE_WAIT_ENTRIES',       N'WAIT_FOR_RESULTS',
        N'WAITFOR',                     N'WAITFOR_TASKSHUTDOWN',
        N'WAIT_XTP_HOST_WAIT',          N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG',
        N'WAIT_XTP_CKPT_CLOSE',         N'XE_DISPATCHER_JOIN',
        N'XE_DISPATCHER_WAIT',          N'XE_TIMER_EVENT')
    )
, ress as (
	SELECT
	    [W1].[wait_type] AS [WaitType],
	    CAST ([W1].[WaitS] AS DECIMAL (16, 2)) AS [Wait_S],--ะžะฑั‰ะตะต ะฒั€ะตะผั ะพะถะธะดะฐะฝะธั ะดะฐะฝะฝะพะณะพ ั‚ะธะฟะฐ ะฒ ะผะธะปะปะธัะตะบัƒะฝะดะฐั…. ะญั‚ะพ ะฒั€ะตะผั ะฒะบะปัŽั‡ะฐะตั‚ signal_wait_time_ms
	    CAST ([W1].[ResourceS] AS DECIMAL (16, 2)) AS [Resource_S],--ะžะฑั‰ะตะต ะฒั€ะตะผั ะพะถะธะดะฐะฝะธั ะดะฐะฝะฝะพะณะพ ั‚ะธะฟะฐ ะฒ ะผะธะปะปะธัะตะบัƒะฝะดะฐั… ะฑะตะท signal_wait_time_ms
	    CAST ([W1].[SignalS] AS DECIMAL (16, 2)) AS [Signal_S],--ะ ะฐะทะฝะธั†ะฐ ะผะตะถะดัƒ ะฒั€ะตะผะตะฝะตะผ ัะธะณะฝะฐะปะธะทะฐั†ะธะธ ะพะถะธะดะฐัŽั‰ะตะณะพ ะฟะพั‚ะพะบะฐ ะธ ะฒั€ะตะผะตะฝะตะผ ะฝะฐั‡ะฐะปะฐ ะตะณะพ ะฒั‹ะฟะพะปะฝะตะฝะธั
	    [W1].[WaitCount] AS [WaitCount],--ะงะธัะปะพ ะพะถะธะดะฐะฝะธะน ะดะฐะฝะฝะพะณะพ ั‚ะธะฟะฐ. ะญั‚ะพั‚ ัั‡ะตั‚ั‡ะธะบ ะฝะฐั€ะฐั‰ะธะฒะฐะตั‚ัั ะบะฐะถะดั‹ะน ั€ะฐะท ะฟั€ะธ ะฝะฐั‡ะฐะปะต ะพะถะธะดะฐะฝะธั
	    CAST ([W1].[Percentage] AS DECIMAL (5, 2)) AS [Percentage],
	    CAST (([W1].[WaitS] / [W1].[WaitCount]) AS DECIMAL (16, 4)) AS [AvgWait_S],
	    CAST (([W1].[ResourceS] / [W1].[WaitCount]) AS DECIMAL (16, 4)) AS [AvgRes_S],
	    CAST (([W1].[SignalS] / [W1].[WaitCount]) AS DECIMAL (16, 4)) AS [AvgSig_S]
	FROM [Waits] AS [W1]
	INNER JOIN [Waits] AS [W2]
	    ON [W2].[RowNum] <= [W1].[RowNum]
	GROUP BY [W1].[RowNum], [W1].[wait_type], [W1].[WaitS],
	    [W1].[ResourceS], [W1].[SignalS], [W1].[WaitCount], [W1].[Percentage]
	HAVING SUM ([W2].[Percentage]) - [W1].[Percentage] < 95 -- percentage threshold
)
SELECT [WaitType]
      ,MAX([Wait_S]) as [Wait_S]
      ,MAX([Resource_S]) as [Resource_S]
      ,MAX([Signal_S]) as [Signal_S]
      ,MAX([WaitCount]) as [WaitCount]
      ,MAX([Percentage]) as [Percentage]
      ,MAX([AvgWait_S]) as [AvgWait_S]
      ,MAX([AvgRes_S]) as [AvgRes_S]
      ,MAX([AvgSig_S]) as [AvgSig_S]
  FROM ress
  group by [WaitType];

์ด ๊ฒฝ์šฐ ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 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 ๋ฐ AvgWait_S>=0.005๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ(์˜ˆ: Zabbix)์— ์ง€ํ‘œ๋ฅผ ์ถœ๋ ฅํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‘ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. RAM์ด ์ฐจ์ง€ํ•˜๋Š” ๋Œ€๊ธฐ ์œ ํ˜•์˜ ๋ฐฑ๋ถ„์œจ(์ด๋Ÿฌํ•œ ๋ชจ๋“  ๋Œ€๊ธฐ ์œ ํ˜•์˜ ํ•ฉ๊ณ„):
    select coalesce(sum([Percentage]), 0.00) as [Percentage]
    from [inf].[vWaits]
           where [WaitType] in (
               'PAGEIOLATCH_XX',
               'RESOURCE_SEMAPHORE',
                'RESOURCE_SEMAPHORE_QUERY_COMPILE'
      );
    
  2. ์–ผ๋งˆ๋‚˜ ๋งŽ์€ 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'
      );
    

์ด ๋‘ ์ง€ํ‘œ์— ๋Œ€ํ•ด ์–ป์€ ๊ฐ’์˜ ์—ญํ•™์„ ๊ธฐ๋ฐ˜์œผ๋กœ MS SQL Server ์ธ์Šคํ„ด์Šค์— ์ถฉ๋ถ„ํ•œ RAM์ด ์žˆ๋Š”์ง€ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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 ๋ชจ๋‹ˆํ„ฐ๋ง์˜ ์ผ๋ถ€ ์ธก๋ฉด. ์ถ”์  ํ”Œ๋ž˜๊ทธ ์„ค์ • ์ง€์นจ

MS SQL Server ๋ชจ๋‹ˆํ„ฐ๋ง์˜ ์ผ๋ถ€ ์ธก๋ฉด. ์ถ”์  ํ”Œ๋ž˜๊ทธ ์„ค์ • ์ง€์นจ
์—ฌ๊ธฐ์—์„œ ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Max Degree of Parallelism - ๊ฐ ์š”์ฒญ์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’์€ 0 - ์šด์˜ ์ฒด์ œ ์ž์ฒด ๋ฐ MS SQL Server ๋ฒ„์ „์— ์˜ํ•ด์„œ๋งŒ ์ œํ•œ๋จ).
  2. ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋น„์šฉ ์ž„๊ณ„๊ฐ’ - ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์˜ ์˜ˆ์ƒ ๋น„์šฉ(๊ธฐ๋ณธ๊ฐ’์€ 5)
  3. Max DOP - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ˆ˜์ค€์—์„œ ๊ฐ ์ฟผ๋ฆฌ์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค(๊ทธ๋Ÿฌ๋‚˜ "Max Degree of Parallelism" ์†์„ฑ ๊ฐ’ ์ดํ•˜)(๊ธฐ๋ณธ๊ฐ’์€ 0 - ์šด์˜ ์ฒด์ œ ์ž์ฒด์— ์˜ํ•ด์„œ๋งŒ ์ œํ•œ๋จ). MS SQL Server์˜ ์—๋””์…˜ ๋ฐ ์ „์ฒด MS SQL Server ์ธ์Šคํ„ด์Šค์˜ "Max Degree of Parallelism" ์†์„ฑ์— ๋Œ€ํ•œ ์ œํ•œ)

์—ฌ๊ธฐ์„œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ๋Œ€ํ•ด ๋˜‘๊ฐ™์ด ์ข‹์€ ๋ ˆ์‹œํ”ผ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฌด๊ฑฐ์šด ์ฟผ๋ฆฌ๋ฅผ ๋ถ„์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‚ด ๊ฒฝํ—˜์ƒ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์†์„ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด OLTP ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๋‹ค์Œ ์ž‘์—… ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  1. ๋จผ์ € ์ธ์Šคํ„ด์Šค ์ „์ฒด์˜ Max Degree of Parallelism์„ 1๋กœ ์„ค์ •ํ•˜์—ฌ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  2. ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์š”์ฒญ์„ ๋ถ„์„ํ•˜๊ณ  ์ตœ์ ์˜ ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. Max Degree of Parallelism์„ 2๋‹จ๊ณ„์—์„œ ์–ป์€ ์„ ํƒ๋œ ์ตœ์ ์˜ ์Šค๋ ˆ๋“œ ์ˆ˜๋กœ ์„ค์ •ํ•˜๊ณ  ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด 2๋‹จ๊ณ„์—์„œ ์–ป์€ ์ตœ๋Œ€ DOP ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฐ€์žฅ ๋งŽ์€ ์š”์ฒญ์„ ๋ถ„์„ํ•˜๊ณ  ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ์˜ ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๋น„์šฉ ์ž„๊ณ„๊ฐ’์„ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค.
    1C, Microsoft CRM ๋ฐ Microsoft NAV์™€ ๊ฐ™์€ ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๊ธˆ์ง€๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Standard ์—๋””์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ์—๋””์…˜์€ CPU ์ฝ”์–ด ์ˆ˜๊ฐ€ ์ œํ•œ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๊ธˆ์ง€๊ฐ€ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
OLAP ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ์œ„์—์„œ ์„ค๋ช…ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋‚ด ๊ฒฝํ—˜์ƒ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์†์„ฑ์„ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด OLAP ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๋‹ค์Œ ์ž‘์—… ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์š”์ฒญ์„ ๋ถ„์„ํ•˜๊ณ  ์ตœ์ ์˜ ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. Max Degree of Parallelism์„ 1๋‹จ๊ณ„์—์„œ ์–ป์€ ์„ ํƒ๋œ ์ตœ์ ์˜ ์Šค๋ ˆ๋“œ ์ˆ˜๋กœ ์„ค์ •ํ•˜๊ณ  ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด 1๋‹จ๊ณ„์—์„œ ์–ป์€ ์ตœ๋Œ€ DOP ๊ฐ’์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์ฟผ๋ฆฌ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ๋™์‹œ์„ฑ ์ œํ•œ์˜ ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋น„์šฉ ์ž„๊ณ„๊ฐ’์„ ๋‚ฎ์ถ”๊ฑฐ๋‚˜ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ 1-2๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, OLTP ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ๋‹จ์ผ ์Šค๋ ˆ๋”ฉ์—์„œ ๋‹ค์ค‘ ์Šค๋ ˆ๋”ฉ์œผ๋กœ ์ด๋™ํ•˜๊ณ  OLAP ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ ๋ฐ˜๋Œ€๋กœ ๋‹ค์ค‘ ์Šค๋ ˆ๋”ฉ์—์„œ ๋‹จ์ผ ์Šค๋ ˆ๋”ฉ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ MS SQL Server์˜ ์ „์ฒด ์ธ์Šคํ„ด์Šค ๋ชจ๋‘์— ๋Œ€ํ•ด ์ตœ์ ์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์„ค์ •์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
MS SQL Server์˜ ์„ฑ๋Šฅ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•œ ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ผ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ์†์„ฑ์˜ ์„ค์ •์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ถ”์  ํ”Œ๋ž˜๊ทธ ์„ค์ • ์ง€์นจ

๋‚ด ์ž์‹ ์˜ ๊ฒฝํ—˜๊ณผ ๋™๋ฃŒ์˜ ๊ฒฝํ—˜์— ๋น„์ถ”์–ด ๋ณผ ๋•Œ ์ตœ์ ์˜ ์„ฑ๋Šฅ์„ ์œ„ํ•ด 2008-2016 ๋ฒ„์ „์˜ MS SQL Server ์„œ๋น„์Šค ์‹คํ–‰ ์ˆ˜์ค€์—์„œ ๋‹ค์Œ ์ถ”์  ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  1. 610 - ์ธ๋ฑ์‹ฑ๋œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์‚ฝ์ž… ๋กœ๊น…์ด ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๋ ˆ์ฝ”๋“œ์™€ ๋งŽ์€ ํŠธ๋žœ์žญ์…˜์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ WRITELOG๋Š” ์ธ๋ฑ์Šค ๋ณ€๊ฒฝ์„ ์ž์ฃผ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.
  2. 1117 - ํŒŒ์ผ ๊ทธ๋ฃน์˜ ํŒŒ์ผ์ด ์ž๋™ ์ฆ๊ฐ€ ์ž„๊ณ„๊ฐ’ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋ฉด ํŒŒ์ผ ๊ทธ๋ฃน์˜ ๋ชจ๋“  ํŒŒ์ผ์ด ์ปค์ง‘๋‹ˆ๋‹ค.
  3. 1118 - ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ต์Šคํ…ํŠธ์— ์œ„์น˜ํ•˜๋„๋ก ๊ฐ•์ œํ•˜์—ฌ(ํ˜ผํ•ฉ ์ต์Šคํ…ํŠธ ๊ธˆ์ง€) ํ˜ผํ•ฉ ์ต์Šคํ…ํŠธ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” SGAM ํŽ˜์ด์ง€๋ฅผ ์Šค์บ”ํ•  ํ•„์š”์„ฑ์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค.
  4. 1224 - ์ž ๊ธˆ ์ˆ˜์— ๋”ฐ๋ผ ์ž ๊ธˆ ์—์Šค์ปฌ๋ ˆ์ด์…˜์„ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ณผ๋„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์€ ์ž ๊ธˆ ์—์Šค์ปฌ๋ ˆ์ด์…˜์„ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. 2371 - ๊ณ ์ • ์ž๋™ ํ†ต๊ณ„ ์—…๋ฐ์ดํŠธ ์ž„๊ณ„๊ฐ’์„ ๋™์  ์ž๋™ ํ†ต๊ณ„ ์—…๋ฐ์ดํŠธ ์ž„๊ณ„๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๋ ˆ์ฝ”๋“œ ์ˆ˜๋กœ ์ธํ•ด ์ž˜๋ชป๋œ ์‹คํ–‰ ๊ณ„ํš์ด ๋ฐœ์ƒํ•˜๋Š” ๋Œ€ํ˜• ํ…Œ์ด๋ธ”์˜ ์ฟผ๋ฆฌ ๊ณ„ํš์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
  6. 3226 - ์˜ค๋ฅ˜ ๋กœ๊ทธ์—์„œ ๋ฐฑ์—… ์„ฑ๊ณต ๋ฉ”์‹œ์ง€๋ฅผ ์–ต์ œํ•ฉ๋‹ˆ๋‹ค.
  7. 4199 - CU ๋ฐ SQL Server ์„œ๋น„์Šค ํŒฉ์—์„œ ๋ฆด๋ฆฌ์Šค๋œ ์ฟผ๋ฆฌ ์ตœ์ ํ™” ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  8. 6532-6534 - ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ ์œ ํ˜•์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ ์ž‘์—…์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  9. 8048 - NUMA ๋ถ„ํ•  ๋ฉ”๋ชจ๋ฆฌ ๊ฐœ์ฒด๋ฅผ CPU ๋ถ„ํ•  โ€‹โ€‹๋ฉ”๋ชจ๋ฆฌ ๊ฐœ์ฒด๋กœ ๋ณ€ํ™˜
  10. 8780 - ์ฟผ๋ฆฌ ๊ณ„ํš์„ ์œ„ํ•œ ์ถ”๊ฐ€ ์‹œ๊ฐ„ ํ• ๋‹น์„ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”Œ๋ž˜๊ทธ๊ฐ€ ์—†๋Š” ์ผ๋ถ€ ์š”์ฒญ์€ ์ฟผ๋ฆฌ ๊ณ„ํš์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฐ๋ถ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋งค์šฐ ๋“œ๋ฌธ ๋ฒ„๊ทธ).
  11. 8780 - 9389 - ๋ฐฐ์น˜ ๋ชจ๋“œ ๋ช…๋ น๋ฌธ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋™์  ๋ถ€์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ ๋ฐฐ์น˜ ๋ชจ๋“œ ์—ฐ์‚ฐ์ž๊ฐ€ ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋” ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ tempdb๋กœ ์ด๋™ํ•˜์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ 2016๋…„ ์ด์ „์—๋Š” ์ถ”์  ํ”Œ๋ž˜๊ทธ 2301์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ–ฅ์ƒ๋œ ์˜์‚ฌ ๊ฒฐ์ • ์ง€์› ์ตœ์ ํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ ๋” ์ •ํ™•ํ•œ ์ฟผ๋ฆฌ ๊ณ„ํš์„ ์„ ํƒํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 2016 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ์ „์ฒด ์ฟผ๋ฆฌ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ƒ๋‹นํžˆ ๊ธธ์–ด์ง€๋Š” ๋ฐ ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ์ธ๋ฑ์Šค๊ฐ€ ๋งŽ์€ ์‹œ์Šคํ…œ(์˜ˆ: 1C ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ์Šคํ…œ์— ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ธ๋ฑ์Šค ์‚ฌ์šฉ ์ˆ˜์ง‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์ถ”์  ํ”Œ๋ž˜๊ทธ 2330์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
์ถ”์  ํ”Œ๋ž˜๊ทธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์—ฌ๊ธฐ์—
์œ„์˜ ๋งํฌ์—์„œ MS SQL Server์˜ ๋ฒ„์ „๊ณผ ๋นŒ๋“œ๋ฅผ ๊ณ ๋ คํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์˜ ๊ฒฝ์šฐ ์ผ๋ถ€ ์ถ”์  ํ”Œ๋ž˜๊ทธ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๊ฑฐ๋‚˜ ํšจ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๊ฐ๊ฐ DBCC TRACEON ๋ฐ DBCC TRACEOFF ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”์  ํ”Œ๋ž˜๊ทธ๋ฅผ ์ผœ๊ณ  ๋Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฐธ์กฐ ์—ฌ๊ธฐ์—
DBCC TRACESTATUS ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”์  ํ”Œ๋ž˜๊ทธ์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”
MS SQL Server ์„œ๋น„์Šค์˜ ์ž๋™ ์‹œ์ž‘์— ์ถ”์  ํ”Œ๋ž˜๊ทธ๋ฅผ ํฌํ•จํ•˜๋ ค๋ฉด SQL Server ๊ตฌ์„ฑ ๊ด€๋ฆฌ์ž๋กœ ์ด๋™ํ•˜์—ฌ ์„œ๋น„์Šค ์†์„ฑ์—์„œ -T๋ฅผ ํ†ตํ•ด ๋‹ค์Œ ์ถ”์  ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
MS SQL Server ๋ชจ๋‹ˆํ„ฐ๋ง์˜ ์ผ๋ถ€ ์ธก๋ฉด. ์ถ”์  ํ”Œ๋ž˜๊ทธ ์„ค์ • ์ง€์นจ

๊ฒฐ๊ณผ

์ด ๊ธฐ์‚ฌ์—์„œ๋Š” MS SQL Server ๋ชจ๋‹ˆํ„ฐ๋ง์˜ ๋ช‡ ๊ฐ€์ง€ ์ธก๋ฉด์„ ๋ถ„์„ํ•˜์—ฌ RAM ๋ถ€์กฑ ๋ฐ ์—ฌ์œ  CPU ์‹œ๊ฐ„๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋œ ๋ถ„๋ช…ํ•œ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ถ”์  ํ”Œ๋ž˜๊ทธ๋ฅผ ๊ฒ€ํ† ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ :

ยป SQL Server ๋Œ€๊ธฐ ํ†ต๊ณ„
ยป SQL Server ๋Œ€๊ธฐ ํ†ต๊ณ„ ๋˜๋Š” ์–ด๋””๊ฐ€ ์•„ํ”ˆ์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.
ยป ์‹œ์Šคํ…œ ๋ณด๊ธฐ sys.dm_os_schedulers
ยป Zabbix๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MS SQL Server ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋‹ˆํ„ฐ๋ง
ยป SQL ๋ผ์ดํ”„์Šคํƒ€์ผ
ยป ์ถ”์  ํ”Œ๋ž˜๊ทธ
ยป sql.ru

์ถœ์ฒ˜ : habr.com

DDoS ๋ณดํ˜ธ, VPS VDS ์„œ๋ฒ„๊ฐ€ ์žˆ๋Š” ์‚ฌ์ดํŠธ๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ํ˜ธ์ŠคํŒ… ๊ตฌ์ž… ๐Ÿ”ฅ DDoS ๊ณต๊ฒฉ ๋ฐฉ์ง€ ๊ธฐ๋Šฅ์ด ํƒ‘์žฌ๋œ ์•ˆ์ •์ ์ธ ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ…, VPS ๋ฐ VDS ์„œ๋ฒ„๋ฅผ ๊ตฌ๋งคํ•˜์„ธ์š” | ProHoster