Vaikimisi SQL Server 2014 Service Pack 1 ja Service Pack 3 SQL Server 2012 sisaldavad selle paranduse ja teil pole vaja lisada mis tahes trace lipud, et määrata. Paranduse lubamiseks pärast installimist mõnda kumulatiivseid värskendusi jaotises otsus kirjeldatud peate käivitage Microsoft SQL Server, lisades jälituslipp 1236 startup parameetrid.
Sümptomid
Oletagem, et käivitada arvutis, mis sisaldab mitme protsessoriga ühendust Microsoft SQL Server 2014, SQL Server 2012, SQL Server 2008 või SQL Server 2008 R2. Kui locks arv (ressursi tüüp = andmebaasi) kindla andmebaasi ületab teatava piiri, ilmneb järgmine jõudluse probleeme:
-
Laiendatud väärtused esineda LOCK_HASH spinlock arv.
Märkus. Lisateavet selle spinlock jälgimiseks jaotisest "Lisateavet". -
Päringute või toiminguid, mis nõuavad andmebaasi locks võtta kaua aega, et lõpule viia. Näiteks võite märgata järgmist jõudlus viivitused:
-
SQL serveri logimine
-
Lingitud serveri päringud
-
sp_reset_connection
-
Kanded
-
Märkus. Leida locks loend (ressursi tüüp = andmebaasi) antud andmebaasis, lugege jaotist "Lisateavet". See läviväärtus riigiti keskkonnas.
Lahendus
Koondvärskenduse teave
See probleem parandati esmakordselt järgmise koondvärskenduse SQL Server.
Koondvärskenduses 13 kohta SQL Server 2008 R2 hoolduspaketiga SP2/en-us/help/2967540
SQL Server 2008 hoolduspaketi SP3 koondvärskenduses 17/en-us/help/2958696
SQL serveri 2014 koondvärskenduses 1/en-us/help/2931693
SQL Server 2012 SP1 koondvärskenduse 9/en-us/help/2931078
Iga uue SQL serveri koondvärskendus sisaldab kõiki Kiirparandusi ja kõiki turbeparandusi, mis sisaldusid eelmises koondvärskenduses. Vaadake SQL serveri kumulatiivseid värskendusi:
Kiirparanduse teave
Toetatud käiguparandus on saadaval Microsoftilt. See kiirparandus on ette nähtud üksnes käesolevas artiklis kirjeldatud probleemi lahendamiseks. Kasutage seda parandust ainult selle konkreetse probleemiga süsteemides. Kui kiirparandus on allalaadimiseks saadaval, on selle teabebaasi artikli alguses jaotis Kiirparandus on saadaval. Kui seda jaotist ei ole, saatke Microsofti klienditeenindusele ja -toele taotlus kiirparanduse hankimiseks. Märkus. Kui ilmneb täiendavaid probleeme või kui vajalik on tõrkeotsing, peate looma eraldi tugiteenuse taotluse. Tavapärane tugiteenuse tasu kehtib täiendavatele tugiteenustega seotud küsimustele ning probleemidele, mis pole lahendatavad konkreetse värskenduse installimisega. Täieliku loetelu Microsofti klienditeeninduse ja -toe telefoninumbrite või eraldi tugiteenuse taotluse loomiseks külastage järgmist Microsofti veebisaiti:http://support.microsoft.com/contactus/?ws=supportMärkus. Vormil Kiirparandus on allalaadimiseks saadaval kuvatakse keeled, mille jaoks kiirparandus on saadaval. Kui te ei näe oma keelt, ei ole kiirparandus selles keeles saadaval.
Olek
Microsoft on kinnitanud, et see probleem esineb jaotises "Kehtib järgmiste toodete kohta" loetletud Microsofti toodetel.
Lisateabe saamiseks
Kui rakendus loob ühenduse SQL serveri, esmalt loob andmebaasi raames. Vaikimisi proovib ühendust hankida andmebaasi lukk, SH režiimis. Kui ühendus on peatatud või andmebaasi seoses muudetakse ühendus kehtivuse ajal ilmub SH andmebaasi lukk. Kui teil on palju aktiivne ühendused, mis kasutavad sama andmebaasi raames, võib olla palju locks andmebaasi ressursi tüüp selle konkreetse andmebaasi.
Arvutis, kus on 16 või mitme protsessoriga, kasutage ainult tabeli objektid sektsioonitud lock süsteemi. Siiski andmebaasi locks on sektsioonida. Seetõttu suurem arv andmebaasi lukustab, seda kauem võtab SQL serveri hankimise lukustatud andmebaasi. Enamikus rakendustes ilmneda probleeme, mis on põhjustatud selle kujunduse. Kuid kui arv ületab teatava piiri, lisatöö ja kellaaeg on vaja saada lukustus. Kuigi hind on ainult micro sekundit iga täiendav Lock, kogu aeg saab kiiresti suurendada, sest lukk hash jääkfailihulgad on kaitstud ka spinlock abil. See põhjustab täiendavaid protsessori ja ootab täiendavat töötajad saada lukustus. Selle kiirparanduse tutvustab andmebaasi lock eraldamine jälituslipp T1236 lubamisel käivitamisel. Lukusta loendi sügavus partitsioonideks jaotamise andmebaasi lukk hoiab hallatavaks iga kohaliku sektsiooni. See oluliselt optimeerib andmebaasi lukk hankida juurdepääsu tee. LOCK_HASH spinlock jälgimiseks kasutage järgmist päringu.SET NOCOUNT ONCREATE TABLE #spinlock_stats([CaptureTime] datetime,[name] nvarchar(512),[collisions] bigint, [spins] bigint,[spins_per_collision] real,[sleep_time] bigint,[backoffs] int) DECLARE @counter int = 1 WHILE @counter < 100 BEGIN INSERT INTO #spinlock_stats SELECT GETDATE() as "CaptureTime" , * FROM sys.dm_os_spinlock_stats WHERE [name] = 'LOCK_HASH' WAITFOR DELAY '00:00:05' SET @counter +=1 END SELECT * FROM #spinlock_stats ORDER BY [CaptureTime] DROP TABLE #spinlock_stats Diagnoosimiseks ja lahendamiseks spinlock väide SQL serveri kohta lisateabe saamiseks külastage järgmist dokumenti:Diagnoosimiseks ja lahendamiseks Spinlock väide SQL serverisMärkus. Kuigi see dokument on kirjutatud SQL Server 2008 R2, teave on siiski mõeldud SQL Server 2012.
Viited
Trace lipud SQL Server 2012 kohta lisateabe saamiseks külastage järgmist TechNeti veebisaiti:
Teave trace lipud SQL Server 2012 Kuidas leida andmebaasi locks arv kasutaja andmebaasi kohta lisateabe saamiseks kasutage järgmist päringu selle väärtuse arvutamiseks.select Resource_database_id, resource_type, request_mode, request_status, count (*) 'LockCount' from sys.dm_tran_locks group by Resource_database_id, resource_type, request_mode, request_status