Štatistické údržby funkcie (autostats) v SQL Server

Preklady článku Preklady článku
ID článku: 195565 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Novo zavedené štatistické údržby funkčnosť, AutoStat, môže generovať nechcené režijné náklady na výrobu systéme vykonaním jedného z nasledujúce akcie:
  • Začatie štatistické aktualizácie obdobiach ťažkých výroby.

    -alebo-
  • Začatie nadmerne vysoký počet aktualizácia štatistiky procesy v danom bode v čase.
Účelom tohto článku je podrobne uvádzať podmienky, za ktorých môžete očakávať, že autostats generované a aktualizácia štatistiky spustený proti tabuliek v databáze.

Informácie o autostats v SQL Server 2000 nájdete "Použité štatistiky o optimalizáciu dotazu v Microsoft SQL Server 2000" na nasledovnej webovej lokalite MSDN:
http://msdn2.Microsoft.com/en-us/library/aa902688 (SQL.80) .aspx


Poznámka: Ak používate Microsoft SQL Server 2005, pozri nasledujúci Microsoft Biela kniha informácie o ako štatistiky využívané Optimalizácia dotazu v SQL Server 2005:
http://Technet.Microsoft.com/en-us/library/cc966419.aspx

DALSIE INFORMACIE

Všeobecné informácie

SQL Server využíva optimalizácia založená na nákladoch, ktoré môžu byť mimoriadne citlivé na štatistických informácií, ktoré poskytli na tabuľkách a indexy. Bez správne a aktuálne štatistických informácií, server SQL Server možno napadnúť určiť najlepšie vykonávania plánu za určitú dotaz.

Štatistiky uchovávané na každú tabuľku v SQL Server na pomoc pre optimalizáciu v založená na nákladoch rozhodovania zahŕňajú:
  • Počet riadkov v tabuľke.
  • Počet strán používa tabuľka.
  • Počet úprav na kľúče v tabuľke od poslednej aktualizácie štatistiky.
Dodatočné informácie je uložená pre indexy, vrátane (pre každý index):
  • Equi-výška histogramu na prvý stĺpec.
  • Hustoty vo všetkých stĺpcov predpony.
  • Priemerná dĺžka kľúča.
Štatistiky o indexy sa vytvoria automaticky vždy, keď je nový index postavený. Okrem toho je teraz možné vytvoriť a udržiavať štatistiky o Ďalšie stĺpce rovnako.

Zachovať štatistických informácií čo najaktuálnejšie spôsobom ako možné, SQL Server zavádza AutoStat, ktoré prostredníctvom servera SQL Server monitorovanie tabuľky modifikácií, je schopný automaticky aktualizuje Štatistika pre tabuľku po dosiahnutí určitého zmena prahu. Okrem toho SQL Server zavádza auto-vytvoriť-štatistiky, ktorá spôsobuje server automaticky generovať všetky štatistické údaje požadované pre presné optimalizácia špecifické dotazu.

Určenie, keď je bezprostredná AutoStat generácie

Ako sa uvádza vyššie, AutoStat bude automaticky aktualizovať štatistiky pre najmä tabuľku po dosiahnutí "zmena prah". V sysindexes.rowmodctr stĺpec tvrdí spustený súčet všetkých modifikácií do tabuľky, časom môže nepriaznivo ovplyvniť dotaz procesor rozhodovací proces. Toto počítadlo je aktualizovaný zakaždým, keď niektorý z nasledujúcich udalostí nastane:
  • Jeden riadok vložiť je vyrobená.
  • Jeden riadok odstrániť je vyrobená.
  • Aktualizáciu indexed column je vyrobená.
POZNÁMKA: TRUNCATE tabuľky neaktualizuje rowmodctr.

Po tabuľke štatistiky boli aktualizované, rowmodctr hodnotu nastaviť na 0 a je aktualizovaná verzia schémy štatistiky v tabuľke.

Ďalšie, v situáciách, v ktorých uloženej procedúry vykonávania plánu prijaté z cache a tento plán je citlivý na štatistiky, štatistiky verzia schémy budú v porovnaní s aktuálnou verziou. Ak existujú nové Štatistiky sú k dispozícii, bude rekompilovaný plán uloženej procedúry.

Základné algoritmus pre auto aktualizácia štatistiky je:
  • Ak tabuľka je v databáze tempdb, mohutnosť tabuľka je menej ako šesť, auto aktualizácia každých šesť modifikácií v tabuľke.
  • Ak mohutnosť tabuľka je väčší ako 6 ale menší alebo sa rovná 500, aktualizovať stav každých 500 modifikácie.
  • Ak základ pre tabuľky je väčšia ako 500, aktualizovať štatistiku keď (500 + 20 percent z tabuľky) nastali zmeny.
  • Pre ukazovatele tabuľky mohutnosť zmeny nesmie spustiť auto aktualizácia štatistiky.
