Diagnostika SQL Server zjistit zablokované a zablokované vstupně-výstupních operací

Souhrn

Systém správy databáze (DBMS), jako je například SQL Server, závisí na včasnosti soubor vstupu a výstupu (I/O) operace. Některou z následujících položek mohou způsobit zablokované nebo zablokované vstupně-výstupních operací a nepříznivě ovlivnit SQL Server reakce a výkon:

  • Vadný hardware

  • Nesprávně nakonfigurovaný hardware

  • Nastavení firmwaru

  • Ovladače filtrů

  • Komprese

  • Chyby

  • Ostatní podmínky v cestě I/O

Tyto problémy I/O může způsobit následující chování dochází:

  • Blokování

  • Západka konflikty a časové limity

  • Čas pomalé odezvy

  • Roztažení hranic prostředku

Spuštění v Microsoft SQL Server 2000 Service Pack 4 (SP4), SQL Server obsahuje logiku, která pomáhá zjišťovat pozastavena a zablokované podmínky pro databázi I/O čtení a zápisy a protokol souboru I/O čtení a zápisy. Po vstupně-výstupní operace čekající na 15 sekund nebo déle, SQL Server provede následující kroky:

  1. Zjistí, že byla operace čeká na vyřízení

  2. Zapíše informační zpráva do protokolu chyb serveru SQL Server

    Textové zprávy protokolu je podobná následující:

Informační zpráva vysvětlení

Text zprávy

Popis

<Číslo > výskytů

Počet vstupně-výstupních požadavků, které nebyla dokončena, čtení nebo zápisu operace za méně než 15 sekund.

Informace o souborech

Úplný název souboru, název databáze a databáze (identifikátor DBID) identifikační číslo.

Zpracování

Popisovač souboru operačního systému. Popisovač operačního systému můžete použít s ladicí programy nebo jiných nástrojů ke sledování vstupně-výstupní požadavek paket (IRP) požadavky.

Posun

Posun poslední zablokované vstupně-výstupní operace nebo poslední pozastavena vstupně-výstupní operace. Posun můžete použít s ladicí programy nebo jiných nástrojů ke sledování požadavků IRP.

Poznámka: Při informační zpráva bude zapsána do protokolu chyb serveru SQL Server, může být vstupně-výstupní operace již zablokované nebo pozastavena.

Tato informační zpráva označuje, že aktuální zatížení může docházet k jedné z následujících podmínek:

  • Pracovní zatížení překračuje možnosti vstupně-výstupní cesta.

  • Pracovní zatížení je vyšší než aktuální možnosti systému.

  • Má cesta I/O nefunkční software; možná firmwaru nebo ovladače problém.

  • Má cesta I/O nefunkční hardwarových komponent.

Další informace o SQL Server 2000 I/O vzorky přejděte na následující web společnosti Microsoft:

http://technet.microsoft.com/en-us/library/cc966500.aspxPoznámka: V tomto článku na webu TechNet platí také pro Microsoft SQL Server 2005 a novější verze.

Další informace

Zablokované I/O a zablokované I/O

Zablokované I/O

Zablokované I/O je definována jako vstupně-výstupní požadavek, který nebyl dokončen. Zablokované I/O označuje často zablokované IRP. Zablokované podmínku I/O vyřešíte musí obvykle restartovat počítač nebo podobné akci provést. Zablokované podmínku I/O obvykle označuje jednu z následujících akcí:

  • Vadný hardware

  • Chyby v součást vstupně-výstupní cesta

Zablokované I/O

Zablokované I/O je definována jako vstupně-výstupní požadavek, který dokončení nebo který trvá příliš dlouho na dokončení. Zablokované I/O obvykle dochází z některého z následujících důvodů:

  • Konfigurace hardwaru

  • Nastavení firmwaru

  • Problém ovladače filtru, která vyžaduje pomoc hardware nebo software dodavatele a vyřešit

SQL Server pozastaven I/O a zablokované I/O zaznamenávání a oznamování

Podpora Microsoft SQL Server zpracovává mnoho případů každý rok zahrnující zablokované nebo zablokované vstupně-výstupních problémů. Tyto problémy I/O zobrazit různými způsoby. Vstupně-výstupních problémů jsou některé nejobtížnější potíže diagnostikovat a ladění a vyžadují čas a prostředky pro ladění od společnosti Microsoft a od zákazníka. Funkcí vykazování, které byly přidány do SQL Server 2000 SP4 a novější verze výrazně snížit čas, který je nutný k identifikaci problémem vstupně-výstupní.

