Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Web - duplicate (do not use) SQL Server 2014 Web - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Service Pack 3 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Standard SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Express - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

Forespørsel om innhold ideen 46887 Feil #: 53589 (innhold idé)

Symptomer

Når du installerer SQL Server 2014 Service Pack 1 (SP1), SQL Server 2012 SP3 eller SQL Server-2016, opplever du treg spørringen ytelse og utvidede systemmodus (kjernemodus)-modus CPU-bruk før serveren startes. Du kan også se et stort antall PAGELATCH_ * venter.

Oppløsning

Problemet ble løst i følgende kumulative oppdateringer for SQL Server:

Hver nye kumulative oppdateringen for SQL Server inneholder alle hurtigreparasjonene og alle sikkerhetsreparasjoner som fulgte med den forrige kumulative oppdateringen. Vi anbefaler at du laster ned og installerer de nyeste kumulative oppdateringene for SQL Server:

Årsak

SQL Server bruker dynamiske latch forfremmelse og degradering av logikk (super/delskjema-latch). Dette forbedrer SQL Server-ytelse og skalerbarhet ved å holde oversikt over antall får på en tilgangsluke, og hvor lang tid det tar for å hente samme latch Hvis det fantes ingen latch kamp om ressursene. Deretter passende kroker, fremheves (Super-IO latch) basert på denne modellen. Når det er mange endringer (oppdateringer/INSERT/sletter) på en Heap eller b-tre (HoBT), som de tilknyttede HoBT kroker kan gjøre for å Lås super status. Degraderingen oppstår imidlertid ikke automatisk. Du kan lese mer om super/delskjema-latching i denne artikkelen.Hvis disse HoBTs er senere er fradelt, går tilbake til tidligere frigjort HoBT til en global hurtigbuffer for gjenbruk. Når denne HOBT brukes på nytt, brukes på nytt i tidligere forfremmede latch selv når det er ingen forskjeller i HoBT. Dette legger til CPU-belastning. Denne virkemåten øker systemmodus (kjernemodus)-modus CPU-bruken av SQL Server før serveren startes. Denne økningen legger vanligvis ikke mer enn noen mikrosekunder med hver kjøring. Du kan også se et stort antall PAGELATCH_ * venter på grunn av disse utvidede Super-IO kroker på HoBTs.

Status

Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".

Kallstakk

Kallstakk for problem