POZNÁMKA: V tejto najužšom zmysle slova, SQL Server počíta mohutnosť ako počet riadkov v tabuľke.

POZNÁMKA: Popri mohutnosť, selektivity predikáte tiež ovplyvňuje AutoStats generácie. To znamená, že štatistiky nemusia byť aktualizované afer každých 500 modifikácie ak mohutnosť boli < 500="" or="" for="" every="" 20%="" of="" changes="" if="" cardinality="" were=""> 500. Stupnici až faktor (hodnota pohybuje od 1 až 4, 1 a 4 včítane) vygenerovaný v závislosti od selektivity a výrobok tento faktor a počet zmien, ktoré sa získali z algoritmus by skutočný počet prispôsobenia potrebné pre AutoStats generácie.

Vo forme tabuľky, možno zhrnúť vyššie algoritmus:
_________________________________________________________________________________
 Table Type | Empty Condition | Threshold When Empty |Threshold When Not Empty 
_________________________________________________________________________________
 Permanent  | < 500 rows      | # of Changes >= 500  | # of Changes >= 500 + (20% of Cardinality)
___________________________________________________________________________
 Temporary  | < 6 rows        | # of Changes >= 6    | # of Changes >= 500 + (20% of Cardinality)
___________________________________________________________________________
Table
Variables   | Change in cardinality does not affect AutoStats generation.
___________________________________________________________________________
Dva príklady pomoci preukázať tohto konceptu sú:

Príklad 1

Zvážiť autori tabuľky v databáze krčmy, ktorý obsahuje 23 riadkov a má dva indexy. Indexovať jedinečné klastrovaný index, UPKCL_auidind, jeden stĺpec, au_id a kompozitné nonclustered index, aunmind, bol vytvoril stĺpce au_lname a au_fname. Pretože táto tabuľka obsahuje menej ako 500 riadkov, AutoStat sa začne po 500 zmeny do tabuľky údaje sa vyskytli. Zmeny môže byť jedným z 500 alebo viac vložky, odstráni, zmeny indexed column ako au_lname alebo ich kombinácia.

Preto môže predpovedať, keď aktualizácia štatistiky bude iniciované monitorovanie sysindexes.rowmodctr hodnotu, ktorá zvýši po Každá aktualizácia. Keď dosiahne alebo presiahne 500, môžete očakávať, že aktualizácia Štatistika sa spustiť.

Príklad 2

Zvážiť v druhej tabuľke, t2, ktorý má mohutnosť 1000. Pre tabuľky s vyššou ako 500 riadkov, server SQL Server bude aktualizovať štatistiku keď (500 + 20 percent), boli vykonané zmeny. Robím matiku, 20 percent z 1000 je 200, takže môžete očakávať, že vidieť AutoStat začať po približne 700 do tabuľky boli vykonané zmeny.

Automatizácia Autostats určenie

Na automatizáciu stanovenie keď sa spustí AutoStat, môžete Anketa sysindexes tabuľka a identifikovať po dosiahnutí tabuľky modifikácie východiskový bod. Toto je základný algoritmus na to:
   if (sysindexes.rows > 500)
      if (sysindexes.rows * 0.20 >= sysindexes.rowmodctr && production
      hours) //500 change leeway
         begin
            disable autostats
            log autostats disable
         end
      else
         begin
            stats ok
         end
   else
      if (sysindexes.rowmodctr >= 425) //75 change leeway
         begin
            disable autostats
            log autostats disable
         end
				

Neskôr mohli naplánovať prácu robiť takto:
  • Spustiť aktualizácia štatistiky proti všetky tabuľky, pre ktoré boli nútení vypnite ich počas dňa.

    a
  • Re-AutoStat, pretože každá tabuľka modifikácia počítadlo sa bude resetovat 0 pri AKTUALIZÁCII štatistiky bol spustený.

Kontrolu, či aktualizácia štatistiky sú spustiť proti tabuľky

Najzrejmejšími riešením na túto otázku, pri AutoStat sa ukázala byť Problematic, je vypnutie auto štatistika generácie, čím opustenie administrátori databázy voľný naplánovať AKTUALIZÁCIU štatistiky počas menej rušivé krát. Môžete to urobiť buď pomocou aktualizácie štatistiky vyhlásenie alebo sp_autostats uložená procedúra. Syntax pre AKTUALIZÁCIU Štatistika vyhlásenie je:
   UPDATE STATISTICS <table>...with NORECOMPUTE
				

Syntax pre sp_autostats uložené postupom je:
sp_autostats <table_name>, <stats_flag>, <index_name> </index_name> </stats_flag> </table_name>
kde <stats_flag>je, buď „"alebo"vypnúť". </stats_flag>

