MS SQL Server අධීක්‍ෂණයේ සමහර අංග. සලකුණු කොඩි සැකසීම සඳහා මාර්ගෝපදේශ

පෙරවදන

බොහෝ විට, MS SQL සේවාදායකයේ DBMS හි පරිශීලකයින්, සංවර්ධකයින් සහ පරිපාලකයින් දත්ත සමුදායේ හෝ සමස්තයක් ලෙස DBMS හි ක්‍රියාකාරී ගැටළු වලට මුහුණ දෙයි, එබැවින් MS SQL සේවාදායකය අධීක්ෂණය ඉතා අදාළ වේ.
මෙම ලිපිය ලිපියට එකතු කිරීමකි MS SQL සේවාදායක දත්ත සමුදාය නිරීක්ෂණය කිරීමට Zabbix භාවිතා කිරීම සහ එය MS SQL සේවාදායකය අධීක්‍ෂණය කිරීමේ සමහර අංග ආවරණය කරනු ඇත, විශේෂයෙන්: කුමන සම්පත් අස්ථානගත වී ඇත්දැයි ඉක්මනින් තීරණය කරන්නේ කෙසේද, මෙන්ම ලුහුබැඳීම් ධජ සැකසීම සඳහා නිර්දේශ.
පහත ස්ක්‍රිප්ට් ක්‍රියා කිරීම සඳහා, ඔබ පහත පරිදි අවශ්‍ය දත්ත ගබඩාවේ inf යෝජනා ක්‍රමයක් සෑදිය යුතුය:
තොරතුරු සැලැස්මක් නිර්මාණය කිරීම

use <имя_БД>;
go
create schema inf;

RAM නොමැතිකම හඳුනාගැනීමේ ක්‍රමය

RAM නොමැතිකම පිළිබඳ පළමු දර්ශකය වන්නේ MS SQL සේවාදායකයේ අවස්ථාවක් එයට වෙන් කර ඇති සියලුම 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 View නිර්මාණය කිරීම

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'
  );

මෙහිදී ඔබ දර්ශක ප්‍රතිශතය සහ AvgWait_S වෙත අවධානය යොමු කළ යුතුය. ඒවායේ සම්පූර්ණත්වය තුළ ඒවා සැලකිය යුතු නම්, MS SQL සේවාදායක උදාහරණය සඳහා ප්‍රමාණවත් RAM නොමැති වීමේ ඉතා ඉහළ සම්භාවිතාවක් ඇත. එක් එක් පද්ධතිය සඳහා සැලකිය යුතු අගයන් තනි තනිව තීරණය වේ. කෙසේ වෙතත්, ඔබට පහත සඳහන් දේ සමඟින් ආරම්භ කළ හැක: ප්‍රතිශතය>=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 සේවාදායකයේ උදාහරණයක් සඳහා ප්‍රමාණවත් RAM තිබේද යන්න අපට නිගමනය කළ හැකිය.

CPU අධි බර හඳුනාගැනීමේ ක්‍රමය

ප්රොසෙසරයේ කාලය නොමැතිකම හඳුනා ගැනීම සඳහා, sys.dm_os_schedulers පද්ධති දර්ශනය භාවිතා කිරීම ප්රමාණවත් වේ. මෙහිදී, runnable_tasks_count නිරන්තරයෙන් 1 ට වඩා වැඩි නම්, MS SQL Server උදාහරණය සඳහා cores ගණන ප්‍රමාණවත් නොවන බවට ඉහළ සම්භාවිතාවක් ඇත.
අධීක්ෂණ පද්ධතියකට දර්ශකයක් ප්‍රතිදානය කිරීමට (උදාහරණයක් ලෙස, Zabbix), ඔබට පහත විමසුම සෑදිය හැක:

select max([runnable_tasks_count]) as [runnable_tasks_count]
from sys.dm_os_schedulers
where scheduler_id<255;

