Pipila ka mga aspeto sa MS SQL Server monitoring. Mga Sumbanan alang sa Pagbutang sa mga Pagsubay sa Bandera

Pasiuna

Kasagaran, ang mga tiggamit, mga developer ug mga administrador sa MS SQL Server DBMS makasugat sa mga problema sa performance sa database o sa DBMS sa kinatibuk-an, mao nga ang MS SQL Server monitoring mao ang kaayo may kalabutan.
Kini nga artikulo usa ka dugang sa artikulo Paggamit sa Zabbix sa Pag-monitor sa MS SQL Server Database ug kini maglakip sa pipila ka mga aspeto sa pag-monitor sa MS SQL Server, ilabi na: kung unsaon pagtino dayon kung unsang mga kahinguhaan ang kulang, ingon man mga rekomendasyon alang sa pagbutang sa mga bandera sa pagsubay.
Aron molihok ang mosunod nga mga script, kinahanglang maghimo ka og inf schema sa gusto nga database sama sa mosunod:
Paghimo og inf schema

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

Pamaagi sa pag-ila sa kakulang sa RAM

Ang una nga timailhan sa kakulang sa RAM mao ang kaso kung ang usa ka pananglitan sa MS SQL Server mokaon sa tanan nga RAM nga gigahin niini.
Aron mahimo kini, maghimo kami sa mosunod nga representasyon sa inf.vRAM:
Paghimo sa inf.vRAM view

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;

Dayon mahibal-an nimo nga ang usa ka pananglitan sa MS SQL Server naggamit sa tanang memorya nga gigahin niini pinaagi sa mosunod nga pangutana:

select  SQL_server_physical_memory_in_use_Mb,  SQL_server_committed_target_Mb
from [inf].[vRAM];

Kung ang SQL_server_physical_memory_in_use_Mb kanunay nga mas dako o katumbas sa SQL_server_committed_target_Mb, nan ang estadistika sa paghulat kinahanglan nga susihon.
Aron mahibal-an ang kakulang sa RAM pinaagi sa mga estadistika sa paghulat, maghimo kita sa inf.vWaits view:
Paghimo sa 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];

Sa kini nga kaso, mahimo nimong mahibal-an ang kakulang sa RAM gamit ang mosunod nga pangutana:

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

Dinhi kinahanglan nimo nga hatagan pagtagad ang mga timailhan nga Porsiyento ug AvgWait_S. Kung kini mahinungdanon sa ilang kinatibuk-an, nan adunay taas nga posibilidad nga walay igo nga RAM alang sa MS SQL Server nga pananglitan. Ang hinungdanon nga mga kantidad gitino nga tinagsa alang sa matag sistema. Bisan pa, mahimo kang magsugod sa mosunod: Porsiyento>=1 ug AvgWait_S>=0.005.
Sa pag-output sa mga indicators sa usa ka monitoring system (pananglitan, Zabbix), mahimo nimong himoon ang mosunod nga duha ka pangutana:

  1. pila ka klase sa paghulat ang giokupar sa RAM sa porsyento (ang sumada sa tanan nga ingon nga mga tipo sa paghulat):
    select coalesce(sum([Percentage]), 0.00) as [Percentage]
    from [inf].[vWaits]
           where [WaitType] in (
               'PAGEIOLATCH_XX',
               'RESOURCE_SEMAPHORE',
                'RESOURCE_SEMAPHORE_QUERY_COMPILE'
      );
    
  2. pila ka mga tipo sa paghulat sa RAM ang gikuha sa milliseconds (ang labing taas nga kantidad sa tanan nga kasagaran nga mga paglangan alang sa tanan nga mga tipo sa paghulat):
    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'
      );
    

Pinasukad sa dinamika sa nakuha nga mga kantidad alang niining duha nga mga timailhan, makahinapos kita kung adunay igo nga RAM alang sa usa ka pananglitan sa MS SQL Server.

Pamaagi sa Pagsusi sa Overload sa CPU

