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, kad paleisti Microsoft SQL serverio 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. Peržiūrėkite skyrių "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šas (išteklių tipas = duomenų bazės) nustatytą duomenų bazę, žr. skyriuje "Daugiau informacijos". Ribinė vertė priklauso nuo aplinkos.
Sprendimas
Kaupiamojo naujinimo informacija
Problema pirmą kartą buvo išspręsta šį kaupiamąjį naujinimą SQL serverio.
Kaupiamasis naujinimas, 13 SQL Server 2008 R2 SP2/en-us/help/2967540
Kaupiamasis naujinimas, 17 SQL Server 2008 SP3/en-us/help/2958696
SQL serverio 2014 Kaupiamasis naujinimas 1/en-us/help/2931693
Kaupiamasis naujinimas, 9 SQL Server 2012 SP1/en-us/help/2931078
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 papildomų problemų arba jei būtina bet kokia trikčių diagnostika, gali tekti sukurti atskirą aptarnavimo užklausą. Į įprastos kainos už palaikymą taikomos papildomiems palaikymo klausimams ir problemoms, kurios negalima išspręsti naudojant minėtas karštąsias pataisas. Sąrašą Microsoft klientų aptarnavimo ir palaikymo tarnybos telefonų numerių arba sukurti atskirą aptarnavimo užklausą, apsilankykite šioje "Microsoft" svetainėje:http://support.microsoft.com/contactus/?ws=supportPastaba. 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 numatytuosius parametrus, 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ų, kurias sukelia šis dizainas. 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 = 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 Jei norite gauti daugiau informacijos apie diagnozuoti ir išspręsti sukimosi užraktas tvirtinimas SQL Server, eikite į šį dokumentą:Diagnozuoti ir išspręsti sukimosi užraktas teigia SQL serveryjePastaba. Nors šiame dokumente yra parašyta, kad SQL Server 2008 R2, informaciją SQL Server 2012 vis dar galioja.
Nuorodos
Jei norite gauti daugiau informacijos apie sekimo žymių "SQL Server 2012", rasite apsilankę šioje "TechNet" svetainėje:
Informacija apie sekimo žymių "SQL Server 2012" Jei norite gauti daugiau informacijos apie tai, kaip rasti duomenų bazės locks skaičių duomenų bazės vartotojui, 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