මෙම දර්ශකය සඳහා ලබාගත් අගයන්හි ගතිකත්වය මත පදනම්ව, MS SQL සේවාදායකයේ උදාහරණයක් සඳහා ප්‍රමාණවත් ප්‍රොසෙසර කාලය (CPU cores ගණන) තිබේද යන්න අපට නිගමනය කළ හැකිය.
කෙසේ වෙතත්, ඉල්ලීම් වලට එකවර නූල් කිහිපයක් ඉල්ලා සිටිය හැකි බව මතක තබා ගැනීම වැදගත්ය. සමහර විට ප්‍රශස්තකාරකයට විමසුමේ සංකීර්ණත්වය නිවැරදිව තක්සේරු කළ නොහැක. එවිට ඉල්ලීමට ලබා දී ඇති වේලාවට එකවර සැකසීමට නොහැකි බොහෝ නූල් වෙන් කළ හැකිය. තවද මෙය ප්‍රොසෙසරයේ කාලය නොමැතිකම හා සම්බන්ධ යම් ආකාරයක රැඳී සිටීමක් ඇති කරයි, සහ නිශ්චිත CPU මධ්‍යයන් භාවිතා කරන කාලසටහන් කරන්නන් සඳහා පෝලිමේ වර්ධනයට හේතු වේ, එනම් එවැනි තත්ත්ව යටතේ runnable_tasks_count දර්ශකය වර්ධනය වේ.
මෙම අවස්ථාවෙහිදී, CPU මධ්‍ය ගණන වැඩි කිරීමට පෙර, MS SQL සේවාදායක අවස්ථාවෙහිම සමාන්තර ගුණාංග නිවැරදිව වින්‍යාස කිරීම අවශ්‍ය වන අතර, 2016 අනුවාදයේ සිට, අවශ්‍ය දත්ත සමුදායේ සමාන්තරතා ගුණාංග නිවැරදිව වින්‍යාස කරන්න:
MS SQL Server අධීක්‍ෂණයේ සමහර අංග. සලකුණු කොඩි සැකසීම සඳහා මාර්ගෝපදේශ

MS SQL Server අධීක්‍ෂණයේ සමහර අංග. සලකුණු කොඩි සැකසීම සඳහා මාර්ගෝපදේශ
මෙන්න ඔබ පහත පරාමිතීන් කෙරෙහි අවධානය යොමු කළ යුතුය:

  1. සමාන්තරකරණයේ උපරිම උපාධිය - එක් එක් ඉල්ලීම සඳහා වෙන් කළ හැකි උපරිම නූල් ගණන සකසයි (පෙරනිමිය 0 - මෙහෙයුම් පද්ධතිය විසින්ම සහ MS SQL සේවාදායකයේ සංස්කරණයෙන් පමණක් සීමා වේ)
  2. සමාන්තරකරණය සඳහා පිරිවැය සීමාව - සමාන්තරකරණයේ ඇස්තමේන්තුගත පිරිවැය (පෙරනිමිය 5)
  3. Max DOP - දත්ත සමුදා මට්ටමින් එක් එක් විමසුමට වෙන් කළ හැකි උපරිම නූල් සංඛ්‍යාව සකසයි (නමුත් "සමාන්තරකරණයේ උපරිම උපාධිය" ගුණාංගයේ අගයට වඩා වැඩි නොවේ) (පෙරනිමිය 0 - මෙහෙයුම් පද්ධතිය විසින්ම පමණක් සීමා වේ සහ MS SQL සේවාදායකයේ සංස්කරණය, මෙන්ම MS SQL සේවාදායකයේ සම්පූර්ණ අවස්ථාවෙහි "සමාන්තරවාදයේ උපරිම උපාධිය" දේපල සීමා කිරීම)