00007fffe2b6c4ba ntdll!ZwSignalAndWaitForSingleObject+0xa00007fffdff80086 KERNELBASE!SignalObjectAndWait+0x82(Innebygd)-sqldk! SystemThread::SignalAndWait + 0x2d00007fffc50d3a3c sqldk!SOS_Scheduler::Switch+0xbc00007fffc50d1b6d sqldk!SOS_Scheduler::SuspendNonPreemptive+0xd200007fffbbeb1c54 sqlmin!EventInternal<SuspendQueueSLock>::Wait+0x1ee00007fffbbf053e8 sqlmin!LatchBase::Suspend+0x63300007fffbbf04fb9 sqlmin!LatchBase::AcquireInternal+0x415(Innebygd)-sqlmin! LatchBase::AcquireSublatch + 0x19400007fffbeb05cc2 sqlmin!LatchBase::AcquireAllSublatches+0x29b00007fffbc17bbee sqlmin!LatchBase::AcquireInternal+0x2ee(Innebygd)-sqlmin! LatchBase:: anskaffelse + 0x2f(Innebygd)-sqlmin! CAutoLatch::GetAccess + 0x2f(Innebygd)-sqlmin! BaseSharedHoBt::GetVirtualRootWithLatch + 0x2f00007fffbcaf8c58 sqlmin!HoBtAccess::GetVirtualRootWithLatch+0x4800007fffbcafacc5 sqlmin!BTreeMgr::HandleRoot+0x10500007fffbc1047f8 sqlmin!BTreeMgr::Seek+0x24800007fffbbebdc67 sqlmin!BTreeMgr::GetHPageIdWithKey+0x32d00007fffbbf3df95 sqlmin!IndexPageManager::GetPageForLinkModification+0x21a(Innebygd)-sqlmin! LocatePageForSplit + 0x3000007fffbbf3bd93 sqlmin!SplitPage+0x3b300007fffbbf3e177 sqlmin!IndexDataSetSession::InsertSmallRecord+0x1a1d00007fffbbf25d81 sqlmin!IndexDataSetSession::InsertRowInternal+0x2de100007fffbbf26936 sqlmin!DatasetSession::InsertRow+0x16300007fffbbf267c6 sqlmin!RowsetNewSS::InsertRow+0x2600007fffbc96842b sqlmin!CXRowset::InsertRow+0xdb(Innebygd)-sqlmin! CPerIndexMetaQS::InsertRow + 0x2900007fffbbf32eab sqlmin!CValRowMult::SetDataX+0x194(Innebygd)-sqltses! CallEsFn + 0x900007fffb93920df sqltses!CEsExec::GeneralEval+0x1a9(Innebygd)-sqlmin! CEsRuntime:: Eval + 0xA00007fffbbf2f64e sqlmin!CQScanUpdateNew::GetRow+0x43d00007fffbc0d318d sqlmin!CQueryScan::GetRow+0x8100007fffb9c393b7 sqllang!CXStmtQuery::ErsqExecuteQuery+0x36d00007fffb9c5cabc sqllang!CXStmtDML::XretDMLExecute+0x31c(Innebygd)-sqllang! CXStmtDML::XretDoExecute + 0x2300007fffb9c5cc09 sqllang!CXStmtDML::XretExecute+0xad(Innebygd)-sqllang! CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn + 0x1400007fffba7ddac2 sqllang!CMsqlExecContext::ExecuteStmts<1,0>+0x178200007fffb9fd00d3 sqllang!CMsqlExecContext::FExecute+0xa4a00007fffb9c3c60f sqllang!CSQLSource::Execute+0x86c00007fffb9c423c7 sqllang!process_request+0xa5700007fffb9c424e3 sqllang!process_commands+0x4a300007fffc50d4850 sqldk!SOS_Task::Param::Execute+0x21e00007fffc50d4634 sqldk!SOS_Scheduler::RunTask+0xa800007fffc50d4306 sqldk!SOS_Scheduler::ProcessTasks+0x27900007fffc50fc2ff sqldk!SchedulerManager::WorkerEntryPoint+0x24c00007fffc50fc450 sqldk!SystemThread::RunWorker+0x8f00007fffc50fc3d9 sqldk!SystemThreadDispatcher::ProcessWorker+0x36600007fffc50fcc68 sqldk!SchedulerManager::ThreadEntryPoint+0x22600007fffe22116ad kernel32!BaseThreadInitThunk+0xd00007fffe2b44629 ntdll!RtlUserThreadStart+0x1d

Løse oppkallstakken

# Underordnet-SP RetAddr samtale område00 00007fd2 'c2cdc908 00007ff9' 0662a796 sqlmin! BaseSharedHoBt::DemoteLatch [d:\b\s1\sources\sql\ntdbms\storeng\dfs\schemamanager\source\hobt.cpp @ 79]01 00007fd2'c2cdc910 00007ff9'06642990 sqlmin! VisibleHoBt::InitForRefresh + 0xf6 [d:\b\s1\sources\sql\ntdbms\storeng\dfs\schemamanager\source\hobt.cpp @ 1417]02 00007fd2 'c2cdc950 00007ff9' 05f9d1c7 sqlmin! HoBtFactory::GetHoBtAccess + 0x370 [d:\b\s1\sources\sql\ntdbms\storeng\dfs\schemamanager\source\schemamgr.cpp @ 2343]03 (innebygd funksjon)-------sqlmin! HoBtAccess::Init + 0x55 [d:\b\s1\sources\sql\ntdbms\storeng\include\schemamgr.inl @ 1424]04 (innebygd funksjon)-------sqlmin! HoBtAccess::Init + 0x55 [d:\b\s1\sources\sql\ntdbms\storeng\include\schemamgr.inl @ 1440]05 00007fd2 'c2cdcb90 00007ff9' 06a75ab6 sqlmin! GetRowsetProperties + 0x177 [d:\b\s1\sources\sql\ntdbms\storeng\dfs\access\dataset.cpp @ 3247]06 (innebygd funksjon)-------sqlmin! RowsetNewSS::WakeUpInternal + 0x19e [d:\b\s1\sources\sql\ntdbms\storeng\drs\oledb\rowset.cpp @ 2129]07 00007fd2 'c2cdccb0 00007ff9' 06a54796 sqlmin! RowsetNewSS::Init + 0x266 [d:\b\s1\sources\sql\ntdbms\storeng\drs\oledb\rowset.cpp @ 2264]08 00007fd2 'c2cdcd70 00007ff9' 06a53ee0 sqlmin! OpenRowsetSS::OpenRowset + 0x116 [d:\b\s1\sources\sql\ntdbms\storeng\drs\oledb\openrst.cpp @ 1077]09 00007fd2'c2cdcea0 00007ff9'05927380 sqlmin! OpenSystemTableRowset + 0x2d0 [d:\b\s1\sources\sql\ntdbms\storeng\drs\oledb\openrst.cpp @ 681]0a 00007fd2'c2cdcfd0 00007ff9'05927951 sqlmin! CMEDScanBase::Rowset + 0x560 [d:\b\s1\sources\sql\ntdbms\metadata\src\cmedscan.cpp @ 1451]0b 00007fd2 'c2cdd490 00007ff9' 058ec0a3 sqlmin! CMEDScan::StartSearch + 0x561 [d:\b\s1\sources\sql\ntdbms\metadata\src\cmedscan.cpp @ 1667]Du kan samle inn et XE-økt utdata med følgende definisjon.