Hlášení a zaznamenávání vstupně-výstupních požadavků jsou navrženy na základě souboru za. Zjišťování a vykazování zablokované a zablokované vstupně-výstupních požadavků jsou dvě samostatné akce.

Nahrávání

Existují dva momenty, kdy dochází k záznamu akce v serveru SQL Server. První je, když skutečně dokončí vstupně-výstupní operace. Pokud vstupně-výstupní požadavek trvá více než 15 sekund k dokončení, dojde k záznamu operace. Druhý moment je při spuštění opožděných Zapisovatel. Při spuštění opožděných Zapisovatel opožděných Zapisovatel kontroluje všechna data čekající na vyřízení a čekající protokolu souboru vstupně-výstupních požadavků. Pokud byl překročen práh 15 sekund, dojde k záznamu operace.

Hlášení

Vykazování probíhá v intervalech, které jsou od sebe vzdáleny 5 minut nebo více. Hlášení dochází, když je vytvořen další vstupně-výstupní požadavek na soubor. Pokud došlo k záznamu akce a 5 minut nebo více uplynuly od poslední sestava došlo k chybě, informační zpráva, která je uvedena v části "Souhrn" je zapsán do protokolu chyb serveru SQL Server.

Práh 15sekundové není nastavitelný. Zablokované nebo zablokované I/O zjišťování je však může zakázat pomocí příznaku trasování 830, ale nedoporučujeme to provést.

Chcete-li zakázat zjišťování při spuštění serveru SQL Server, použijte -T830 spouštěcí parametr, chcete-li zakázat zjišťování při každém spuštění serveru SQL. Chcete-li zakázat zjišťování pro instanci serveru SQL Server, který je aktuálně spuštěn, použijte následující příkaz:

DBCC traceoff (830, -1)Toto nastavení je účinné pouze po dobu trvání procesu serveru SQL Server.

Poznámka: Vstupně-výstupní požadavek, který bude pozastavena a zablokované je uveden pouze jednou. Například pokud zpráva hlásí, že jsou pozastavena 10 vstupně-výstupních požadavků, těchto 10 zpráv nedojde znovu. Pokud další zprávy hlásí, že jsou pozastavena 15 vstupně-výstupních požadavků, to znamená, že se stanou pozastavena 15 nové požadavky v/v.

Sledování paketu vstupně-výstupní požadavku (IRP)

SQL Server používá standardní volání rozhraní API systému Windows společnosti Microsoft Chcete-li číst a zapisovat data. Například SQL Server používá následující funkce:

  • WriteFile

  • ReadFile

  • WriteFileScatter

  • ReadFileGather

Čtení nebo zápisu žádost je zpracována systémem Windows jako paketu IRP (IRP). Ke zjištění stavu kontrolní, použijte obě následující akce:

  • Pomoc společnosti Microsoft Platform Support

  • Ladicí program jádra

Další informace o mezinárodní kontrolní Komise a kontrolní sledování, přejděte na následující web společnosti Microsoft a hledání na klíčové slovo "Kontrolní":

http://support.microsoft.comPoznámka: Ladění jádra může být invazivní proces, protože ladění jádra mohou vyžadovat zastavení systému k dokončení akce ladění. Doporučujeme vyhledat dostupné aktualizace pro následující položky:

  • Systém BIOS

  • Firmware

  • Všechny ostatní součásti cesty I/O

Před provedením další akce ladění, obraťte se na dodavatele hardwaru. Relace ladění bude pravděpodobně zahrnoval ovladač jiného výrobce, firmware nebo součást ovladače filtru.

Výkon systému a dotaz plán akcí

Celkový výkon systému může hrát klíčovou roli při zpracování vstupně-výstupní. Obecné zdravotní systém měl brát v úvahu, chcete-li zjistit sestav zablokované nebo zablokované vstupně-výstupních operací. Nadměrné zatížení může způsobit pomalé celého systému. To zahrnuje zpracování vstupu a výstupu. Chování systému v čase, k problému dojde, může být klíčovým faktorem při určování příčina problému. Například pokud se stane vysoké využití procesoru a využití CPU zůstává vysoká, jakmile k problému dojde, toto chování může znamenat, že tolik procesoru, aby jiné procesy jsou nepříznivého používá proces v systému.

