I ngcaciso
Rhoqo, abasebenzisi, abaphuhlisi kunye nabalawuli be-MS SQL Server DBMS bajongana neengxaki zokusebenza kwedathabheyisi okanye i-DBMS iyonke, ngoko ke ukujonga i-MS SQL Server kubaluleke kakhulu.
Eli nqaku lilongezo kwinqaku
Ukuze ezi scripts zilandelayo zisebenze, kufuneka uyile i-schema ye-inf kwisiseko sedatha esifunekayo ngolu hlobo lulandelayo:
Ukudala i-schema ye-inf
use <ΠΈΠΌΡ_ΠΠ>;
go
create schema inf;
Indlela yokufumanisa ukungabikho kwe-RAM
Isalathisi sokuqala sokunqongophala kwe-RAM kuxa umzekelo we-MS SQL Server isitya yonke i-RAM eyabelwe yona.
Ukwenza oku, yenza oku kulandelayo kwi-inf.vRAM:
Kuyilwa imbonakalo ye-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;
Emva koko unokugqiba ukuba umzekelo we-MS SQL Server utya yonke inkumbulo eyabelwe yona usebenzisa lo mbuzo ulandelayo:
select SQL_server_physical_memory_in_use_Mb, SQL_server_committed_target_Mb
from [inf].[vRAM];
Ukuba i-SQL_server_physical_memory_in_use_Mb isalathisi sihlala singekho ngaphantsi kwe-SQL_server_committed_target_Mb, ngoko kufuneka ukhangele izibalo zokulinda.
Ukumisela ukunqongophala kwe-RAM ngokusebenzisa izibalo zokulinda, makhe senze umbono we-inf.vWaits:
Ukudala umbono we-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];
Kule meko, unokumisela ukungabikho kwe-RAM usebenzisa lo mbuzo ulandelayo:
SELECT [Percentage]
,[AvgWait_S]
FROM [inf].[vWaits]
where [WaitType] in (
'PAGEIOLATCH_XX',
'RESOURCE_SEMAPHORE',
'RESOURCE_SEMAPHORE_QUERY_COMPILE'
);
Apha kufuneka ubeke ingqalelo kwiPhesenti kunye nezalathi ze-AvgWait_S. Ukuba zibalulekile kwitotali yazo, ngoko kukho amathuba aphezulu kakhulu okuba umzekelo we-MS SQL Server ayinayo i-RAM eyaneleyo. Amaxabiso abalulekileyo amiselwa ngokwahlukeneyo kwinkqubo nganye. Nangona kunjalo, ungaqala ngesi salathisi silandelayo: Ipesenti>=1 kunye AvgWait_S>=0.005.
Ukukhupha izikhombisi kwinkqubo yokubeka iliso (umzekelo, Zabbix), unokwenza le mibuzo mibini ilandelayo:
- Ithini ipesenti yeentlobo zokulinda ze-RAM (imali yazo zonke iindidi zokulinda):
select coalesce(sum([Percentage]), 0.00) as [Percentage] from [inf].[vWaits] where [WaitType] in ( 'PAGEIOLATCH_XX', 'RESOURCE_SEMAPHORE', 'RESOURCE_SEMAPHORE_QUERY_COMPILE' );
- zingaphi iindidi zokulinda ze-RAM ezithatha kwimillisecond (elona xabiso likhulu lalo lonke ulibaziseko oluphakathi kuzo zonke ezi ntlobo zokulinda):
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' );
Ngokusekwe kuguquko lwamaxabiso afunyenweyo kwezi zalathisi zibini, sinokugqiba ukuba kukho i-RAM eyaneleyo kumzekelo we-MS SQL Server.
Indlela yokubona umthwalo ogqithisileyo we-CPU
Ukuchonga ukunqongophala kwexesha le-CPU, sebenzisa nje i-sys.dm_os_schedulers imboniselo yenkqubo. Apha, ukuba isalathisi se-runnable_tasks_count sihlala sisikhulu kuno-1, ngoko kukho amathuba aphezulu okuba inani leecores alanelanga kumzekelo we-MS SQL Server.
Ukubonisa isalathisi kwindlela yokubeka iliso (umzekelo, i-Zabbix), unokwenza isicelo esilandelayo:
select max([runnable_tasks_count]) as [runnable_tasks_count]
from sys.dm_os_schedulers
where scheduler_id<255;
Ngokusekwe kuguquko lwamaxabiso afunyenweyo kwesi salathisi, sinokugqiba ukuba kukho ixesha elaneleyo leprosesa (inani le-CPU cores) kumzekelo we-MS SQL Server.
Nangona kunjalo, kubalulekile ukukhumbula into yokuba imibuzo ngokwayo inokubuza imisonto emininzi ngaxeshanye. Kwaye ngamanye amaxesha i-optimizer ayinakuqikelela ngokuchanekileyo ubunzima bombuzo ngokwawo. Emva koko isicelo sinokwabelwa imicu emininzi kakhulu, leyo ngexesha elithile ayikwazi ukuqhutyelwa phambili ngaxeshanye. Kwaye oku kubangela uhlobo lokulinda olunxulumene nokungabikho kwexesha leprosesa, kunye nokukhula komgca wabacwangcisi abasebenzisa ii-cores ezithile ze-CPU, oko kukuthi, i-runnable_tasks_count indicator iya kwanda kwiimeko ezinjalo.
Kule meko, ngaphambi kokunyusa inani le-CPU cores, kufuneka uqwalasele ngokuchanekileyo iipropathi zeparallelism ze-MS SQL Server umzekelo ngokwawo, kwaye ukusuka kwinguqulo ka-2016, uqwalasele ngokuchanekileyo iimpawu zokuhambelana kwedatha efunekayo:
Apha kufuneka ubeke ingqalelo kwezi parameters zilandelayo:
- I-Max Degree of Parallelism-ibeka elona nani liphezulu lemisonto enokwabelwa isicelo ngasinye (okungagqibekanga ngu-0-inqunyelwe kuphela yinkqubo yokusebenza ngokwayo kunye noshicilelo lwe-MS SQL Server)
- I-Cost Threshold for Parallelism - ixabiso eliqikelelweyo lokuhambelana (okuhlala kukho isi-5)
- I-Max DOP-imisela inani eliphezulu lemisonto enokwabelwa umbuzo ngamnye kwinqanaba lesiseko sedatha (kodwa alikho ngaphezu kwexabiso lepropati ye "Max Degree of Parallelism") (ngokungagqibekanga yi-0-inqunyelwe kuphela yinkqubo yokusebenza. ngokwayo kunye nohlelo lwe-MS SQL Server, kunye nomda kwipropathi ye-"Max Degree of Parallelism" ye-MS SQL Server yonke)
Akunakwenzeka ukunika iresiphi efanelekileyo ngokulinganayo kuzo zonke iimeko, oko kukuthi, kufuneka uhlalutye imibuzo enzima.
Ngokusekwe kumava am, ndicebisa le algorithm ilandelayo yezenzo kwiinkqubo ze-OLTP ukuqwalasela iimpawu zokuhambelana:
- okokuqala khubaza ukuhambelana ngokuseta iMax Degree yeParallelism ukuya ku-1 kwinqanaba lomzekelo uphela
- Hlalutya eyona mibuzo inzima kwaye ukhethe elona nani lemisonto kubo
- cwangcisa iMax Degree of Parallelism kwelona nani likhethiweyo lemisonto efunyenwe kwinyathelo lesi-2, kunye nogcino-lwazi oluthile lusete ixabiso leMax DOP elifunyenwe kwinyathelo lesi-2 kwisiseko sedatha ngasinye.
- Hlalutya eyona mibuzo inzima kwaye uchonge isiphumo esibi sokufunda imisonto emininzi. Ukuba kunjalo, ngoko yonyusa i-Cost Threshold for Parallelism.
Kwiinkqubo ezifana no-1C, iMicrosoft CRM kunye ne-Microsoft NAV, kwiimeko ezininzi ukuthintela ukufundwa kwemisonto emininzi kufanelekile.
Kwakhona, ukuba unayo i-Standard edition, ngoko ke kwiimeko ezininzi ukuvinjelwa kwe-multi-threading kufanelekile ngenxa yokuba olu hlelo lulinganiselwe kwinani le-CPU cores.
I-algorithm echazwe ngasentla ayifanelekanga kwiinkqubo ze-OLAP.
Ngokusekwe kumava am, ndicebisa le algorithm ilandelayo yezenzo kwiinkqubo ze-OLAP ukumisela iimpawu zokuhambelana:
- Hlalutya eyona mibuzo inzima kwaye ukhethe elona nani lemisonto kubo
- cwangcisa iMax Degree of Parallelism kwelona nani likhethiweyo lemisonto efunyenwe kwinyathelo lesi-1, kunye nogcino-lwazi oluthile lusete ixabiso leMax DOP elifunyenwe kwinyathelo lesi-1 kwisiseko sedatha ngasinye.
- Hlalutya eyona mibuzo inzima kwaye uchonge isiphumo esibi sokukhawulelana nemali. Ukuba kunjalo, ngoko unokuthoba i-Cost Threshold yexabiso leParallelism, okanye phinda amanyathelo 1-2 ale algorithm.
Oko kukuthi, kwiinkqubo ze-OLTP sisuka kwi-single-threading ukuya kwi-multi-threading, kunye neenkqubo ze-OLAP, ngokuchaseneyo, sisuka kwi-multi-threading ukuya kwi-single-threading. Ngale ndlela ungakhetha ezona zicwangciso zeparallelism zombini kwidatabase ethile nakuyo yonke iMS SQL Server umzekelo.
Kwakhona kubalulekile ukuqonda ukuba izicwangciso zeepropati ze-concurrency kufuneka zitshintshwe ngokuhamba kwexesha, ngokusekelwe kwiziphumo zokubeka esweni ukusebenza kwe-MS SQL Server.
Iingcebiso zokumisela iiflegi zomkhondo
Ukususela kumava am kunye namava abalingane bam, ukwenzela ukusebenza kakuhle, ndincoma ukuseta iiflegi zokulandelela zilandelayo kwi-MS SQL Server yenkonzo yokuqhubela phambili kwiinguqulelo ze-2008-2016:
- 610 - Nciphisa ukuloga kokufakwa kwiitafile ezinezalathiso. Inokunceda ngokufaka kwiitafile ezinenani elikhulu leerekhodi kunye neentengiselwano ezininzi, kunye rhoqo ende WRITELOG ilinda utshintsho kwizalathisi.
- 1117 Ukuba ifayile kwiqela lefayile idibana nomda wokukhula okuzenzekelayo, zonke iifayile kwiqela lefayile zikhulisiwe.
- 1118 -Inyanzelisa zonke izinto ukuba zibekwe kwimiba eyahlukeneyo (ayivumeli imilinganiselo exubeneyo), enciphisa imfuno yokuskena iphepha le-SGAM, elisetyenziselwa ukulandelela imiba exutyiweyo.
- 1224 -Ikhubaza ukunyuka kwetshixo ngokusekelwe kubalo lokutshixa. Nangona kunjalo, ukusetyenziswa kwememori okugqithisileyo kunokuvumela ukunyuka kwesitshixo
- I-2371-Itshintsha umda wohlaziyo lwezibalo ezizenzekelayo ukuya kwinqanaba lohlaziyo lwezibalo ezizenzekelayo. Kubalulekile ukuhlaziya izicwangciso zemibuzo kwiitheyibhile ezinkulu apho kuchazwa ngokungachanekanga inani leerekhodi kukhokelela kwizicwangciso zokwenziwa ezigwenxa.
- 3226-Icinezela imiyalezo yempumelelo yogcino kwilog yempazamo
- 4199-Ibandakanya utshintsho kwisixhobo sokulungisa imibuzo esikhutshwe kwi-SQL Server rollups kunye neepakethi zenkonzo.
- 6532-6534 - Ibandakanya ukuphuculwa komsebenzi kwimibuzo eneentlobo zedatha yendawo
- I-8048 - Iguqula izinto zememori ezahluliweyo ze-NUMA zibe zezahlulo ze-CPU
- I-8780-Ivumela ukwabiwa kwexesha elongezelelweyo lokucwangcisa imibuzo. Ezinye izicelo ngaphandle kwale flegi zinokukhatywa kuba azinacebo lokubuza (impazamo enqabileyo kakhulu)
- I-8780-9389-Yenza isithinteli sememori yethutyana eyongezelelweyo yabaqhubi bemowudi ye-batch, ivumela umqhubi wemowudi ye-batch ukuba acele imemori eyongezelelweyo kwaye aphephe ukudlulisa idatha kwi-temdb ukuba imemori eyongezelelweyo iyafumaneka.
Kukwaluncedo ukwenza umkhondo iflegi 2016 phambi kwenguqulelo ka-2301, eyenza ukuba izigqibo eziphuculweyo ziphuculwe kwaye ngaloo ndlela incede ekukhetheni iiplani zemibuzo ezingcono. Nangona kunjalo, ukusukela kwinguqulelo ka-2016, ihlala inefuthe elibi kumaxesha amade okwenziwa kombuzo.
Kwakhona, kwiinkqubo ezinezalathisi ezininzi (umzekelo, kwi-database ye-1C), ndincoma ukuba wenze iflegi yokulandelela i-2330 isebenze, ekhubaza ukuqokelelwa kokusetyenziswa kwesalathisi, esinesiphumo esihle kwisistim.
Unokufunda ngakumbi malunga nokulandela iiflegi
Ukusuka kwikhonkco elingasentla, kubalulekile ukuqwalasela iinguqulelo kunye nokwakhiwa kwe-MS SQL Server, njengeenguqulelo ezintsha, ezinye iiflegi zokulandelela zinikwe amandla ngokungagqibekanga okanye azinasiphumo.
Unokwenza okanye uvale iflegi yokulandela umkhondo usebenzisa i-DBCC TRACEON kunye ne-DBCC TRACEOFF imiyalelo, ngokulandelelanayo. Bona iinkcukacha ezininzi
Ungafumana ubume beeflegi zomkhondo usebenzisa umyalelo we-DBCC TRACESTATUS:
Ukuze umkhondo weeflegi ubandakanywe kuqaliso oluzenzekelayo lwenkonzo ye-MS SQL Server, kufuneka uye kuMphathi woLungiselelo lweseva yeSQL kwaye wongeze ezi flegi zomkhondo nge -T kwiipropati zenkonzo:
Iziphumo
Eli nqaku lihlolisise imiba ethile yokubeka iliso kwi-MS SQL Server, ngoncedo apho unokwazi ukuchonga ngokukhawuleza ukunqongophala kwe-RAM kunye nexesha le-CPU ekhululekile, kunye nenani lezinye iingxaki ezingabonakaliyo. Iiflegi zokulandelela ezisetyenziswa ngokuqhelekileyo zahlaziywa.
Imithombo:
Β»
Β»
Β»
Β»
Β»
Β»
Β»
umthombo: www.habr.com