sql >> Databáze >  >> RDS >> Sqlserver

Blokovat, blokovat, blokovat na dveřích DBA s blokováním serveru SQL

I když všichni víme, že zamykání je nezbytné pro integritu dat, nic to nemění na skutečnosti, že může být vážným trnem v oku!

Když v naší databázi vidíme blokování, často předpokládáme, že je něco špatně – není tomu tak vždy. Podle mých zkušeností je většina blokování serveru SQL Server legitimní, ale je třeba jej prozkoumat a pochopit. Zablokování je na druhé straně zřídkakdy legitimní! Zablokování jsou ve světě SQL Server považována za kritická, protože procesy jsou automaticky zabity, protože SQL Server řeší zablokování bez nutnosti ručního zásahu. Opět platí, že i když jsou „vyřešené“, rozhodně je třeba je prozkoumat a pochopit.

Existuje několik návrhových strategií, které mohou pomoci snížit výskyt blokování a zablokování serveru SQL Server ve vaší databázi:

  • U vysoce používaných tabulek používejte seskupené indexy
  • Vyhněte se příkazům SQL s vysokým počtem řádků
  • Rozdělte dlouhé transakce na mnoho kratších transakcí
  • Ujistěte se, že příkazy UPDATE a DELETE používají indexy
  • Neplánujte, aby se úlohy hromadné aktualizace překrývaly
  • Udržujte své statistiky aktuální

A jsem si jistý, že je jich mnohem víc, ale realita je taková, že můžete dodržovat všechny osvědčené postupy, na které si vzpomenete, a přesto budete mít blokování a uváznutí. Ve většině případů je totiž zablokování způsobeno špatně navrženým kódem aplikace. (Králičí díra designu aplikací:kódování, izolace transakcí a vzory přístupu. Ale nyní se zaměřme na prozkoumání a pochopení blokování a uváznutí).

Blokování serveru SQL a uváznutí

Prvním problémem s blokováním a uváznutím je identifikovat, kdy a kde k nim dochází, protože obvykle nejsou hlášeny, hlášeny až po faktu nebo automaticky řešeny. Abyste skutečně pochopili, co se děje ve vaší databázi ohledně blokování a uváznutí, musíte vidět jejich výskyty v průběhu času. Abyste problém napravili a zastavili budoucí výskyty, musíte se dostat ke kořenové příčině blokování – vyzbrojit se informacemi, které musíte předat vývojářům aplikací, a tak ukončit hru na obviňování mezi vývojáři. a DBA.

To je důvod, proč se mi opravdu líbí Analyzátor pracovní zátěže v Spotlight Cloud. Mohu vybrat časové období – hodinu, den nebo vlastní rozsah – a zobrazit Zámek činnost související s tímto rozsahem. Hned lépe rozumím tomu, co se děje! Mohu vidět vzory zamykání, porovnat míru zamykání v průběhu času s předchozím časovým obdobím, zobrazit míru zablokování za konkrétní časový rámec a zobrazit klíčové ukazatele výkonu zamykání, jako je Lock Exclusive, Shared a Update.

Takže teď se chci dostat k hlavní příčině – tam je Strom dimenzí Dokážu se rozbalit a filtrovat informace pro konkrétní časový rámec, což mi umožňuje zobrazit stejné informace v hlubších dimenzích, jako jsou Databáze , Uživatelé , Programy a Příkazy SQL , zatímco za pochodu odfiltrovávám „bílý šum“ – jasně identifikuji zdroj (zdroje) mého problému.

Zde se dívám na které Databáze dochází k největšímu zamykání během časového rozsahu:

Nyní se podívám na Uživatelé ve vybrané databázi:

Poté se rozhodnu zobrazit seznam příkazů SQL způsobující uzamčení, které provedl vybraný Uživatel ve vybrané databázi pro zadaný Časový rozsah .

Nyní vidím všechna uzamykání související informace pro vybraný příkaz SQL .

Pokud se tedy chcete dostat na dno vašich problémů se zamykáním, blokováním a uváznutím, doporučuji vám vyzkoušet Spotlight Cloud. Spotlight Cloud usnadňuje než kdy dříve prozkoumat a porozumět problémům se zamykáním v databázi a nakonec zajistit, že kód vaší aplikace nebude uvíznout.


  1. PostgreSQL dotaz s 'ANY' nefunguje

  2. Rozdíl ve zpracování mezer mezi Oracle a SQL Server

  3. Oracle agregace řetězců

  4. Připojení k PostgreSQL v IRI Workbench