Čítače výkonu

Chcete-li sledovat výkon vstupu a výstupu, zkontrolujte následující čítače výkonu pro konkrétní informace o cestě I/O:

  • Doba střední disku/přenos

  • Průměrná délka fronty disku

  • Aktuální délka fronty disku

Střední doba disku/přenos čas v počítači, který je spuštěn SQL Server je například obvykle méně než 15 milisekund. Pokud hodnota střední doba disku/přenos roste, znamená to, že subsystému I/O není optimálně ponechat stále s požadavek I/O.

Buďte opatrní při použití čítačů výkonu, protože SQL Server plně využívá schopností asynchronního I/O, které silně push délka fronty disku. Proto disku fronty delšími samotné neindikuje potíže.

V programu Sledování systému Windows můžete zkontrolovat čítače "fyzický Disk: bajtů disku/s" pro každé ovlivněné disk a porovnat rychlost činnosti proti "proces: vstupně-výstupní datové bajty/s" čítače a "proces: IO ostatní bajty/s" pro každý proces k určení, zda konkrétní sadu procesů generuje nadměrné vstupně-výstupní požadavky. Existují různé jiné I/O související objekt čítače, které jsou k dispozici v procesu, který odhaluje podrobnější informace. Pokud zjistíte, že je zodpovědný za nadměrné zatížení vstupně-výstupních operací na serveru instance serveru SQL Server, projděte si další část na "Indexy a rovnoběžnosti". Podrobné informace o zjištění a řešení problémových míst v/v operací zkontrolujte sekci "Problémových míst v/v" v MSDN whitepaper Poradce při potížích s problémy s výkonem v SQL Server 2008 nebo Řešení potíží s výkonem v SQL Server 2005.

Indexy a rovnoběžnosti

Roztržení I/O dochází často, protože chybí index. Toto chování vážně vstupně-výstupní cestu tlačit. Průchod, který používá Index zapnutí průvodce (ITW) může pomoci vyřešit vstupně-výstupní tlak v systému. Pokud dotaz výhody z indexu místo prohledávání tabulky nebo možná používá řazení nebo hash, systém, získat následující výhody:

  • Snížení se provede v fyzický I/O, který je vyžadován k provedení akce, která vytvoří přímo výkony pro dotaz.

  • Menší počet stránek v mezipaměti dat musí být obrácen. Proto zůstávají aktivní dotazy týkající se stránky, které jsou v mezipaměti data.

  • Seřadí a hodnoty hash se používají, protože index je pravděpodobně chybí nebo jsou zastaralé statistické údaje. Přidáním jednoho nebo více indexů může snížit používání databáze tempdb a soupeření.

  • Snížení se provede v zdroje a paralelní operace. Protože SQL Server nezaručuje spuštění dotazu paralelní a protože je považován za zatížení systému, je vhodné optimalizovat všechny dotazy sériové provedení. Optimalizace dotazu, otevřete Query Analyzer a nastavte hodnotu sp_configure Maximální stupeň paralelnost možnost 1. Pokud jsou všechny dotazy naladěn neprodleně sériová operace spuštění, paralelní spuštění je stejně lepší výsledek. Však mnoho krát paralelního spuštění je vybrána, protože množství dat je velký. Chybějící indexu může mít velký řazení dochází. Více pracovníků, které provádíte operaci řazení vytvoří rychlejší odpověď. Tato akce však může výrazně zvýšit tlak v systému. Velkých požadavků na čtení z mnoha pracovníků může způsobit shlukové I/O a zvýšené využití procesoru z více pracovníků. Vyladěním mnohokrát dotaz rychleji a využívají méně prostředků, pokud je přidán index nebo jiné ladění akce.

Praktické příklady z podpory Microsoft SQL Server