Aron mahibal-an ang kakulang sa oras sa processor, igo na nga gamiton ang pagtan-aw sa sistema sa sys.dm_os_schedulers. Dinhi, kung ang runnable_tasks_count kanunay nga labaw sa 1, nan adunay taas nga posibilidad nga ang gidaghanon sa mga cores dili igo alang sa MS SQL Server nga pananglitan.
Sa pag-output ug indicator sa usa ka monitoring system (pananglitan, Zabbix), mahimo nimong buhaton ang mosunod nga pangutana:

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

Pinasukad sa dinamika sa nakuha nga mga kantidad alang sa kini nga timailhan, makahinapos kita kung adunay igo nga oras sa processor (ang gidaghanon sa mga cores sa CPU) alang sa usa ka pananglitan sa MS SQL Server.
Bisan pa, hinungdanon nga hinumdoman ang kamatuoran nga ang mga hangyo sa ilang kaugalingon mahimong makapangayo daghang mga hilo sa usa ka higayon. Ug usahay ang optimizer dili makabanabana sa pagkakomplikado sa pangutana mismo. Unya ang hangyo mahimong igahin sa daghang mga hilo nga dili maproseso sa parehas nga oras sa gihatag nga oras. Ug kini usab ang hinungdan sa usa ka matang sa paghulat nga nalangkit sa kakulang sa oras sa processor, ug ang pagtubo sa pila alang sa mga scheduler nga naggamit sa piho nga CPU cores, i.e. ang runnable_tasks_count indicator motubo sa maong mga kondisyon.
Sa kini nga kaso, sa wala pa madugangan ang gidaghanon sa mga cores sa CPU, kinahanglan nga husto nga i-configure ang parallelism nga mga kabtangan sa MS SQL Server nga pananglitan mismo, ug gikan sa 2016 nga bersyon, husto nga i-configure ang parallelism nga mga kabtangan sa gikinahanglan nga mga database:
Pipila ka mga aspeto sa MS SQL Server monitoring. Mga Sumbanan alang sa Pagbutang sa mga Pagsubay sa Bandera

Pipila ka mga aspeto sa MS SQL Server monitoring. Mga Sumbanan alang sa Pagbutang sa mga Pagsubay sa Bandera
Dinhi kinahanglan nimo nga hatagan pagtagad ang mosunod nga mga parameter:

  1. Max Degree of Parallelism - nagtakda sa pinakataas nga gidaghanon sa mga thread nga mahimong igahin sa matag hangyo (ang default mao ang 0 - limitado lamang sa operating system mismo ug sa edisyon sa MS SQL Server)
  2. Cost Threshold para sa Parallelism - gibanabana nga gasto sa parallelism (default mao ang 5)
  3. Max DOP - nagtakda sa pinakataas nga gidaghanon sa mga hilo nga mahimong igahin sa matag pangutana sa lebel sa database (apan dili labaw sa bili sa "Max Degree of Parallelism" nga kabtangan) (default mao ang 0 - limitado lamang sa operating system mismo ug ang edisyon sa MS SQL Server, ingon man ang pagdili sa "Max Degree of Parallelism" nga kabtangan sa tibuok nga pananglitan sa MS SQL Server)

Dinhi imposible ang paghatag usa ka parehas nga maayo nga resipe alang sa tanan nga mga kaso, i.e. kinahanglan nimo nga analisahon ang bug-at nga mga pangutana.
Gikan sa akong kaugalingong kasinatian, girekomendar nako ang mosunod nga algorithm sa mga aksyon para sa mga sistema sa OLTP para sa pag-set up sa parallelism properties:

  1. una nga pag-disable ang parallelism pinaagi sa pagbutang sa instance-wide Max Degree of Parallelism sa 1
  2. analisa ang pinakabug-at nga mga hangyo ug pilia ang kamalaumon nga gidaghanon sa mga hilo alang kanila
  3. itakda ang Max Degree of Parallelism sa pinili nga kamalaumon nga gidaghanon sa mga hilo nga nakuha gikan sa lakang 2, ug alang sa piho nga mga database itakda ang Max DOP nga bili nga nakuha gikan sa lakang 2 alang sa matag database
  4. analisa ang pinakabug-at nga mga hangyo ug ilha ang negatibong epekto sa multithreading. Kung mao, unya dugangi ang Gasto sa Paralelismo.
    Alang sa mga sistema sama sa 1C, Microsoft CRM ug Microsoft NAV, sa kadaghanan nga mga kaso, ang pagdili sa multithreading angay

