PARANDUS: Jõudluse probleemid ilmnevad, kui andmebaasi lock tegevus suurendab SQL serveris

NB! Artikkel on tõlgitud Microsofti masintõlketarkvaraga ja seda saab parandada Kogukonnapõhise tõlkeraamistiku (CTF) tehnoloogiaga. Microsoft pakub masintõlgitud, kogukonna järeltöödeldud ja inimtõlgitud artikleid, et anda mitmekeelne juurdepääs kõigile meie teabebaasi artiklitele. Masintõlgitud ja järeltöödeldud artiklites võib olla sõnavara-, süntaksi- ja/või grammatikavigu. Microsoft ei vastuta mingite ebatäpsuste, tõrgete ega kahjude eest, mis on tulenenud sisu valest tõlkest või selle kasutamisest meie klientide poolt. Lisateavet CTF-i kohta leiate aadressilt http://support.microsoft.com/gp/machine-translation-corrections/et.

Artikli ingliskeelse versiooni kuvamiseks klõpsake siin: 2926217
Teatis
Vaikimisi SQL Server 2014 Service Pack 1 ja Service Pack 3 SQL Server 2012 sisaldavad parandus ning te ei pea ühtegi trace lipud paranduse lubamiseks lisage. 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. Saamiseks jälgida selle spinlock 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ärskenduse 13 SQL Server 2008 R2 hoolduspaketiga SP2

Koondvärskenduse 17 SQL Server 2008 hoolduspakett SP3

SQL serveri 2014 koondvärskenduse 1

SQL Server 2012 SP1 koondvärskenduse 9

Kumulatiivseid värskendusi SQL serveri kohta

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 käigultparandusega. Microsofti klienditeeninduse ja -toe telefoninumbrite täieliku loendi vaatamiseks või eraldi tugiteenuse taotluse loomiseks külastage järgmist Microsofti veebisaiti: Mä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.
Lisateave
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. Aga niipea, 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 = 1WHILE @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      ENDSELECT * 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:

Mä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:


Kohta, 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


Hoiatus. See artikkel on masintõlgitud.

Atribuudid

Artikli ID: 2926217 – viimati läbi vaadatud: 12/03/2015 06:01:00 – redaktsioon: 10.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2008 Service Pack 3, Microsoft SQL Server 2008 R2 Service Pack 2

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbautohotfix kbhotfixserver kbmt KB2926217 KbMtet
Tagasiside