НСкоторыС аспСкты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° MS SQL Server. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ настройкС Ρ„Π»Π°Π³ΠΎΠ² трассировки

ΠŸΡ€Π΅Π΄ΠΈΡΠ»ΠΎΠ²ΠΈΠ΅

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ часто ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΈ администраторы Π‘Π£Π‘Π” MS SQL Server ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π‘Π” ΠΈΠ»ΠΈ Π‘Π£Π‘Π” Π² Ρ†Π΅Π»ΠΎΠΌ, поэтому вСсьма Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ являСтся ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ MS SQL Server.
Данная ΡΡ‚Π°Ρ‚ΡŒΡ являСтся Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ИспользованиС Zabbix для слСТСния Π·Π° Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… MS SQL Server ΠΈ Π² Π½Π΅ΠΉ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ аспСкты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° MS SQL Server, Π² частности: ΠΊΠ°ΠΊ быстро ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΡ… рСсурсов Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ настройкС Ρ„Π»Π°Π³ΠΎΠ² трассировки.
Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… скриптов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ схСму inf Π² Π½ΡƒΠΆΠ½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ схСмы inf

use <имя_Π‘Π”>;
go
create schema inf;

ΠœΠ΅Ρ‚ΠΎΠ΄ выявлСния Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти являСтся Ρ‚ΠΎΡ‚ случай, ΠΊΠΎΠ³Π΄Π° экзСмпляр MS SQL Server ΡΡŠΠ΅Π΄Π°Π΅Ρ‚ всю Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π΅ΠΌΡƒ ΠžΠ—Π£.
Для этого создадим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ прСдставлСниС 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, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ статистику ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ.
Для опрСдСлСния Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Ρ‡Π΅Ρ€Π΅Π· статистику ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ создадим прСдставлСниС 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];

Π’ этом случаС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ запросом:

SELECTΒ [Percentage]
Β Β Β Β Β Β ,[AvgWait_S]
Β Β FROMΒ [inf].[vWaits]
Β Β whereΒ [WaitType]Β inΒ (
Β Β Β Β 'PAGEIOLATCH_XX',
Β Β Β Β 'RESOURCE_SEMAPHORE',
Β Β Β Β 'RESOURCE_SEMAPHORE_QUERY_COMPILE'
Β Β );

Π—Π΄Π΅ΡΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Percentage ΠΈ AvgWait_S. Если ΠΎΠ½ΠΈ сущСствСнны ΠΏΠΎ своСй совокупности, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ большая Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚ экзСмпляру MS SQL Server. БущСствСнныС значСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ систСмы. Однако, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ показатСля: Percentage>=1 ΠΈ AvgWait_S>=0.005.
Для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π² систСму ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Zabbix) ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° запроса:

  1. сколько Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ ΠΏΠΎ ΠžΠ—Π£ (сумма ΠΏΠΎ всСм Ρ‚Π°ΠΊΠΈΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ):
    select coalesce(sum([Percentage]), 0.00) as [Percentage]
    from [inf].[vWaits]
           whereΒ [WaitType]Β inΒ (
           Β Β Β Β 'PAGEIOLATCH_XX',
           Β Β Β Β 'RESOURCE_SEMAPHORE',
            Β Β Β Β 'RESOURCE_SEMAPHORE_QUERY_COMPILE'
    Β Β );
    
  2. сколько Π² миллисСкундах Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ ΠΏΠΎ ΠžΠ—Π£ (максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· всСх срСдних Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ ΠΏΠΎ всСм Ρ‚Π°ΠΊΠΈΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ):
    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.

ΠœΠ΅Ρ‚ΠΎΠ΄ выявлСния Ρ‡Ρ€Π΅Π·ΠΌΠ΅Ρ€Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° ЦПУ

Для выявлСния Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ достаточно Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ систСмным прСдставлСниСм 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.
Однако, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΎ Ρ‚ΠΎΠΌ Ρ„Π°ΠΊΡ‚Π΅, Ρ‡Ρ‚ΠΎ сами запросы ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ сразу нСсколько ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². И ΠΏΠΎΡ€ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ самого запроса. Π’ΠΎΠ³Π΄Π° запросу ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. И это Ρ‚ΠΎΠΆΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΈΠΏ оТидания, связанный с Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΎΠΉ процСссорного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ разрастания ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ядра ЦПУ, Ρ‚ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ runnable_tasks_count Π² Ρ‚Π°ΠΊΠΈΡ… условиях Π±ΡƒΠ΄Π΅Ρ‚ расти.
Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ количСство ядСр ЦПУ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свойства ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° самого экзСмпляра MS SQL Server, Π° с 2016 вСрсии-ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свойства ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π½ΡƒΠΆΠ½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…:
НСкоторыС аспСкты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° MS SQL Server. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ настройкС Ρ„Π»Π°Π³ΠΎΠ² трассировки