Následující příklady byly zpracovány pomocí Microsoft SQL Server podporu a vedoucím platformy. Tyto příklady jsou určeny poskytnout rámec a sadu Nápověda vaše očekávání asi pozastavena a zablokované I/O situací a o způsobu, jakým systém může mít vliv a může reagovat. Není specifický hardware nebo sadu ovladačů, které představují jakékoli zvláštní rizika nebo zvýšené riziko nad druhým. Všechny systémy jsou v tomto ohledu stejné.

Příklad 1: Protokolu zápisu zablokované 45 sekund

Pokus o zápis souboru protokolu serveru SQL Server pravidelně se stane zablokované přibližně 45 sekund. Zápis protokolu nebyl dokončen v časovém limitu. Toto chování vytváří blokování podmínku, která způsobí, že časové limity klienta 30 sekund.

Podána žádost o potvrzení na SQL Server a jako zápis protokolu do doby, než se stala zablokované svěření. Toto chování způsobí, že dotaz pokračovat, zámky a blokovat příchozí požadavky z jiných klientů. Ostatní klienti potom spusťte časového limitu. Problém této sloučeniny, protože aplikace nevrací otevřené transakce dojde k vypršení časového limitu dotazu. Tím se vytvoří stovky otevřené transakce, které jsou zámky. Proto dojde k závažné blokování situace.

Další informace o transakci blokování a zpracování naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

224453 vysvětlení a řešení potíží blokování SQL ServerAplikace služby Web pomocí sdružování připojení. Jako další připojení budou blokována, webu vytvoří další připojení. Tato připojení budou blokována a cyklus pokračuje.

Po přibližně 45 sekund dokončí zápis protokolu. Nicméně v současné době stovky připojení jsou zálohovány. Blokující problémy způsobit několik minut doby zotavení pro SQL Server a aplikace. Zablokované podmínku I/O spojeno s problémy aplikací, má velmi negativní vliv na systém.

Řešení

Tento problém byl sledován na zablokované vstupně-výstupní požadavek ovladače adaptéru HBA (Host Bus). V počítači bylo více karet adaptéru HBA s podporou převzetí služeb při selhání. Pokud HBA jeden byl za nebo nebyl komunikaci sítě oblasti úložiště (SAN), 45 sekund nakonfigurovanou hodnotu časového limitu "opakování před převzetí služeb při selhání". Při překročení časového limitu, vstupně-výstupní požadavek byl směrován druhý adaptér HBA. Druhý adaptér HBA zpracovat žádost a rychle dokončena. Zabránit tyto podmínky kout, doporučuje výrobce hardwaru "opakování před převzetí služeb při selhání" nastavení 5 sekund.

Příklad 2: Filtr ovladač intervenční

Mnohé programy antivirový software a záložní produkty používají ovladače filtru vstupně-výstupní operace. Tyto ovladače filtru vstupně-výstupní operace se stanou součástí zásobníku vstupně-výstupní požadavek, a mají přístup k požadavku IRP. Microsoft Product Support Services byla vidět různé problémy z chyb, které vytvářejí zablokované vstupně-výstupní podmínky nebo pozastavena vstupně-výstupní podmínky v implementaci ovladače filtru.

Jedna taková podmínka byl ovladač filtru pro zálohování zpracování povoleno zálohování souborů, které byly otevřeny při zálohování došlo k chybě. Správce systému bylo součástí výběr zálohování souboru v adresáři souboru dat serveru SQL Server. Při zálohování došlo k chybě, se pokusil získat správnou bitovou kopii souboru v době spuštění zálohování zálohování. Tím se zpožděním vstupně-výstupních požadavků. Vstupně-výstupních požadavků by bylo umožněno dokončit pouze jeden po druhém, jako byly zpracované software.

Spustil zálohování a výkonu serveru SQL zahozeny výrazně nuceno postupně dokončení vstupně-výstupních serveru SQL Server. Na složené problému, byla logika "postupně" tak, aby vstupně-výstupní operace nemohla být provedena asynchronně. Proto když SQL Server očekává účtovat vstupně-výstupní požadavek a pokračovat, pracovník byl zachycen v čtení nebo zápisu volání při až do dokončení vstupně-výstupní požadavek. Zpracování úlohy, například serveru SQL Server čtení napřed byly účinně dezaktivovány akcemi ovladače filtru. Jiné chyby v ovladači filtru vlevo navíc akce "po jednom" v procesu, i v případě, že záloha byla dokončena. Jediný způsob, jak obnovit výkon serveru SQL Server byl zavřete a znovu otevřete databázi nebo restartujte službu SQL Server tak, aby byla uvolněna a reacquired bez interakce ovladač filtru popisovače souboru.