මෙහිදී සෑම අවස්ථාවකදීම සමානව හොඳ වට්ටෝරුවක් ලබා දිය නොහැක, එනම් ඔබ බර විමසුම් විශ්ලේෂණය කළ යුතුය.
මගේම අත්දැකීමෙන්, සමාන්තර ගුණාංග පිහිටුවීම සඳහා OLTP පද්ධති සඳහා පහත ක්‍රියා ඇල්ගොරිතම මම නිර්දේශ කරමි:

  1. ප්‍රථමයෙන් සමාන්තරවාදය අක්‍රිය කරන්න, උදාහරණ-පුළුල් සමාන්තරකරණයේ උපරිම උපාධිය 1 ට සැකසීමෙන්
  2. බරම ඉල්ලීම් විශ්ලේෂණය කර ඒවා සඳහා ප්‍රශස්ත නූල් ගණන තෝරන්න
  3. සමාන්තරකරණයේ උපරිම උපාධිය පියවර 2 වෙතින් ලබාගත් තෝරාගත් ප්‍රශස්ත නූල් සංඛ්‍යාවට සකසන්න, සහ නිශ්චිත දත්ත සමුදායන් සඳහා එක් එක් දත්ත සමුදාය සඳහා පියවර 2 වෙතින් ලබාගත් උපරිම DOP අගය සකසන්න.
  4. බැරෑරුම් ඉල්ලීම් විශ්ලේෂණය කර බහු නූල් දැමීමේ ඍණාත්මක බලපෑම හඳුනා ගන්න. එය එසේ නම්, සමාන්තරකරණය සඳහා වන පිරිවැය සීමාව වැඩි කරන්න.
    1C, Microsoft CRM සහ Microsoft NAV වැනි පද්ධති සඳහා, බොහෝ අවස්ථාවලදී, බහු නූල් කිරීම තහනම් කිරීම සුදුසු වේ.

එසේම, සම්මත සංස්කරණයක් තිබේ නම්, බොහෝ අවස්ථාවලදී මෙම සංස්කරණය CPU core ගණනින් සීමා වී ඇති නිසා බහු නූල් දැමීමේ තහනම සුදුසු වේ.
OLAP පද්ධති සඳහා, ඉහත විස්තර කර ඇති ඇල්ගොරිතම සුදුසු නොවේ.
මගේම අත්දැකීමෙන්, සමාන්තර ගුණාංග පිහිටුවීම සඳහා OLAP පද්ධති සඳහා පහත ක්‍රියා ඇල්ගොරිතම මම නිර්දේශ කරමි:

  1. බරම ඉල්ලීම් විශ්ලේෂණය කර ඒවා සඳහා ප්‍රශස්ත නූල් ගණන තෝරන්න
  2. සමාන්තරකරණයේ උපරිම උපාධිය පියවර 1 වෙතින් ලබාගත් තෝරාගත් ප්‍රශස්ත නූල් සංඛ්‍යාවට සකසන්න, සහ නිශ්චිත දත්ත සමුදායන් සඳහා එක් එක් දත්ත සමුදාය සඳහා පියවර 1 වෙතින් ලබාගත් උපරිම DOP අගය සකසන්න.
  3. බැරෑරුම් විමසුම් විශ්ලේෂණය කිරීම සහ සමගාමීත්වය සීමා කිරීමේ ඍණාත්මක බලපෑම හඳුනා ගැනීම. එය එසේ නම්, සමාන්තර අගය සඳහා පිරිවැය සීමාව අඩු කරන්න, නැතහොත් මෙම ඇල්ගොරිතමයේ 1-2 පියවර නැවත කරන්න

එනම්, OLTP පද්ධති සඳහා අපි තනි-නූල් සිට බහු-නූල් දක්වා යන අතර, OLAP-පද්ධති සඳහා, ඊට ප්රතිවිරුද්ධව, අපි බහු-නූල් සිට තනි නූල් වෙත යන්නෙමු. මේ අනුව, ඔබට නිශ්චිත දත්ත සමුදායක් සහ MS SQL සේවාදායකයේ සම්පූර්ණ අවස්ථාව සඳහා ප්‍රශස්ත සමාන්තර සැකසුම් තෝරාගත හැක.
MS SQL සේවාදායකයේ ක්‍රියාකාරීත්වය නිරීක්ෂණය කිරීමේ ප්‍රතිඵල මත පදනම්ව, සමාන්තර ගුණාංගවල සැකසුම් කාලයත් සමඟ වෙනස් කළ යුතු බව තේරුම් ගැනීම වැදගත්ය.

