Skip to content
App Stretch
  • Home
  • / Articles
  • /
  • SQL Server Lock Escalation explained

SQL Server Lock Escalation explained

7 tammikuun, 2022Articles

Hi Friends,

kirjoitin partition-tason lukitusta käsittelevän blogikirjoituksen, jossa demonstroin, miten lukot eskaloituvat rivistä osioon. Blogikirjoitus on täällä;

muutama lukija kirjoitti minulle takaisin kysyen, milloin SQL Server eskaloi rivilukot pöytä-tai osiotason lukkoihin. Joten tässä viestissä, aion puhua SQL Server Lukko eskalaatio.

no, DB-moottorissa on Lukkopäällikkö-niminen komponentti, joka laajentaa Hienorakeiset lukot (rivit & sivulukot) karkearakeisempiin lukkoihin (väli-tai pöytälukot) 2-olosuhteissa:

1. Kun saavutetaan sulkukynnys, joka BOL: n mukaan on 5000 (yksittäisen vastaväitteen osalta)

2. Kun Lukkopäällikön muistikynnys saavutetaan, vaikka lukkojen määrä-raja 5000 jää saavuttamatta.

anna minun nopeasti osoittaa tämä sinulle:

kirjoitin seuraavan kyselyn:

USE AdventureWorksGO BEGINTRANUPDATETOP (5000) Person.ContactSET EmailPromotion = 0

näet, että asetan 5000 RIVILUKKOA, mutta kun suoritat sys.dm_tran_locks DMV: tä, näet, että pöytälukko on hankittu.

select*fromsys.dm_tran_lock

No, tämä sopii täydellisesti yhteen Bolin kanssa. Leikittelin kuitenkin numeroilla ja vaihdoin arvon 4900: aan. Ennen kuin suoritat muutos kysely joka kerta, älä unohda ROLLBACK TRAN.

ROLLBACKTRAN BEGINTRANUPDATETOP (4900) Person.ContactSET EmailPromotion = 0

juoksin taas KATSASTUSKOPIN ja tälläkin kertaa näin pöytälukon. Luultavasti tällä kertaa odotin 4900 RIVILUKKOA. Mutta voi olla muistin kynnys saavutettiin, joten jatkoin pelaa numerot kunnes huomasin, että kynnys minun järjestelmä on 4707/4708; jos RIVILUKKOJEN määrä on 4708 tai enemmän, DB Moottori laajentaa tämän taulukon Lukko, muuten mitään alle että Numero on ne monet rivi lukot.

joten jos suoritan seuraavan (peruuta jokin aikaisempi tapahtuma):

BEGINTRANUPDATETOP (4707) Person.ContactSET EmailPromotion = 0

tarkistakaa ajoneuvorekisteristä, niin näette monta lukkoa. Voit ajaa seuraavia:

select resource_type,resource_database_id,resource_description,resource_associated_entity_id,request_mode,request_type,request_statusfrom sys.dm_tran_lockswhere resource_database_id = DB_ID();

1_SQL_Server_2008_Lock_Escalation_explained

kuitenkin, kun muutan arvon 4708, eskalaatio tapahtuu. (Aiemman liiketoimen peruuttaminen)

BEGINTRANUPDATETOP (4708) Person.ContactSET EmailPromotion = 0

Run the DMV again:

Write a Reply or Comment Peruuta vastaus

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Viimeisimmät artikkelit

  • Auto Glass ja tuulilasin vaihto Tempe
  • Vuoden 2020 Wash100-voittaja Stu Shea kommentoi PERATONIN COVID-19-avustustyötä
  • That Girl ’ s Blog: muistiinpanojen tekeminen käsin
  • Mitä tehdä, kun ajattelet avioeroa
  • the $3 Trader Joe ’ s Freezer Aisle Find My Kids continuously Beg Me to Make
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어

Arkistot

  • maaliskuu 2022
  • helmikuu 2022
  • tammikuu 2022
  • joulukuu 2021

Copyright App Stretch 2022 | Theme by ThemeinProgress | Proudly powered by WordPress