NUSTATYTI: Efektyvumo problemų kyla, kai SQL serverio duomenų bazės užrakto veiklos didėja

SVARBU: šis straipsnis išverstas naudojant „Microsoft“ mašininio vertimo programinę įrangą ir gali būti pataisytas naudojant „Community Translation Framework“ (CTF) technologiją. „Microsoft“ siūlo mašinos išverstus ir po to bendruomenės suredaguotus straipsnius, taip pat žmogaus išverstus straipsnius siekdama suteikti prieigą prie visų savo žinių bazės straipsnių daugeliu kalbų. Mašinos išverstuose ir vėliau paredaguotuose straipsniuose gali būti žodyno, sintaksės ir / arba gramatikos klaidų. „Microsoft“ neatsako už jokius netikslumus, klaidas arba žalą, patirtą dėl neteisingo turinio vertimo arba mūsų klientų naudojimosi juo. Daugiau apie CTF žr. http://support.microsoft.com/gp/machine-translation-corrections.

Spustelėkite čia, norėdami pamatyti šio straipsnio versiją anglų kalba: 2926217
Pastaba
Pagal numatytuosius nustatymus SQL Server 2014 1 pakeitimų paketą ir "SQL Server 2012" 3 pakeitimų paketą įtraukti šį pakeitimą ir jums nereikia įtraukti jokių sekimo žymių, kad įgalintumėte pataisą. Kad įgalintumėte pataisą, įdiegus kaupiamąjį naujinimų skyriuje sprendimas, turite pradėti Microsoft SQL Server pridedant sekimo žymė 1236 paleisties parametrus.
Požymiai
Tarkime, paleidžiate Microsoft SQL Server 2014 "," SQL Server 2012 "," SQL Server 2008 "arba" SQL Server 2008 R2 egzempliorių kompiuteryje, kuriame yra daug procesorių. Kai locks skaičių (išteklių tipas = duomenų bazės) konkrečių duomenų bazės viršija tam tikrą ribą, kyla šios efektyvumo problemos:
  • Didesnių teisių reikšmes nurodyti LOCK_HASH sukimosi užraktas skaičius.

    Pastaba. Žr. skyriuje "Daugiau informacijos", jei norite gauti informacijos apie tai, kaip stebėti šį sukimosi užraktas.
  • Užklausos arba operacijos, reikia duomenų bazės locks ilgai užtrukti bus baigta. Pavyzdžiui, galite pastebėti šiuos efektyvumo delsa:
    • SQL serverio prisijungimams
    • Susietojo serverio užklausos
    • sp_reset_connection
    • Operacijos
Pastaba. Norėdami rasti šliuzų sąrašą (išteklių tipas = duomenų bazės) nustatytą duomenų bazę, žr. skyrių "Daugiau informacijos". Ribinė vertė priklauso nuo aplinkos.
Sprendimas

Kaupiamojo naujinimo informacija

Šį kaupiamąjį naujinimą SQL serverio pirmą kartą buvo išspręsta problema.

Kaupiamasis naujinimas, 13 SQL Server 2008 R2 SP2

Kaupiamasis naujinimas, 17 SQL Server 2008 SP3

SQL serverio 2014 Kaupiamasis naujinimas 1

Kaupiamasis naujinimas, 9 SQL Server 2012 SP1

Apie kaupiamieji naujinimai SQL Server

SQL serverio kiekvieną naują Kaupiamasis naujinimas yra visos karštosios ir naujausios saugos pataisos, kurios buvo įtrauktos į ankstesnio kaupiamojo naujinimo. Patikrinkite SQL Server kaupiamieji naujinimai:

Karštųjų pataisų informacija

„Microsoft“ pateikia palaikomas karštąsias pataisas. Tačiau šios karštosios pataisos skirtos tik šiame straipsnyje aprašytai problemai spręsti. Jas taikykite tik sistemoms, kuriose kyla ši konkreti problema.