Řešení

Chcete-li vyřešit tento problém, byly odebrány datové soubory serveru SQL Server z procesu zálohování souboru. Výroba software také opravit problém, který soubor v režimu "postupně" vlevo.

Příklad 3: Skryté chyby

Mnoho vyšší koncové systémy mají vícekanálového I/O cesty ke zpracování zátěže nebo obdobné činnosti. Odborné pomoci společnosti Microsoft zjistila potíže s zátěže software, pokud dojde k selhání vstupně-výstupní požadavek, ale software nezpracovává chybový stav správně. Software se může pokusit nekonečné opakování. Se stane zablokované vstupně-výstupní operace a serveru SQL Server nemůže dokončit zadanou akci. Podobně jako protokol zapsat podmínku, která byla popsána výše, mnoho systému špatné chování může dojít po takové podmínky klíny systému.

Řešení

Chcete-li tento problém vyřešit, restartování serveru SQL Server je často vyžadován. Však v některých případech je nutné restartovat operační systém, chcete-li obnovit zpracování. Doporučujeme také získat aktualizaci softwaru od dodavatele I/O.

Příklad 4: Služba Vzdálené úložiště, zrcadlení a raid jednotky

Mnoho systémů pomocí zrcadlení nebo podobné kroky k zabránění ztrátě dat. Některé systémy, které používají zrcadlení je založena na softwaru a některé jsou založené na hardwaru. Situace, která je obvykle objeveny Microsoft Support pro tyto systémy je zvýšené čekací doby.

Zvýšení celkového času I/O dochází, když vstupu a výstupu musí dokončit zrcátko vstupu a výstupu je považována za dokončenou. Instalace vzdáleného zrcadlení může se podílet sítě opakování. Pokud dojde k selhání disku a obnovuje systém raid, být přerušen vzorek I/O.

Řešení

Nastavení konfigurace přísné jsou požadovány ke snížení čekací doby zrcátek nebo raid rebuild operací.


Další informace naleznete požadavky na serveru SQL Server podporují vzdálené zrcadlení uživatelských databází.

Příklad 5: komprese

Společnost Microsoft nepodporuje Microsoft SQL Server 7.0 nebo 2000 Microsoft SQL Server datové soubory a soubory protokolu na komprimované jednotky. NTFS komprese není bezpečné pro SQL Server, protože komprese NTFS konce protokolu zápisu napřed protokolování (WAL). Kompresi NTFS také vyžaduje zvýšenou zpracování pro každý vstupně-výstupní operace. Komprese vytvoří "postupně" jako chování, které způsobí vážným problémům s výkonem dochází.

Řešení

Chcete-li vyřešit tento problém, dekomprimujte data a soubory protokolu.

Další informace naleznete Popis podpory pro databáze SQL Server na komprimované svazky.

Další datové body

PAGEIOLATCH_ * a writelog čeká v sys.dm_os_wait_stats zobrazení dynamické správy (DMV) jsou klíčové indikátory prozkoumat vstupně-výstupní výkon cestu. Pokud uvidíte významné PAGEIOLATCH čeká, to znamená, že SQL Server čeká na podsystému I/O. Je obvyklé výši PAGEIOLATCH čeká a očekávané chování. Nicméně pokud průměr PAGEIOLATCH čekání, jsou stále větší než 10 milisekund (ms), měli byste zkontrolovat proč podsystému I/O je pod tlakem. Další informace naleznete v následujících dokumentech:



Odkazy

SQL Server vyžaduje, aby systémy podporují "zaručené doručení na stabilní média", jak je popsáno v části Požadavky na SQL Server vstupně -výstupní spolehlivost programu. Další informace o požadavcích na vstupní a výstupní databázový stroj SQL Server naleznete v následujícím článku znalostní báze Microsoft Knowledge Base:

967576 Microsoft SQL Server databáze stroj vstupní a výstupní požadavky

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Děkujeme za váš názor!

Děkujeme vám za váš názor! Pravděpodobně bude užitečné, když vás spojíme s některým z našich agentů podpory Office.

×