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
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:
- 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' );
- 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:
Dinhi kinahanglan nimo nga hatagan pagtagad ang mosunod nga mga parameter:
- 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)
- Cost Threshold para sa Parallelism - gibanabana nga gasto sa parallelism (default mao ang 5)
- 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:
- una nga pag-disable ang parallelism pinaagi sa pagbutang sa instance-wide Max Degree of Parallelism sa 1
- analisa ang pinakabug-at nga mga hangyo ug pilia ang kamalaumon nga gidaghanon sa mga hilo alang kanila
- 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
- 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:
- analisa ang pinakabug-at nga mga hangyo ug pilia ang kamalaumon nga gidaghanon sa mga hilo alang kanila
- 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
- 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:
- 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
- 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
- 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
- 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
- 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
- 3226 - Gipugngan ang backup nga mga mensahe sa kalampusan sa log sa sayup
- 4199 - Naglakip sa mga pagbag-o sa pag-optimize sa pangutana nga gipagawas sa mga CU ug SQL Server Service Pack
- 6532-6534 - Naglakip sa mga pagpaayo sa pasundayag alang sa mga operasyon sa pangutana sa mga tipo sa datos sa spatial
- 8048 - Gi-convert ang NUMA partitioned memory objects ngadto sa CPU partitioned nga mga butang
- 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)
- 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
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
Makuha nimo ang status sa mga trace flag gamit ang DBCC TRACESTATUS command:
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:
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:
Β»
Β»
Β»
Β»
Β»
Β»
Β»
Source: www.habr.com