Usab, kung adunay usa ka Standard nga edisyon, nan sa kadaghanan nga mga kaso ang pagdili sa multithreading angay tungod sa kamatuoran nga kini nga edisyon limitado sa gidaghanon sa mga cores sa CPU.
Alang sa mga sistema sa OLAP, ang algorithm nga gihulagway sa ibabaw dili angay.
Gikan sa akong kaugalingong kasinatian, girekomendar nako ang mosunod nga algorithm sa mga aksyon para sa mga sistema sa OLAP para sa pag-set up sa parallelism properties:

  1. analisa ang pinakabug-at nga mga hangyo ug pilia ang kamalaumon nga gidaghanon sa mga hilo alang kanila
  2. itakda ang Max Degree of Parallelism sa pinili nga kamalaumon nga gidaghanon sa mga hilo nga nakuha gikan sa lakang 1, ug alang sa piho nga mga database itakda ang Max DOP nga bili nga nakuha gikan sa lakang 1 alang sa matag database
  3. analisa ang pinakabug-at nga mga pangutana ug ilha ang negatibo nga epekto sa paglimit sa panag-uyon. Kung mao, unya ipaubos ang Cost Threshold alang sa Parallelism nga kantidad, o balika ang mga lakang 1-2 niini nga algorithm

Kana mao, alang sa mga sistema sa OLTP kita gikan sa single-threading ngadto sa multi-threading, ug alang sa OLAP-systems, sa sukwahi, kita gikan sa multi-threading ngadto sa single-threading. Sa ingon, mahimo nimong pilion ang labing maayo nga mga setting sa parallelism alang sa usa ka piho nga database ug ang tibuuk nga pananglitan sa MS SQL Server.
Importante usab nga masabtan nga ang mga setting sa parallelism properties kinahanglan nga usbon sa paglabay sa panahon, base sa mga resulta sa pagmonitor sa performance sa MS SQL Server.

Mga Sumbanan alang sa Pagbutang sa mga Pagsubay sa Bandera

Gikan sa akong kaugalingon nga kasinatian ug sa kasinatian sa akong mga kauban, alang sa labing maayo nga pasundayag, akong girekomendar ang pagbutang sa mosunod nga pagsubay sa mga bandera sa run level sa MS SQL Server nga serbisyo alang sa mga bersyon 2008-2016:

  1. 610 - Gipamub-an ang pag-log sa mga pagsal-ot sa na-index nga mga lamesa. Makatabang sa mga pagsal-ot sa mga lamesa nga adunay daghang mga rekord ug daghang mga transaksyon, nga adunay kanunay nga taas nga WRITELOG naghulat alang sa mga pagbag-o sa mga indeks
  2. 1117 - Kung ang usa ka file sa usa ka filegroup makatagbo sa mga kinahanglanon sa autogrowth threshold, ang tanan nga mga file sa filegroup motubo
  3. 1118 - Gipugos ang tanang butang nga mahimutang sa lain-laing gilapdon (pagdili sa nagkasagol nga gilapdon), nga nagpamenos sa panginahanglan sa pag-scan sa panid sa SGAM, nga gigamit sa pagsubay sa nagkasagol nga gilapdon
  4. 1224 - Gipugngan ang pag-uswag sa lock base sa gidaghanon sa mga kandado. Bisan pa, ang sobra nga paggamit sa memorya mahimo’g mag-aghat sa pag-usbaw sa lock
  5. 2371 - Gibag-o ang gitakda nga awtomatikong pag-update sa estadistika nga threshold sa dinamikong awtomatikong pag-update sa estadistika nga threshold. Importante alang sa pag-update sa mga plano sa pangutana alang sa dagkong mga lamesa, diin ang sayop nga ihap sa mga rekord moresulta sa sayop nga mga plano sa pagpatuman
  6. 3226 - Gipugngan ang backup nga mga mensahe sa kalampusan sa log sa sayup
  7. 4199 - Naglakip sa mga pagbag-o sa pag-optimize sa pangutana nga gipagawas sa mga CU ug SQL Server Service Pack
  8. 6532-6534 - Naglakip sa mga pagpaayo sa pasundayag alang sa mga operasyon sa pangutana sa mga tipo sa datos sa spatial
  9. 8048 - Gi-convert ang NUMA partitioned memory objects ngadto sa CPU partitioned nga mga butang
  10. 8780 - Makapahimo sa dugang nga alokasyon sa oras alang sa pagplano sa pangutana. Ang ubang mga hangyo nga wala niini nga bandila mahimong isalikway tungod kay sila walay plano sa pangutana (talagsa ra nga bug)
  11. 8780 - 9389 - Makapahimo sa dugang nga dynamic grant memory buffer para sa batch mode nga mga pahayag, nga nagtugot sa batch mode operator sa paghangyo og dugang nga memorya ug paglikay sa pagbalhin sa data ngadto sa tempdb kung adunay dugang nga memorya