Môžete použiť aj sp_dboption vypnúť automatické výskyt aktualizácia ŠTATISTIKY alebo vytvoriť štatistiky na úrovni databázy:
sp_dboption <dbname>, "auto aktualizácia štatistiky", <on |="" off=""><b00></b00> </on> </dbname>

-alebo-

sp_dboption <dbname>, "auto vytvorte štatistiky", <on |="" off=""> </on> </dbname>

Ovládanie počet Súbežná aktualizácia štatistiky procesov

V súčasnej dobe nedosahuje vypnutie AutoStat pre špecifické tabuľky, nie je možné nastaviť počet automatické aktualizácie štatistiky výkazy ktoré sú prevádzkované súbežne (DCR 51539 bola podaná pre toto). V servera však obmedziť počet Súbežná aktualizácia štatistiky procesy štyri na procesor.

Určenie, keď sú prevádzkované Autostats

Stopové vlajkou 205 môžete použiť na správu skladovaná štatistiky závislé postup je pričom prekompilovali z AutoStat. Táto vlajka stopových zapíše nasledujúce hlásenia do denníka chýb:
1998-10-15 11:10:51.98 spid9 vydané Recompile: názovprocedúry: sp_helpindex
LineNo: 75 StmtNo: 29
Ak je zapnuté stopových vlajkou 205, nasledujúce hlásenie bude tiež približujú AutoStat správy 8721 ak aktualizujú štatistiky. Otvorenie správa skupiny môžu byť rozlíšené RowModCnt hodnotu, ktorá bude väčšia ako 0. Zatvárajúca zátvorka po AKTUALIZÁCII štatistiky, bude mať RowModCnt hodnotu 0:
1998-10-15 11:38:43.68 spid8 schéme zmeniť: Tbl Dbid: 7 Objid:
133575514 RowModCnt: 60500 RowModLimit: 60499
Pre túto správu, "RowModCnt" je celkový počet modifikácie Tabuľka. "RowModLimit" je prah, ak prekročia, vedie k Aktualizácia štatistiky vyhlásenie vykonanie pre tabuľku.

Je tiež možné umožniť stopových príznak 8721, ktorý bude vyčítat, informácie do denníka chýb pri AutoStat bol spustený. Toto je Príklad typu správy, ktoré môžete očakávať, že vidieť:
1998-10-14 16:22:13.21 spid13 AUTOSTATS: aktualizované Tbl: [autori]
Riadky: 23 Mody: 501 viazané: 500 trvanie: 47ms UpdCount: 2
Pre túto správu "Mods" je celkový počet zmien v tabuľke. "Viazaný" je modifikácia prah, "Dĺžka" je množstvo času že aktualizácia štatistiky výkaz povinní vyplniť a "UpdCount" je počítať aktualizované štatistiky.

Môžete použiť aj SQL Server Profiler identifikovať pri AKTUALIZÁCII štatistiky výkazy sú prevádzkované. Chcete urobiť, postupujte podľa nasledujúcich krokov:
  1. Na Profiler ponuky, kliknite na tlačidlo Nástroje, a potom kliknite na tlačidlo Možnosti.
  2. Na Všeobecné kartu, prejdite na Udalosti, a potom vyberte Všetky triedy udalostí.
  3. Definovať nová trace, a podľa Udalosti, vyberte Misc, vyberte Auto aktualizácia štatistiky sub-Event.
Poznámka: Ak mnohé štatistiky sa aktualizujú podľa AutoStat, veľký počet správy možno zapísať do denníka chýb. Dôkladne experimentovať s týmito stopové vlajky pred ich použitím, na akúkoľvek výrobu alebo inak kritické Server.

Schéma zámky

SQL Server zamestnáva dva typy schémy zámky, ktoré sa prijali keď sa aktualizuje štatistiky pre tabuľku:
   Sch-S: Schema Stability Lock
   ----------------------------
   This lock ensures that a schema element, such as a table or index, will
   not be dropped while any session holds a schema stability lock on the
   schema element.

   Sch-M-UPD-STATS: Schema Modification Lock
   -----------------------------------------
   This is a non-blocking lock that is used by the system to ensure that
   only one automatic UPDATE STATISTICS process is run against a table at
   any given point in time. The sp_lock stored procedure will report this
   lock has having a type = TAB, resouce = UPD-STATS and mode = SCH-M.
				
Môžete zobraziť tieto zámky spustením sp_lock alebo výberom z syslockinfo tabuľka.

Vlastnosti

ID článku: 195565 - Posledná kontrola: 19. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Developer Edition
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Personal Edition
  • Microsoft SQL Server 2000 Workgroup Edition
Kľúčové slová: 
kbinfo kbmt KB195565 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:195565

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com