Hodnoty časování pro SQL Server může být nesprávná při použití nástroje nebo technologií, které změna frekvence PROCESORU

Překlady článku Překlady článku
ID článku: 931279 - 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

Microsoft SQL Server 2005 využívá funkce časování microsecond s vysokým rozlišením čítače PROCESORU. Microsecond je millionth jedné sekundy (nebo thousandth jeden z milisekund). Hodnoty časování pro SQL Server však může být nesprávné, pokud použijete technologií, které změna frekvence PROCESORU. Problém může nastat například při použití libovolné z následujících technologií:
  • PROCESOR krokování
  • AMD Cool'n ' quiet technologie
  • Různé schémat napájení
Tento článek obsahuje metody a další informace týkající se tento problém vyřešit.

Příznaky

Použijete-li příkazu SET STATISTICS TIME k zobrazení spuštění serveru, analýze a kompilace časy, můžete získat nesprávné hodnoty. Například můžete si všimnout uplynulý čas čas spuštění serveru SQL Server je mnohem větší než čas PROCESORU. Tento problém může ovlivnit přesnost optimalizaci výkonu. K tomuto problému dochází při použití některé technologie, které jsou uvedeny v části "Shrnutí" na serveru.

Příčina

K tomuto problému dochází, protože frekvence PROCESORU jsou změněny při použití těchto technologií. SQL Server 2005 využívá funkce časování microsecond s vysokým rozlišením čítače PROCESORU. Frekvence PROCESORU jsou změněny na zákazníkům šetřit energii a snížit tepelným výkonem, může být nesprávná vypočítané doby trvání.

Řešení

Informace o aktualizaci Service Pack

Tento problém vyřešíte pomocí nejnovější aktualizace service pack pro SQL Server 2005. Další informace získáte následujícím článku znalostní báze Microsoft:
913089Jak získat nejnovější aktualizaci service pack pro SQL Server 2005
Poznámka: V aktualizaci SQL Server 2005 Service Pack 3 a v pozdějších aktualizacích service Pack časové razítko procesor není používán. Tyto verze serveru SQL Server 2005 pomocí spolehlivější časovač, který má maximální přesnost 1 milisekund.

Prohlášení

Tento problém byl poprvé opraven v aktualizaci SQL Server 2005 Service Pack 3.

Jak potíže obejít

SQL Server 2005 vyžaduje známé a stabilní datové body chcete-li provést optimalizaci výkonu přesné. Pokud v počítači jsou povoleny dynamické úpravy frekvence PROCESORU, můžete je vypnout tak procesorů udržovat stabilní frekvenci rychlost před zahájením sledování a ladění výkonu serveru SQL Server. Chcete-li to provést, použijte následující metody.

Konfigurace schématu napájení v počítači vynutit procesorů zůstat při maximální frekvenci

Chcete-li to provést, postupujte takto:
  1. Klepněte na tlačítko Start, klepněte na příkaz Spustit, zadejte Powercfg.cpl a potom klepněte na tlačítko OK.
  2. V dialogovém okně Možnosti napájení – vlastnosti klepněte na položku Vždy zapnuto v seznamu Schémata nastavení napájení.
  3. Klepněte na tlačítko OK.
Unášenými může dojít. Unášenými je rozdíl mezi hodnotami frekvenci PROCESORU. Další informace naleznete v části "Posun". V takovém případě musíte restartovat po změně schématu napájení synchronizaci frekvencí všechny procesory systému Microsoft Windows.

Pokud je nelze restartovat počítač, povolit spřažení procesorů serveru SQL Server SQL Server pracovních podprocesů zabránit v přesouvání mezi procesory. Po provedení této akce nemáte i v případě, že rozdíl mezi hodnotami frekvence PROCESORU dojde k restartování počítače. Chcete-li povolit serveru SQL Server spřažení procesorů pro všechny procesory na serveru, musíte použít masku různé v závislosti na počtu logické procesory, které jsou na serveru.

