Funkce údržby statistických (autostats) v serveru SQL Server

Překlady článku Překlady článku
ID článku: 195565 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Nově zavedené údržby statistických funkcí, AutoStat, může způsobit nežádoucí zatížení systému výroby provedením jedné z následujících akcí:
  • Zahájení aktualizace statistických obdobích těžkých výroby.

    - nebo -
  • Inicializace nadměrně vysoký počet UPDATE STATISTICS procesů v daném bodě v čase.
Účelem tohoto článku je podrobně podmínky, za kterých lze očekávat viz autostats generována a UPDATE STATISTICS je spuštěno tabulek v databázi.

Informace o autostats na serveru SQL Server 2000 naleznete v tématu "Statistika použité pomocí optimalizace Query 2000 Microsoft SQL Server" na webu MSDN:
http://msdn2.microsoft.com/en-us/library/aa902688(SQL.80).aspx


Poznámka: Používáte-li Microsoft SQL Server 2005, naleznete následujícím dokumentu white paper společnosti Microsoft informace o použití statistik optimalizátorem dotazů serveru SQL Server 2005:
http://technet.microsoft.com/en-us/library/cc966419.aspx

Další informace

Obecné informace

SQL Server využívá Optimalizátor založené na náklady, které mohou být nesmírně citlivé na statistické informace, která je k dispozici pro tabulky a indexy. Bez správné a aktuální statistické informace mohou být napadeny serveru SQL Server k určení nejlepšího plán vykonání určitého dotazu.

Statistiky udržována na každou tabulku v serveru SQL Server, na podporu Optimalizátor v založené na nákladech rozhodování zahrnují:
  • Počet řádků v tabulce.
  • Počet stránek používaných aplikací v tabulce.
  • Číslo změny provedené od poslední aktualizace statistik klíče v tabulce.
Další informace jsou uloženy pro indexy, včetně (pro každý index):
  • Histogram ekvivalentní výšku na první sloupec.
  • Hustoty na všechna rozlišovací čísla sloupce.
  • Průměrná délka klíče.
Statistiky o indexy jsou automaticky vytvářeny vždy, když je sestaven nový index. Kromě toho je nyní možné vytvořit a udržovat statistiky o i jiné sloupce.

Statistické informace jako aktuální způsobem co nejvíce zachovat, SQL Server zavádí AutoStat, prostřednictvím serveru SQL Server sledování úprav tabulky, je schopen po dosažení určité hranice změna automaticky aktualizace statistiky pro tabulku. SQL Server navíc zavádí auto vytvoření statistických, které způsobí, že server automaticky generovat všechny statistické údaje požadované pro přesné optimalizace konkrétní dotaz.

Určování při generování AutoStat bezprostřední

Jak bylo uvedeno výše, AutoStat automaticky aktualizuje statistiku pro určitou tabulku po dosažení práh"Změna". Ve sloupci sysindexes.rowmodctr udržuje průběžný celkové o všech změnách tabulku, která v průběhu času může nepříznivě ovlivnit provedení procesu procesoru dotazu rozhodnutí. Tento čítač je aktualizováno pokaždé, když nastane některá z následujících událostí:
  • Vložit jeden řádek je provedeno.
  • Odstranění jednoho řádku je provedeno.
  • Je-li k aktualizaci indexovaného sloupce.
Poznámka: zkrátit TABLE neaktualizuje rowmodctr.

Po aktualizaci statistiky tabulky hodnota rowmodctr je nastaven na hodnotu 0 a je aktualizována verze schématu statistické údaje v tabulce.

Dále v situacích, ve kterém je plán provedení uložené procedury je převzata z mezipaměti a tento plán je citlivé na statistiky, statistiky verze schématu bude porovnávat s aktuální verze. Jestliže jsou k dispozici nové statistické údaje, bude se plán pro uložené procedury recompiled.

