Някои аспСкти Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π½Π° MS SQL Server. Указания Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π·Π° прослСдяванС

ΠΏΡ€Π΅Π΄Π³ΠΎΠ²ΠΎΡ€

Доста чСсто ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΈ администраторитС Π½Π° Π‘Π£Π‘Π” Π½Π° MS SQL Server срСщат ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с производитСлността Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ Π‘Π£Π‘Π” ΠΊΠ°Ρ‚ΠΎ цяло, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½Π°Π±Π»ΡŽΠ΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° 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. Ако Ρ‚Π΅ са Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ Π² своята ΡΡŠΠ²ΠΊΡƒΠΏΠ½ΠΎΡΡ‚, Ρ‚ΠΎΠ³Π°Π²Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ голяма вСроятност Π΄Π° няма Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ RAM Π·Π° СкзСмпляра Π½Π° MS SQL Server. Π—Π½Π°Ρ‡ΠΈΠΌΠΈΡ‚Π΅ стойности сС опрСдСлят ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π½ΠΎ Π·Π° всяка систСма. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π°Ρ‡Π΅ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ със слСдното: 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'
      );
    

Π’ΡŠΠ· основа Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ стойности Π·Π° Ρ‚Π΅Π·ΠΈ Π΄Π²Π° показатСля ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π΄Π°Π»ΠΈ ΠΈΠΌΠ° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ RAM Π·Π° СкзСмпляр Π½Π° 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. Максимална стСпСн Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ - Π·Π°Π΄Π°Π²Π° максималния Π±Ρ€ΠΎΠΉ нишки, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π·Π° всяка заявка (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ 0 - ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ само ΠΎΡ‚ самата ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° MS SQL Server)
  2. ΠŸΡ€Π°Π³ Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ - ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·Π½Π° Ρ†Π΅Π½Π° Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΌΠ° (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ 5)
  3. Max DOP - Π·Π°Π΄Π°Π²Π° максималния Π±Ρ€ΠΎΠΉ нишки, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Π·Π° всяка заявка Π½Π° Π½ΠΈΠ²ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ (Π½ΠΎ Π½Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ стойността Π½Π° свойството "Максимална стСпСн Π½Π° паралСлност") (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ 0 - ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ само ΠΎΡ‚ самата ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° MS SQL Server, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° свойството β€žΠœΠ°ΠΊΡΠΈΠΌΠ°Π»Π½Π° стСпСн Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌβ€œ Π½Π° цСлия СкзСмпляр Π½Π° MS SQL Server)

Π’ΡƒΠΊ Π΅ нСвъзмоТно Π΄Π° сС Π΄Π°Π΄Π΅ Π΅Π΄Π½Π°ΠΊΠ²ΠΎ Π΄ΠΎΠ±Ρ€Π° Ρ€Π΅Ρ†Π΅ΠΏΡ‚Π° Π·Π° всички случаи, Ρ‚.Π΅. трябва Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Π΅ΠΆΠΊΠΈ заявки.
ΠžΡ‚ моя собствСн ΠΎΠΏΠΈΡ‚ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ слСдния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ ΠΎΡ‚ дСйствия Π·Π° OLTP систСми Π·Π° настройка Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ свойства:

  1. ΠΏΡŠΡ€Π²ΠΎ Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΌΠ°, ΠΊΠ°Ρ‚ΠΎ Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ максималната стСпСн Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π·Π° цялата инстанция Π½Π° 1
  2. Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ Π½Π°ΠΉ-Ρ‚Π΅ΠΆΠΊΠΈΡ‚Π΅ заявки ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ оптималния Π±Ρ€ΠΎΠΉ нишки Π·Π° тях
  3. Π·Π°Π΄Π°ΠΉΡ‚Π΅ Max Degree of Parallelism Π½Π° избрания ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ Π±Ρ€ΠΎΠΉ нишки, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ ΠΎΡ‚ ΡΡ‚ΡŠΠΏΠΊΠ° 2, ΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π°Π΄Π°ΠΉΡ‚Π΅ Max DOP стойност, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΎΡ‚ ΡΡ‚ΡŠΠΏΠΊΠ° 2 Π·Π° всяка Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ
  4. Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ Π½Π°ΠΉ-Ρ‚Π΅ΠΆΠΊΠΈΡ‚Π΅ заявки ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΉΡ‚Π΅ отрицатСлния Π΅Ρ„Π΅ΠΊΡ‚ ΠΎΡ‚ многопоточността. Ако Π΅ Ρ‚Π°ΠΊΠ°, ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Ρ‚Π΅ ΠΏΡ€Π°Π³Π° Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ.
    Π—Π° систСми ΠΊΠ°Ρ‚ΠΎ 1C, Microsoft CRM ΠΈ Microsoft NAV Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи Π΅ подходяща Π·Π°Π±Ρ€Π°Π½Π° Π½Π° многопоточност