Následující tabulka obsahuje příklad scénáře.
Zmenšit tuto tabulkuRozšířit tuto tabulku
Číslo PROCESORUPříkazy umožňující spřažení procesorů
02 ProcesorůEXEC sp_configure 'masku spřažení", 0x00000003
PŘEJÍT
Změňte konfiguraci
PŘEJÍT
04 ProcesorůEXEC sp_configure 'masku spřažení", 0x0000000F
PŘEJÍT
Změňte konfiguraci
PŘEJÍT
08 ProcesorůEXEC sp_configure 'masku spřažení", 0x000000FF
PŘEJÍT
Změňte konfiguraci
PŘEJÍT
16 ProcesorůEXEC sp_configure 'masku spřažení", 0x0000FFFF
PŘEJÍT
Změňte konfiguraci
PŘEJÍT
32 ProcesorůEXEC sp_configure 'masku spřažení", 0xFFFFFFFF
PŘEJÍT
Změňte konfiguraci
PŘEJÍT
Poznámka: Může být nedostatečné k zakázání funkce změnu frekvence PROCESORU na úrovni systému BIOS. Různé nástroje jiného výrobce může změnit frekvence PROCESORU. Některé implementace povolit úpravy frekvence, i v případě, že procesory jsou pod nastavení schématu pro maximální výkon. V tomto případě je nutné zakázat tyto nástroje třetích stran při provádění ladění serveru SQL Server 2005 výkonu.

Použití ovladače a nástroje jiných výrobců k synchronizaci hodin čítače PROCESORU a frekvence PROCESORU

Při vzácných příležitostech systém požadovat aktualizaci od výrobce k opravě problémů frekvence PROCESORU. Je nejvhodnější kontrola systému nejnovější aktualizace systému BIOS, mikrokódu a firmware, pokud máte podezření, že systém může mít problém.

Další informace

Microsoft SQL Server 2000 a starších verzích serveru SQL Server pomocí časování mechanismy systému Windows. Mechanismy časování použít hodnoty přesnosti milisekund. Obvykle tato přesnost je však ms. 10 až 15, přesnost, může být stejně velká jako 55 ms. Dotazy SQL Server často dokončena v rámci jednociferné milisekund nebo přesahuje microsecond času. Tato přesnost vyžaduje s vysokým rozlišením časovače. Proto tyto verze serveru SQL Server zprávu trvání některé dotazy jako 0 ms. Therefore je obtížné sledování výkonu a optimalizaci výkonu serveru SQL Server v předchozích verzích serveru SQL Server.

SQL Server 2005 zlepšuje přesnost poskytují možnosti microsecond časování pomocí čítače PROCESORU s vysokým rozlišením. Použijete-li technologií, které jsou uvedeny v části "Shrnutí", může být nesprávná hodnoty hlášeny časování.

Tento problém může ovlivnit následující objekty a funkce:
  • Trasování událostí:
    • Události upozornění
    • Události v uzlu uložené procedury
    • Události v TSQL uzlu
    • Události v uzlu objekty
    • Události v uzlu transakcí
  • Dynamická správa zobrazení:
    • sys.dm_exec_query_stats
    • sys.dm_exec_requests
    • sys.dm_exec_sessions
    • sys.dm_io_pending_io_requests
    • sys.dm_os_ring_buffers
    • sys.dm_os_sys_info
    • sys.dm_io_virtual_file_stats
    • sys.dm_os_wait_stats
  • Příkaz SET STATISTICS TIME
  • Systémové tabulce sysprocesses
Poté, co nainstalujete SQL Server 2005 Service Pack 2 (SP2), SQL Server protokoluje chybová zpráva v protokolu chyb serveru SQL Server zjistí, vysoké rozlišení časovače jsou synchronizována mezi procesorů. Chybová zpráva označuje, že výkon časování nemusí být přesné a uživatelé by měli použít data o výkonu opatrně.