Jeigu karštąsias pataisas galima atsisiųsti, šio žinių bazės straipsnio viršuje yra skyrius „Galima atsisiųsti karštąsias pataisas“. Jei šio skyriaus nėra, pateikite užklausą „Microsoft“ klientų aptarnavimo ir palaikymo tarnybai, kad gautumėte karštąsias pataisas.

Pastaba. Jei kyla daugiau problemų arba jei būtina bet kokia trikčių diagnostika, jums gali tekti sukurti atskirą aptarnavimo užklausą. Į įprastos kainos už palaikymą taikomos papildomiems palaikymo klausimams ir problemų, dėl kurių negalima išspręsti naudojant minėtas karštąsias pataisas. Jei reikia išsamaus „Microsoft“ klientų aptarnavimo ir palaikymo tarnybos telefono numerių sąrašo arba norite pateikti atskirą užklausą, apsilankykite toliau nurodytoje „Microsoft“ svetainėje: Pastaba. Formoje „Galima atsisiųsti karštąsias pataisas“ nurodomos kalbos, kurioms skirtos karštosios pataisos. Jei nematote savo kalbos, tai kalbai skirtų karštųjų pataisų nėra.

Būsena
„Microsoft“ patvirtino, kad tai yra „Microsoft“ produktų, išvardytų skyriuje „Taikoma“, problema.
Daugiau informacijos
Kai programa prisijungti prie SQL serverio, jis pirmiausia nustato duomenų bazės kontekste. Pagal numatytąją reikšmę, ryšys bandys gauti duomenų bazės užrakto SH režimu. SH-duomenų bazės užrakto bus išleistas, kai ryšys nutraukiamas arba duomenų bazės kontekste pakeičiamas ryšys gyvavimo laikotarpiu. Jei turite daug active ryšių, duomenų bazės požiūriu, jūs turite daug locks konkrečios duomenų bazės duomenų bazės išteklių tipo.

Kompiuteryje, kuriame yra 16 arba daugiau CPU, tik lentelės objektų naudoti suskaidytos užrakto sistema. Tačiau duomenų bazės šliuzų nėra atskirti. Todėl, kuo didesnis duomenų bazės skaičius užrakina, ilgiau užtrunka SQL Server duomenų bazės užrakto įsigyti. Dauguma programų nepatirsite jokių problemų, dėl šio projekto. Tačiau kaip tik skaičius viršija tam tikrą ribą, daugiau darbo ir laiko reikia įsigyti užrakto. Nors ir yra tik micro sekundžių kiekvieną papildomą užrakto, visas laikas greitai gali padidėti, nes užrakto maiša tikslinės atminties sritys yra apsaugotas naudojant su sukimosi užraktas. Tai sukelia papildomų Procesoriaus ciklus ir laukia papildomos darbuotojai gautų užrakto.

Ši karštoji pataisa pakeičia duomenų bazės užrakto skaidymas Įgalinus sekimo žymė T1236 paleisties metu. Duomenų bazės užrakto skaidymas vis gylis sąraše užrakto valdomas kiekvieno vietos skaidinyje. Tai labai optimizuoja prieigos kelias, kuris naudojamas gauti duomenų bazės užrakto.

Norėdami stebėti LOCK_HASH sukimosi užraktas, galite naudoti šią užklausą.
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
Daugiau informacijos apie diagnozuoti ir išspręsti sukimosi užraktas tvirtinimas SQL Server, eikite į šį dokumentą:

Pastaba. Nors šis dokumentas parašytas SQL Server 2008 R2, informacija SQL Server 2012 vis dar galioja.
Nuorodos
Daugiau informacijos apie sekimo žymių "SQL Server 2012", rasite apsilankę šioje "TechNet" svetainėje:


Jei norite gauti daugiau informacijos apie tai, kaip rasti vartotojo už duomenų bazės duomenų bazės locks skaičių, naudokite šią užklausą apskaičiuoti šią reikšmę:
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


Įspėjimas: šis straipsnis išverstas automatiškai

Savybės

Straipsnio ID: 2926217 – Paskutinė peržiūra: 12/03/2015 16:07:00 – Peržiūra: 7.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 KbMtlt
Atsiliepimai