සලකුණු කොඩි සැකසීම සඳහා මාර්ගෝපදේශ

මගේම අත්දැකීම් සහ මගේ සගයන්ගේ අත්දැකීම් අනුව, ප්‍රශස්ත කාර්ය සාධනය සඳහා, 2008-2016 අනුවාද සඳහා MS SQL Server සේවාවේ ධාවන මට්ටමින් පහත දැක්වෙන සලකුණු කොඩි සැකසීමට මම නිර්දේශ කරමි:

  1. 610 - සුචිගත වගු වලට ඇතුල් කිරීම් අඩු කිරීම. බොහෝ වාර්තා සහ බොහෝ ගනුදෙනු සහිත වගු තුළට ඇතුළු කිරීම සඳහා උපකාර කළ හැකි අතර, දර්ශකවල වෙනස්කම් සඳහා නිරන්තර දිගු WRITELOG බලා සිටීම සමඟ
  2. 1117 - ගොනු සමූහයක ගොනුවක් ස්වයං වර්ධන සීමාව අවශ්‍යතා සපුරාලන්නේ නම්, ගොනු සමූහයේ ඇති සියලුම ගොනු වර්ධනය වේ.
  3. 1118 - මිශ්‍ර ප්‍රමාණයන් හඹා යාමට භාවිතා කරන SGAM පිටුව පරිලෝකනය කිරීමේ අවශ්‍යතාවය අවම කරන (මිශ්‍ර ප්‍රමාණය තහනම්) සියලුම වස්තූන් විවිධ ප්‍රමාණයන්හි ස්ථානගත කිරීමට බල කරයි.
  4. 1224 - අගුලු ගණන මත පදනම්ව අගුලු උත්සන්න කිරීම අක්රීය කරයි. කෙසේ වෙතත්, අධික මතක භාවිතය අගුලු උත්සන්න වීමට හේතු විය හැක
  5. 2371 - ස්ථාවර ස්වයංක්‍රීය සංඛ්‍යාලේඛන යාවත්කාලීන එළිපත්ත ගතික ස්වයංක්‍රීය සංඛ්‍යාලේඛන යාවත්කාලීන එළිපත්ත වෙත වෙනස් කරයි. විශාල වගු සඳහා විමසුම් සැලසුම් යාවත්කාලීන කිරීම සඳහා වැදගත් වේ, වැරදි වාර්තා ගණන් කිරීම වැරදි ක්‍රියාත්මක කිරීමේ සැලසුම් ඇති කරයි
  6. 3226 - දෝෂ ලොගයේ උපස්ථ සාර්ථක පණිවිඩ යටපත් කරයි
  7. 4199 - CUs සහ SQL Server Service Pack හි නිකුත් කරන ලද විමසුම් ප්‍රශස්තකරණයෙහි වෙනස්කම් ඇතුළත් වේ
  8. 6532-6534 - අවකාශීය දත්ත වර්ග පිළිබඳ විමසුම් මෙහෙයුම් සඳහා කාර්ය සාධන වැඩිදියුණු කිරීම් ඇතුළත් වේ
  9. 8048 - NUMA කොටස් කළ මතක වස්තු CPU කොටස් කළ ඒවා බවට පරිවර්තනය කරයි
  10. 8780 - විමසුම් සැලසුම් කිරීම සඳහා අමතර කාලය වෙන් කිරීම සබල කරයි. මෙම ධජය නොමැති සමහර ඉල්ලීම් විමසුම් සැලැස්මක් නොමැති නිසා ප්‍රතික්ෂේප විය හැක (ඉතා දුර්ලභ දෝෂයක්)
  11. 8780 - 9389 - කාණ්ඩ මාදිලියේ ප්‍රකාශයන් සඳහා අතිරේක ගතික ප්‍රදාන මතක බෆරය සක්‍රීය කරයි, එමඟින් කාණ්ඩ මාදිලියේ ක්‍රියාකරුට අමතර මතකය ඉල්ලා සිටීමට සහ අමතර මතකය තිබේ නම් දත්ත tempdb වෙත ගෙනයාමෙන් වැළකී සිටීමට ඉඩ සලසයි.