Text chybové zprávy se podobá jedné z následujících chybových zpráv:
Chybová zpráva 1
Časové razítko čítače procesoru na id plánovače 2 není synchronizován s jinými procesory.
Chybová zpráva 2
PROCESOR časové razítko opakování byl změněn z hodnoty 191469 k 1794177 ticks za milisekund. Použije se nový kmitočet
SQL Server používá instrukce rozdíl mezi (Real Time razítko Counter) získat počet dílků PROCESORU 64-bit. Tuto hodnotu lze rozdělit podle frekvence PROCESORU k převodu hodnoty na hodnoty milisekund. Časování varianty může dojít v případě změny frekvence PROCESORU nebo unášené dochází.

PROCESOR krokování

PROCESOR krokování je definována jako záměrného změnu ve frekvenci PROCESORU. PROCESOR krokování mohou být známé také jako technologie Intel SpeedStep nebo AMD PowerNow! technologie. Pokud procesor krokování dojde, rychlost PROCESORU může zvýšit nebo snížit úsecích co 50 MHz šetřit energií a snižovat tepelným výkonem. Procesory, které spadají do stejného uzlu přístup (NUMA) bez jednotné paměti nezávisle Neupravovat frekvencí.

Následující tabulka ukazuje, jak PROCESORU taktováním změny mohou ovlivnit výpočty časování.
Zmenšit tuto tabulkuRozšířit tuto tabulku
AkceRozdíl mezi značkyTicks za milisekund (frekvence)Čas hodin zdi
Dávkové spuštění12000
Četnost krok dolů2001001ms
Konec listu5003ms
SOUČTY5004ms
SQL Server shromažďuje rozdíl mezi značky na dílky rozdíl mezi začátky a konce. Potom SQL Server vydělí dílky hodnota frekvence.

V tomto příkladu následující výpočty časování dojít, pokud používáte hodnotu frekvenci 200 nebo 100:
  • Frekvenci 200: 500/200 = 2.5 ms
  • Četnost 100: 100 500 = 5 ms
Žádná z výpočtů časování odpovídá době hodin skutečné zdi 4 ms.

Pokud tento výpočet je použit ve RPC: dokončení trasování událostí, trvání a koncový čas sloupce dat jsou hlášeny nesprávně. RPC: dokončení události zachytí počáteční čas hodin zdi a PROCESORU zaškrtněte počet. Získání časování vyšší rozlišení než Windows dodává ve sloupcích dat serveru SQL Server 2005, trvání a koncový čas serveru SQL trasování vypočítány pomocí uplynulé počet dílků PROCESORU. Sloupec čas ukončení vypočítá přičtením trvání sloupec na sloupec čas zahájení. V tomto příkladu sloupec koncový čas vypočítá přičtením nesprávně 2.5 ms nebo 5 ms času zahájení.

Unášené

Unášené je rozdílů v hodnotách hodin PROCESORU. Systémy s více procesory může vést k rozdílné hodnoty hodin PROCESORU do stejného bodu v čase. Ačkoli to není společné procesorů může docházet k oddělení hodin v čase.

Následující příklad ukazuje, jak unášené změny mohou ovlivnit výsledek sloupci trvání dat trasování SQL Server. Příklad předpokládá, že frekvence PROCESORU zůstává stabilní na 200 ticks za milisekund. Následující tabulka uvádí událostí v tomto scénáři.
Zmenšit tuto tabulkuRozšířit tuto tabulku
AkceNaplánované PROCESORU systému WindowsPROCESOR 1 RDTSCRDTSC CPU 2Čas hodin zdi
Dávkové spuštění110011000
Konec listu290019004 ms
SOUČTY4 ms
SQL Server shromažďuje rozdíl mezi značky na body počáteční i koncové body. Poté SQL Server rozdělí ticks rozdíl mezi hodnotou frekvence. V tomto příkladu Windows plánované pracovní podproces SQL Server na dvou různých procesorech. Pracovní podproces SQL Server, služby šarže byl spuštěn nejprve v první PROCESORU (CPU 1).