Základní algoritmus pro automatické aktualizace statistiky je:
  • Pokud mohutnost pro tabulku je méně než šest a tabulka je v databázi tempdb, automatické aktualizace se každých šest změny v tabulce.
  • Pokud mohutnost pro tabulku, větší než 6, ale menší nebo rovna 500, aktualizovat stav každých 500 změny.
  • Pokud mohutnost pro tabulku je větší než 500, aktualizovat statistické údaje při (500 + 20 procent v tabulce) se objevily změny.
  • U proměnné Tabulka změny mohutnost neměl aktivovat automatické aktualizace statistiky.
Poznámka: V tomto smyslu nejpřísnějších serveru SQL spočítá mohutnost jako počet řádků v tabulce.

Poznámka: V vedle mohutnosti, selektivita predikátu také ovlivňuje generování AutoStats. To znamená, že statistické údaje nemusí být aktualizované afer každých 500 změny Pokud mohutnost byly < 500 nebo pro každých 20 % změny kdyby mohutnost > 500. Stupnici až faktor (hodnotu rozsahu od 1 4, 1 a 4 včetně), je generována v závislosti na výběru a součinu tento koeficient a počet změn jako získané z algoritmu bude skutečný počet změny požadované pro generování AutoStats.

Algoritmus výše uvedené mohou být shrnuty ve formě tabulky:
_________________________________________________________________________________
 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.
___________________________________________________________________________
následující jsou dva příklady k prokázání tohoto konceptu:

Příklad 1

Zvažte autoři tabulky v databázi pubs, který obsahuje řádky, 23 a má dva indexy. Jedinečný index seskupený, UPKCL_auidind, je indexován jeden sloupec, au_id, a složený index nonclustered, aunmind, byla vytvořena na au_lname a au_fname sloupce. Protože tato tabulka obsahuje méně než 500 řádků, AutoStat bude zahájeno po 500 změny tabulky dat došlo. Změny se může rovnat jedné z 500 nebo více vloží, odstraní, změní na indexovaného sloupce jako například au_lname nebo kteroukoliv jejich kombinaci.

Lze, proto odhadnout, když UPDATE STATISTICS bude iniciování sledováním sysindexes.rowmodctr hodnotu, která je zvýšen při každé aktualizaci. Při dosažení nebo přesahuje 500, lze očekávat UPDATE STATISTICS má být spuštěn.

Příklad 2

Zvažte druhé tabulky, t2, obsahující povaha 1 000. Pro tabulky s větší než 500 řádků serveru SQL Server bude UPDATE STATISTICS při (500 + 20 procent) byly provedeny změny. Matematické, 1 000 20 procent je 200, tak lze očekávat, viz spuštění po přibližně 700 změny byly provedeny v tabulce AutoStat.

Automatizace stanovení Autostats

K automatizaci stanovení při AutoStat bude spuštěn, můžete provádět dotazování v tabulce sysindexes a identifikovat při změny tabulky se snažíte připojit počáteční bod. Základní algoritmus pro to je následující:
   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
				

Později můžete může naplánovat úlohu provést následující:
  • Spustit UPDATE STATISTICS proti všechny tabulky, pro které byly nuceni zakázat jejich během dne.

    - a -
  • Znovu povolte AutoStat, protože každou tabulku modifikace čítač bude byly nastaveny 0 při UPDATE STATISTICS byl spuštěn.

Řídí, zda jsou UPDATE STATISTICS spuštěno do tabulky

Nejobvyklejší řešením na tuto otázku při AutoStat prokázalo, že se Problematic, je zakázat automatické generování statistiky, a tím správci databáze, volně naplánovat UPDATE STATISTICS méně neobsahuje rušivá době opuštění. Lze provést buď pomocí příkazu UPDATE STATISTICS nebo sp_autostats uložené procedury. Syntaxe příkazu UPDATE STATISTICS je:
   UPDATE STATISTICS <table>...with NORECOMPUTE
				

Syntaxe sp_autostats uložený postup je následující:
sp_autostats <table_name>, <stats_flag>, <index_name>
kde <stats_flag> je zapnutý (on) nebo "vypnutí".