--opprette øktOPPRETTE HENDELSEN økt på SERVEREN [xe_waits]Legge til HENDELSEN sqlos.wait_info)ACTION(package0.callstack,sqlserver.client_app_name,sqlserver.client_hostname,sqlserver.database_id,sqlserver.nt_username,sqlserver.query_hash,sqlserver.query_plan_hash,sqlserver.session_id)DER ([opcode]=(1) og ([wait_type]=(52) eller [wait_type]=(50)) AND [varighet] > 100))Legge til mål-package0.event_file (Sett filename = N' H:\Cases\115101313260378_Denny_Cherry\2015-10-19\xe_waits.xel',max_file_size=(500),max_rollover_files=(30))MED (MAX_MEMORY = 256000 KB, EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS, MAX_DISPATCH_LATENCY = 30 SEKUNDER, MAX_EVENT_SIZE = 0 KB, MEMORY_PARTITION_MODE = PER_CPU, TRACK_CAUSALITY = AV, STARTUP_STATE = AV)GÅLaster inn en DB, ser ut som varme kallstakk er ganske mye på samme måte som du så i dump.

Velg a_callstack, count(*) som hot callstack' fra LatchXEDB.dbo.wait_infoGrupper etter a_callstackrekkefølgen av 2 desc...(kopierer ikke utdata siden den for stor.)Stort sett alle øverste stakker viser seg for å være en variant av følgende.

sqldk!GenericEvent::CallNextAction (00007fff`c50e3cc0)sqldk!XeSosPkg::wait_info::Publish (00007fff`c50d14f0)sqldk!SOS_Scheduler::UpdateWaitTimeStats (00007fff`c50d21e0)QWORD ptr [sqlmin! _imp_? PostWaitSOS_TaskSAXPEBVSOS_WaitInfoKZ (00007fff'bf318ae0)]sqlmin!EventInternal<SuspendQueueSLock>::Wait (00007fff`bbeb1b50)sqlmin!LatchBase::Suspend (00007fff`bbf04fd0)sqlmin!LatchBase::AcquireInternal (00007fff`bbeb1f20)sqlmin!BUF::AcquireLatch (00007fff`bbebaf60)sqlmin!BPool::Get (00007fff`bbebb1f0)sqlmin!BTreeMgr::Seek (00007fff`bbebdd40)sqlmin!BTreeMgr::GetHPageIdWithKey (00007fff`bbebdbe0)sqlmin!IndexPageManager::GetPageWithKey (00007fff`bbebd6e0)sqlmin!IndexDataSetSession::LocatePageForInsert (00007fff`bbf265d0)sqlmin!IndexDataSetSession::InsertSmallRecord (00007fff`bbf25e50)

Forfatter:Fang Fang Meng (CSS)Writer: v-shysunTeknisk redaktør: tejasaks; keiikoga; ajayj; v-fmeng;Redaktør: v-phoebh, v-rhowar

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.

Fellesskap hjelper deg med å stille og svare på spørsmål, gi tilbakemelding og høre fra eksperter med stor kunnskap.