Však batch execution bylo přerušeno v určitém okamžiku a SQL Server odeslány do nevyřízené fronty batch execution. Po odeslání pracovní podproces SQL Server, znovu služeb této dávkové úlohy do fronty runnable serveru SQL Server Windows odesláno podprocesu běžet druhý PROCESORU (CPU 2). Pracovní podproces pro SQL Server dokončen systémem 2 PROCESORU. Z důvodu unášené PROCESORU hodnota značek konce, byl sebrán z PROCESORU 2 byla 1900 namísto 900. Toto chování se lze vyhnout, pokud povolíte spřažení procesorů serveru SQL Server.

V tomto příkladu se používají následující výpočty časování:
  • Nesprávné ale uvedena hodnota: (1900 100 = 1800) / 200 = 9 ms
  • Hodnotu opravit: (900 100 = 800) / 200 = 4 ms
Hodnoty doby trvání sloupce pro RPC: dokončení události by být uvedeny jako 9 ms namísto 4 ms. Tento výsledek je více než dvojité správnou hodnotu 4 ms.

Unášené varovných zpráv jsou přidány do serveru SQL Server 2005 označíte, že výkon výstupů, výše uvedené nemusí být spolehlivý. V některých situacích nekrytý SQL Server 2005 SP2 může hlásit varovných zpráv o následující:
  • False unášené varovných zpráv
  • Unášené se může stát desítky milisekund, aniž by to způsobilo systému znatelný vliv
Musíte být opatrní při vyhodnocení výstupy související s výkonem a při porovnání být výstupy související s výkonem na zdi časování hodin. Pokud neexistují žádné známky jiné problémy s výkonem, můžete obvykle ignorovat unášené varovných zpráv. Můžete například obvykle ignorovat upozornění unášené v následujících situacích:
  • Jsou spuštěny procesy podle očekávání.
  • Dotazy SQL Server nejsou spuštěny v podivné durational vzorky.
  • Nebudou zobrazeny znaky jiných problémových míst.
Však před ignorovat úletu, zprávy, upozornění, doporučujeme kontaktovat výrobce a ujistěte se, že žádné známé rozdíl mezi problémy existovat.

8033 (–T8033) můžete použít příznak trasování se vraťte do vykazování chování v původní verzi serveru SQL Server 2005 a SQL Server 2005 SP1. Původní verze vydání serveru SQL Server 2005 a SQL Server 2005 SP1 zprávu není unášené varovných zpráv. Používáte-li původní verzi serveru SQL Server 2005 nebo SQL Server 2005 SP1 bez problémů, můžete zprávy obvykle ignorovat.

Proč příkazu WAITFOR DELAY pracuje správně? Co o pravidelných systémové procesy?

Časový limit mechanismy nejsou ovlivněny návrhu s vysokým rozlišením. SQL Server nepoužívá pro činnosti založené na časovač s vysokým rozlišením časovače. Některé činnosti časového limitu jsou založeny na snížené rozlišení časovače, která používá funkci GetTickCount. Tyto činnosti časového limitu patří časový limit uzamčení, příkaz WAITFOR DELAY a zjišťování zablokování.
Další informace získáte v následujícím článcích v databázi Microsoft Knowledge Base:
938448Server se systémem Windows Server 2003 může dojít unášené čítače časového razítka, pokud server použije dvoujádrové procesory AMD Opteron nebo procesorů s více procesory AMD Opteron
895980Programy, které používají funkce QueryPerformanceCounter může neprodukuje v systému Windows Server 2003 a Windows XP
Produkty třetích stran popisované v tomto článku jsou vyráběny společnostmi nezávislými na společnosti Microsoft. Společnost Microsoft neposkytuje žádnou záruku, předpokládanou ani jinou, týkající se výkonu nebo spolehlivosti těchto produktů.

Vlastnosti

ID článku: 931279 - Poslední aktualizace: 16. prosince 2008 - Revize: 7.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
Klíčová slova: 
kbmt kbtshoot kbexpertiseadvanced kbsql2005engine kbprb KB931279 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:931279

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