එසේම 2016 ට පෙර, ලුහුබැඳීමේ ධජය 2301 සක්‍රීය කිරීම ප්‍රයෝජනවත් වේ, එය වැඩිදියුණු කළ තීරණ සහාය ප්‍රශස්තකරණයන් සක්‍රීය කරන අතර එමඟින් වඩාත් නිවැරදි විමසුම් සැලසුම් තෝරා ගැනීමට උපකාරී වේ. කෙසේ වෙතත්, 2016 අනුවාදයට අනුව, එය බොහෝ විට දීර්ඝ සමස්ත විමසුම් ක්‍රියාත්මක කිරීමේ වේලාවන් කෙරෙහි ඍණාත්මක බලපෑමක් ඇති කරයි.
තවද, බොහෝ දර්ශක සහිත පද්ධති සඳහා (උදාහරණයක් ලෙස, 1C දත්ත සමුදායන් සඳහා), සාමාන්‍යයෙන් පද්ධතියට ධනාත්මක බලපෑමක් ඇති කරන දර්ශක භාවිතය එකතු කිරීම අක්‍රීය කරන ට්‍රේස් කොඩිය 2330 සක්‍රීය කිරීමට මම නිර්දේශ කරමි.
ලුහුබැඳීමේ කොඩි පිළිබඳ වැඩි විස්තර සඳහා, බලන්න මෙහි
ඉහත සබැඳියෙන්, MS SQL සේවාදායකයේ අනුවාද සහ ගොඩනැගීම් සලකා බැලීම ද වැදගත් වේ, නව අනුවාද සඳහා, සමහර ලුහුබැඳීම් ධජ පෙරනිමියෙන් සක්‍රීය කර ඇත හෝ කිසිදු බලපෑමක් නැත.
ඔබට පිළිවෙළින් DBCC TRACEON සහ DBCC TRACEOFF විධාන සමඟින් ලුහුබැඳීමේ ධජය සක්‍රිය සහ අක්‍රිය කළ හැක. වැඩි විස්තර සඳහා බලන්න මෙහි
DBCC TRACESTATUS විධානය භාවිතයෙන් ඔබට ලුහුබැඳීමේ කොඩි වල තත්ත්වය ලබා ගත හැක: වැඩි විස්තර
MS SQL සේවාදායක සේවාවේ ස්වයංක්‍රීය ආරම්භයට ලුහුබැඳීමේ ධජ ඇතුළත් කිරීම සඳහා, ඔබ SQL Server Configuration Manager වෙත ගොස් සේවා ගුණාංග තුළ -T හරහා මෙම සලකුණු කොඩි එක් කළ යුතුය:
MS SQL Server අධීක්‍ෂණයේ සමහර අංග. සලකුණු කොඩි සැකසීම සඳහා මාර්ගෝපදේශ

ප්රතිඵල

මෙම ලිපියෙන්, MS SQL සේවාදායකය අධීක්‍ෂණය කිරීමේ සමහර අංග විශ්ලේෂණය කරන ලද අතර, එමඟින් ඔබට RAM නොමැතිකම සහ නිදහස් CPU කාලය මෙන්ම වෙනත් අඩු පැහැදිලි ගැටළු ගණනාවක් ඉක්මනින් හඳුනාගත හැකිය. බහුලව භාවිතා වන ලුහුබැඳීම් කොඩි සමාලෝචනය කර ඇත.

මූලාශ්ර:

» SQL සේවාදායකය රැඳී සිටීමේ සංඛ්‍යාලේඛන
» SQL Server සංඛ්‍යාලේඛන බලා සිටින්න, නැතිනම් කරුණාකර එය රිදෙන තැන මට කියන්න
» පද්ධති දසුන sys.dm_os_schedulers
» MS SQL සේවාදායක දත්ත සමුදාය නිරීක්ෂණය කිරීමට Zabbix භාවිතා කිරීම
» SQL ජීවන රටාව
» ට්රේස් කොඩි
» sql.ru

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න