Zakázat automatické výskyt UPDATE STATISTICS nebo CREATE STATISTICS na úrovni databáze můžete použít také sp_dboption:
"Automatické aktualizace statistika" sp_dboption <dbname>, < na | vypnout >

- nebo -

sp_dboption <dbname>, "Automatické vytvoření statistiky", < na | off >

Počet souběžných procesů UPDATE STATISTICS řízení

V současné době disponujete zákaz AutoStat pro konkrétní tabulky, není možné konfigurovat číslo automatické UPDATE STATISTICS příkazy, které jsou právě spuštěny souběžně (DCR 51539 byla podána pro tento). Server, však omezit počet souběžných procesů UPDATE STATISTICS na čtyři v jednom procesoru.

Určení, kdy jsou spuštění Autostats

Příznak trasování 205 můžete použít k hlášení při závislé statistiky uložené procedury je právě recompiled v důsledku AutoStat. Tento příznak trasování zapíše do protokolu chyb následujících zpráv:
spid9 11:10:51.98 1998-10-15 vydané kompilace: Název_procedury: sp_helpindex
LineNo: 75 StmtNo: 29
Je-li příznak trasování 205 povolena, bude se následující zpráva také závorka AutoStat zprávu od 8721, když jsou aktualizovány statistiky. Otevření zprávy třídu může být odlišena hodnotou RowModCnt, která bude větší než 0. Pravou hranatou závorku UPDATE STATISTICS, bude mít po RowModCnt hodnotu 0:
Změnit schéma 1998-10-15 11:38:43.68 spid8: Tbl Dbid: Objid 7:
133575514 RowModCnt: 60500 RowModLimit: 60499
Pro tuto zprávu se "RowModCnt" celkový počet změn do tabulky. "RowModLimit" je prahová hodnota, která při překročení má za následek spustitelný příkaz UPDATE STATISTICS pro tabulku.

Je také možné povolit příznak trasování 8721, které spustíte AutoStat bude výpis informací do protokolu chyb. Následuje příklad typu zprávy, která lze očekávat, viz:
1998-10-14 16:22:13.21 spid13 AUTOSTATS: Tbl AKTUALIZOVÁNA: [autoři]
Řádky: 23 Mods: 501 vazba: 500 doba trvání: 47ms UpdCount: 2
Pro tuto zprávu se "Mods" celkový počet změn do tabulky. "Vázaná" je úpravy prahu, "Doba trvání" je doba příkazu UPDATE STATISTICS potřebné pro dokončení a "UpdCount" je počet aktualizované statistiky.

Profilovacího programu SQL Server můžete také použít k identifikaci při spuštění příkazů UPDATE STATISTICS. Chcete-li to provést, proveďte následující kroky:
  1. V nabídce System Profiler klepněte na nabídku Nástroje a klepněte na příkaz Možnosti.
  2. Na kartě Obecné přejděte na události a vyberte Všechny třídy událostí.
  3. Definovat nové trasování a v části události, vyberte Další, vyberte sub-event Statistika funkce Automatické aktualizace.
Poznámka: Pokud mnoho statistiky se aktualizují podle AutoStat, velký počet zpráv lze zapsat do protokolu chyb. Důkladně vyzkoušejte tyto příznaky trasování před jejich použití v jakémkoli výroby nebo jinak důležitého serveru.

Schéma uzamčení

SQL Server využívá dva typy schématu zámky, které jsou převzaty při aktualizuje statistiku pro tabulku:
   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.
				
tyto uzamčení lze zkontrolovat spuštěním sp_lock nebo výběrem z tabulky syslockinfo.

Vlastnosti

ID článku: 195565 - Poslední aktualizace: 2. listopadu 2007 - Revize: 7.6
Informace v tomto článku jsou určeny pro produkt:
  • 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
  • Microsoft SQL Server 2000 Desktop Engine (Windows)
  • Microsoft SQL Server 2000 Enterprise Edition 64-bit
Klíčová slova: 
kbmt kbinfo KB195565 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:195565

Dejte nám zpětnou vazbu

 

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