ОсвСн Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ ΠΈΠΌΠ° стандартно ΠΈΠ·Π΄Π°Π½ΠΈΠ΅, Ρ‚ΠΎΠ³Π°Π²Π° Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи Π·Π°Π±Ρ€Π°Π½Π°Ρ‚Π° Π·Π° многопоточност Π΅ подходяща ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ Π² броя Π½Π° процСсорнитС ядра.
Π—Π° OLAP систСми Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚, описан ΠΏΠΎ-Π³ΠΎΡ€Π΅, Π½Π΅ Π΅ подходящ.
ΠžΡ‚ моя собствСн ΠΎΠΏΠΈΡ‚ ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ слСдния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ ΠΎΡ‚ дСйствия Π·Π° OLAP систСми Π·Π° настройка Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ свойства:

  1. Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ Π½Π°ΠΉ-Ρ‚Π΅ΠΆΠΊΠΈΡ‚Π΅ заявки ΠΈ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ оптималния Π±Ρ€ΠΎΠΉ нишки Π·Π° тях
  2. Π·Π°Π΄Π°ΠΉΡ‚Π΅ Max Degree of Parallelism Π½Π° избрания ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ Π±Ρ€ΠΎΠΉ нишки, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ ΠΎΡ‚ ΡΡ‚ΡŠΠΏΠΊΠ° 1, ΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π°Π΄Π°ΠΉΡ‚Π΅ Max DOP стойност, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΎΡ‚ ΡΡ‚ΡŠΠΏΠΊΠ° 1 Π·Π° всяка Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ
  3. Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΡ‚Π΅ Π½Π°ΠΉ-Ρ‚Π΅ΠΆΠΊΠΈΡ‚Π΅ заявки ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°ΠΉΡ‚Π΅ отрицатСлния Π΅Ρ„Π΅ΠΊΡ‚ ΠΎΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° паралСлността. Ако Π΅ Ρ‚Π°ΠΊΠ°, Ρ‚ΠΎΠ³Π°Π²Π° ΠΈΠ»ΠΈ Π½Π°ΠΌΠ°Π»Π΅Ρ‚Π΅ стойността Π½Π° ΠΏΡ€Π°Π³Π° Π½Π° Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ, ΠΈΠ»ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Ρ‚Π΅ ΡΡ‚ΡŠΠΏΠΊΠΈ 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 - Π’ΠΊΠ»ΡŽΡ‡Π²Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π½Π° заявки, пуснат Π² CU ΠΈ SQL Server Service Packs
  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 Configuration Manager ΠΈ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Ρ‚Π΅Π·ΠΈ Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π·Π° прослСдяванС Ρ‡Ρ€Π΅Π· -T Π² свойствата Π½Π° услугата:
Някои аспСкти Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π½Π° MS SQL Server. Указания Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π·Π° прослСдяванС

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΎΡ‚

Π’ Ρ‚Π°Π·ΠΈ статия бяха Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ някои аспСкти Π½Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π½Π° MS SQL Server, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π±ΡŠΡ€Π·ΠΎ Π΄Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚Π΅ липсата Π½Π° RAM ΠΈ свободно Π²Ρ€Π΅ΠΌΠ΅ Π½Π° процСсора, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Ρ€Π΅Π΄ΠΈΡ†Π° Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ. ΠŸΡ€Π΅Π³Π»Π΅Π΄Π°Π½ΠΈ са Π½Π°ΠΉ-чСсто ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ Ρ„Π»Π°Π³ΠΎΠ²Π΅ Π·Π° прослСдяванС.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ:

Β» Бтатистика Π·Π° ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ Π½Π° SQL Server
Β» Бтатистика Π·Π° ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅ Π½Π° SQL Server ΠΈΠ»ΠΈ моля, ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΌΠΈ къдС Π±ΠΎΠ»ΠΈ
Β» БистСмСн ΠΈΠ·Π³Π»Π΅Π΄ sys.dm_os_schedulers
» ИзползванС на Zabbix за наблюдСниС на MS SQL Server база данни
Β» SQL Lifestyle
Β» Π€Π»Π°Π³ΠΎΠ²Π΅ Π·Π° прослСдяванС
Β» sql.ru

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€