НСкоторыС аспСкты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° MS SQL Server. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ настройкС Ρ„Π»Π°Π³ΠΎΠ² трассировки
Π—Π΄Π΅ΡΡŒ стоит ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ внимания Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

  1. Max Degree of Parallelism-Π·Π°Π΄Π°Π΅Ρ‚ максимальноС количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ запросу (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ стоит 0-ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠ΅ΠΉ MS SQL Server)
  2. Cost Threshold for Parallelism-оцСночная ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ стоит 5)
  3. Max DOP-Π·Π°Π΄Π°Π΅Ρ‚ максимальноС количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ запросу Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Π½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅, Ρ‡Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Β«Max Degree of ParallelismΒ») (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ стоит 0-ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠ΅ΠΉ MS SQL Server, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ свойству Β«Max Degree of ParallelismΒ» всСго экзСмпляра MS SQL Server)

Π—Π΄Π΅ΡΡŒ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ€Π΅Ρ†Π΅ΠΏΡ‚ для всСх случаСв, Ρ‚ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тяТСлыС запросы.
По собствСнному ΠΎΠΏΡ‹Ρ‚Ρƒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ дСйствий для OLTP-систСм для настройки свойств ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°:

  1. сначала Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ, выставив Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ всСго экзСмпляра Max Degree of Parallelism Π² 1
  2. ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ самыС тяТСлыС запросы ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ для Π½ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²
  3. Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Max Degree of Parallelism Π² ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Π½ΠΎΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· ΠΏ.2, Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Max DOP Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· ΠΏ.2 для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
  4. ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ самыС тяТСлыС запросы ΠΈ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ эффСкт ΠΎΡ‚ многопоточности. Если ΠΎΠ½ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ Cost Threshold for Parallelism.
    Для Ρ‚Π°ΠΊΠΈΡ… систСм ΠΊΠ°ΠΊ 1Π‘, Microsoft CRM ΠΈ Microsoft NAV Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π΅Ρ‚ многопоточности

Π’Π°ΠΊΠΆΠ΅ Ссли стоит рСдакция Standard, Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€Π΅Ρ‚ многопоточности Π² Π²ΠΈΠ΄Ρƒ Ρ‚ΠΎΠ³ΠΎ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Ρ‚ΠΎ данная рСдакция ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° ΠΏΠΎ количСству ядСр ЦПУ.
Для OLAP-систСм описанный Π²Ρ‹ΡˆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚.
По собствСнному ΠΎΠΏΡ‹Ρ‚Ρƒ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ дСйствий для OLAP-систСм для настройки свойств ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°:

  1. ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ самыС тяТСлыС запросы ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ для Π½ΠΈΡ… ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²
  2. Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Max Degree of Parallelism Π² ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Π½ΠΎΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· ΠΏ.1, Π° Ρ‚Π°ΠΊΠΆΠ΅ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Max DOP Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· ΠΏ.1 для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
  3. ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ самыС тяТСлыС запросы ΠΈ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ эффСкт ΠΎΡ‚ ограничСния ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°. Если ΠΎΠ½ Π΅ΡΡ‚ΡŒ, Ρ‚ΠΎ Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ½ΠΈΠΆΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Cost Threshold for Parallelism, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ шаги 1-2 Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

Π’ Π΅ для OLTP-систСм ΠΈΠ΄Π΅ΠΌ ΠΎΡ‚ однопоточности ΠΊ многопоточности, Π° для OLAP-систСм Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚-ΠΈΠ΄Π΅ΠΌ ΠΎΡ‚ многопоточности ΠΊ однопоточности. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ настройки ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΊΠ°ΠΊ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ для всСго экзСмпляра MS SQL Server.
Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ настройки свойств ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡ‚ΡŒ, исходя ΠΈΠ· Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ MS SQL Server.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ настройкС Ρ„Π»Π°Π³ΠΎΠ² трассировки