Usab sa wala pa ang 2016, kini mapuslanon sa pag-enable sa pagsubay sa bandila 2301, nga makapahimo sa gipauswag nga pag-optimize sa suporta sa desisyon ug sa ingon makatabang sa pagpili sa mas husto nga mga plano sa pangutana. Bisan pa, sa bersyon 2016, kini kanunay adunay negatibo nga epekto sa taas nga kinatibuk-ang mga oras sa pagpatuman sa pangutana.
Usab, alang sa mga sistema nga adunay daghang mga indeks (pananglitan, alang sa mga database sa 1C), akong girekomendar ang pagpagana sa pagsubay sa bandila 2330, nga nagpugong sa pagkolekta sa paggamit sa indeks, nga sa kasagaran adunay positibo nga epekto sa sistema.
Alang sa dugang nga impormasyon bahin sa pagsubay sa mga bandila, tan-awa dinhi
Gikan sa sumpay sa ibabaw, importante usab nga tagdon ang mga bersyon ug pagtukod sa MS SQL Server, sama sa mas bag-ong mga bersyon, ang pipila ka pagsubay sa mga bandila gipalihok pinaagi sa default o walay epekto.
Mahimo nimong i-on ug i-off ang trace flag gamit ang DBCC TRACEON ug DBCC TRACEOFF nga mga sugo, matag usa. Para sa dugang detalye tan-awa dinhi
Makuha nimo ang status sa mga trace flag gamit ang DBCC TRACESTATUS command: dugang info
Aron maapil ang mga bandera sa pagsubay sa autostart sa serbisyo sa MS SQL Server, kinahanglan ka moadto sa SQL Server Configuration Manager ug idugang kini nga mga bandera pinaagi sa -T sa mga kabtangan sa serbisyo:
Pipila ka mga aspeto sa MS SQL Server monitoring. Mga Sumbanan alang sa Pagbutang sa mga Pagsubay sa Bandera

Mga resulta

Niini nga artikulo, gisusi ang pipila ka mga aspeto sa pag-monitor sa MS SQL Server, uban ang tabang nga dali nimo mahibal-an ang kakulang sa RAM ug libre nga oras sa CPU, ingon man ang daghang uban pang dili kaayo klaro nga mga problema. Ang labing kasagarang gigamit nga mga bandera sa pagsubay gisusi na.

Mga Tinubdan:

Β» Mga istatistika sa paghulat sa SQL Server
Β» SQL Server paghulat statistics o palihog sultihi ako diin kini masakit
Β» Pagtan-aw sa sistema sys.dm_os_schedulers
Β» Paggamit sa Zabbix sa Pag-monitor sa MS SQL Server Database
Β» SQL Kinabuhi
Β» Pagsubay sa mga Bandila
Β» sql.ru

Source: www.habr.com

Idugang sa usa ka comment