Из собствСнного ΠΎΠΏΡ‹Ρ‚Π° ΠΈ ΠΎΠΏΡ‹Ρ‚Π° ΠΌΠΎΠΈΡ… ΠΊΠΎΠ»Π»Π΅Π³ для ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²Ρ‹ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ запуска слуТбы MS SQL Server для 2008-2016 вСрсий ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„Π»Π°Π³ΠΈ трассировки:

  1. 610 β€” УмСньшСниС протоколирования вставок Π² индСксированныС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ со вставками Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ с большим количСством записСй ΠΈ мноТСством Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈ частых Π΄ΠΎΠ»Π³ΠΈΡ… оТиданиях WRITELOG ΠΏΠΎ измСнСнию Π² индСксах
  2. 1117 β€” Если Ρ„Π°ΠΉΠ» Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ удовлСтворяСт трСбованиям ΠΏΠΎΡ€ΠΎΠ³Π° автоматичСского увСличСния, всС Ρ„Π°ΠΉΠ»Ρ‹ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ
  3. 1118 β€” ЗаставляСт всС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π½Ρ‹Ρ… экстСнтах (Π·Π°ΠΏΡ€Π΅Ρ‚ Π½Π° ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ экстСнты), Ρ‡Ρ‚ΠΎ сводит ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ сканирования страницы SGAM, которая ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для отслСТивания ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Ρ… экстСнтов
  4. 1224 β€” ΠžΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡƒΠΊΡ€ΡƒΠΏΠ½Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ Π½Π° основС количСства Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. Однако слишком Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС памяти ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΡƒΠΊΡ€ΡƒΠΏΠ½Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ
  5. 2371 β€” Π˜Π·ΠΌΠ΅Π½ΡΠ΅Ρ‚ ΠΏΠΎΡ€ΠΎΠ³ фиксированного автоматичСского обновлСния статистики Π½Π° ΠΏΠΎΡ€ΠΎΠ³ динамичСского автоматичСского обновлСния статистики. Π’Π°ΠΆΠ½ΠΎ для обновлСния ΠΏΠ»Π°Π½ΠΎΠ² запросов ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†, Π³Π΄Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ числа записСй ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹ΠΌ ΠΏΠ»Π°Π½Π°ΠΌ выполнСния
  6. 3226 β€” ΠŸΠΎΠ΄Π°Π²Π»ΡΠ΅Ρ‚ сообщСния ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠ³ΠΎ копирования Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ ошибок
  7. 4199 β€” Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ измСнСния Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ запросов, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ Π² Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… обновлСния ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… обновлСния SQL Server
  8. 6532-6534 β€” Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ запросов с пространствСнными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…
  9. 8048 β€” ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ памяти, сСкционированныС ΠΏΠΎ NUMA, Π² сСкционированныС ΠΏΠΎ ЦП
  10. 8780 β€” Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для составлСния ΠΏΠ»Π°Π½Π° запроса. НСкоторыС запросы Π±Π΅Π· этого Ρ„Π»Π°Π³Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Π½ΠΈΡ… Π½Π΅Ρ‚ ΠΏΠ»Π°Π½Π° запроса (ΠΎΡ‡Π΅Π½ΡŒ рСдкая ошибка)
  11. 8780 β€” 9389 β€” Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ динамичСский Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ прСдоставляСмый Π±ΡƒΡ„Π΅Ρ€ памяти для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ°, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ€Π΅ΠΆΠΈΠΌΠ° Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ пСрСноса Π΄Π°Π½Π½Ρ‹Ρ… Π² tempdb, Ссли Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ доступна

Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎ 2016 вСрсии ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ трассировки 2301, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈ Ρ‚Π΅ΠΌ самым ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π² Π²Ρ‹Π±ΠΎΡ€Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΠ»Π°Π½ΠΎΠ² запросов. Однако, начиная с вСрсии 2016, ΠΎΠ½ часто ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ эффСкт Π² достаточно Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΎΠ±Ρ‰Π΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния запросов.
Π’Π°ΠΊΠΆΠ΅ для систСм, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ индСксов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… 1Π‘), Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„Π»Π°Π³ трассировки 2330, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ сбор ΠΎΠ± использовании индСксов, Ρ‡Ρ‚ΠΎ Π² Ρ†Π΅Π»ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сказываСтся Π½Π° систСмС.
Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎ Ρ„Π»Π°Π³Π°Ρ… трассировки ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ здСсь
По ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ ссылкС Π²Π°ΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ вСрсии ΠΈ сборки MS SQL Server, Ρ‚. ΠΊ. для Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Ρ‹Ρ… вСрсий Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ трассировки Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ Π½Π΅ Π΄Π°ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта.
Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ„Π»Π°Π³ трассировки ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ DBCC TRACEON ΠΈ DBCC TRACEOFF соотвСтствСнно. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ смотритС здСсь
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ состояниС Ρ„Π»Π°Π³ΠΎΠ² трассировки ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ DBCC TRACESTATUS: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅
Π§Ρ‚ΠΎΠ±Ρ‹ Ρ„Π»Π°Π³ΠΈ трассировки Π±Ρ‹Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² автозапуск слуТбы MS SQL Server, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΉΡ‚ΠΈ Π² SQL Server Configuration Manager ΠΈ Π² свойствах слуТбы Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π»Π°Π³ΠΈ трассировки Ρ‡Π΅Ρ€Π΅Π· -T:
НСкоторыС аспСкты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° MS SQL Server. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ настройкС Ρ„Π»Π°Π³ΠΎΠ² трассировки

Π˜Ρ‚ΠΎΠ³ΠΈ

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π½Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ аспСкты ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° MS SQL Server, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎ Π²Ρ‹ΡΠ²ΠΈΡ‚ΡŒ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΡƒ ΠžΠ—Π£ ΠΈ свободного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ЦПУ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Π½Π΅Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π‘Ρ‹Π»ΠΈ рассмотрСны Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ„Π»Π°Π³ΠΈ трассировки.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ:

Β» Бтатистика оТидания SQL Server
Β» Бтатистика ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ SQL Server’Π° ΠΈΠ»ΠΈ поТалуйста, скаТитС ΠΌΠ½Π΅, Π³Π΄Π΅ Π±ΠΎΠ»ΠΈΡ‚
Β» БистСмноС прСдставлСниС sys.dm_os_schedulers
Β» ИспользованиС Zabbix для слСТСния Π·Π° Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… MS SQL Server
Β» Π‘Ρ‚ΠΈΠ»ΡŒ ΠΆΠΈΠ·Π½ΠΈ SQL
Β» Π€Π»Π°Π³ΠΈ трассировки
Β» sql.ru

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