Přihlásit se pomocí účtu Microsoft
Přihlaste se nebo si vytvořte účet.
Dobrý den,
Vyberte jiný účet.
Máte více účtů.
Zvolte účet, pomocí kterého se chcete přihlásit.

Shrnutí

Microsoft SQL Server 2005 používá procesor s vysokým rozlišením k poskytování možností mikrosekundy. Mikrosekunda je jedna millionth sekundy (nebo jeden thousandth milisekundu). Pokud používáte technologie, které mění frekvence procesoru, může být hodnota časování SQL serveru nesprávná. K tomuto problému může dojít, pokud použijete některou z následujících technologií:

  • Krokování procesoru

  • Technologie AMD Cool'n'Quiet

  • Různá schémata napájení

Tento článek obsahuje metody a další informace, které vám pomůžou tento problém vyřešit.

Příznaky

Pokud použijete příkaz nastavit čas statistiky k zobrazení provádění, analýzy a časů kompilace serveru, můžete získat nesprávné hodnoty. Můžete si například všimnout, že doba provádění SQL serveru je mnohem větší než doba využití procesoru. Tento problém se týká přesnosti ladění výkonu. Tento problém nastane, když použijete některou z technologií uvedených v části Souhrn na serveru.

Příčina

K tomuto problému dochází, protože se při použití těchto technologií mění frekvence procesoru. SQL Server 2005 používá procesor s vysokým rozlišením k poskytování možností mikrosekundy. Pokud se frekvence procesoru změní na šetřit energii a snížit objem tepla, může být vypočítaná doba trvání nesprávná.

Ř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 najdete v následujícím článku znalostní báze Microsoft Knowledge Base:

913089 Jak získat nejnovější aktualizaci Service Pack pro SQL Server 2005Poznámka: V systému SQL Server 2005 Service Pack 3 a novějších aktualizacích Service Pack se časové razítko procesoru nepoužívá. Tyto verze SQL serveru 2005 používají spolehlivější časovač s maximální přesností 1 milisekunda.

Stav

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

Alternativní řešení

K provedení přesného ladění výkonu vyžaduje SQL Server 2005 známé a stabilnější datové body. Pokud jsou v počítači povolené úpravy dynamické frekvence procesoru, můžete je zakázat, aby procesory udržovaly ustálenou frekvenci, než začnete monitorovat a ladit výkon serveru SQL Server. Použijte následující metody.

Konfigurace schématu napájení v počítači pro vynucení maximální frekvence CPU

Postupujte takto:

  1. Klikněte na tlačítko Start, na příkaz Spustit, zadejte příkaz powercfg. cpla klikněte na tlačítko OK.

  2. V dialogovém okně Vlastnosti možností napájení klikněte v seznamu schémata napájení na vždycky zapnuto .

  3. Klikněte na tlačítko OK.

Může dojít ke posunu. Posun je rozdíl mezi hodnotami kmitočtu CPU. Další informace najdete v části posun. V tomto případě musíte po změně schématu napájení restartovat Microsoft Windows, aby se znovu synchronizoval frekvence všech procesorů. Pokud se vám nedaří restartovat počítač, povolte spřažení systému SQL Server, aby se zabránilo přesouvání pracovních vláken SQL serveru mezi procesory. Když to provedete, nemusíte počítač restartovat ani v případě, že dojde k rozdílu mezi hodnotami kmitočtu procesoru. Pokud chcete povolit spřažení procesorů SQL serveru pro všechny procesory na serveru, musíte v závislosti na počtu logických procesorů na serveru použít jinou masku. V následující tabulce jsou uvedené příklady scénářů.

Číslo procesoru

Příkazy pro povolení spřažení procesorů

02 procesory

EXEC sp_configure ' maska spřažení ', 0x00000003GOreconfigureGO

04 procesory

EXEC sp_configure ' maska spřažení ', 0x0000000FGOreconfigureGO

08 procesory

EXEC sp_configure ' maska spřažení ', 0x000000FFGOreconfigureGO

16 procesorů

EXEC sp_configure ' maska spřažení ', 0x0000FFFFGOreconfigureGO

Procesory 32

EXEC sp_configure ' maska spřažení ', 0xFFFFFFFFGOreconfigureGO

Poznámka Je možné, že nebudete muset na úrovni systému BIOS zakázat funkce variant procesoru. Frekvence procesoru mohou změnit různé nástroje třetích stran. Některé implementace umožňují úpravy četnosti, i když jsou CPU pod maximálním nastavením schématu napájení. V tomto případě musíte zakázat tyto nástroje od jiných výrobců, když provádíte optimalizaci výkonu v SQL serveru 2005.

Synchronizace čítačů CPU a čítače kapacity procesoru pomocí nástrojů a ovladačů třetích stran

V případě vzácných příležitostí může systém vyžadovat od výrobce aktualizaci, aby opravili problémy procesoru. Pokud máte podezření, že se může problém vyřešit, vyzkoušejte systém na nejnovější aktualizace systému BIOS, microcode a firmwaru.

Další informace

Microsoft SQL Server 2000 a starší verze SQL serveru používají mechanismy časování systému Windows. Mechanismy časování používají hodnoty v milisekundách přesnosti. Obvykle je tato přesnost 10 až 15 MS. Přesnost však bude možná až 55 MS. Dotazy SQL serveru se často doplní jednou číslicí milisekund nebo mikrosekunda. Tato přesnost vyžaduje časovač s vysokým rozlišením. Proto tyto verze SQL serveru hlásí dobu trvání některých dotazů za 0 MS. Proto je obtížné monitorovat výkon a optimalizovat výkon serveru SQL Server v dřívějších verzích SQL serveru. SQL Server 2005 zvyšuje přesnost pomocí čítače procesoru s vysokým rozlišením a poskytuje funkce mikrosekundování. Pokud používáte technologie, které jsou uvedené v části Souhrn, může to být nesprávné. Tento problém se týká následujících objektů a funkcí:

  • Trasovat události:

    • Událost Upozornění

    • Události v uzlu uložené procedury

    • Události v uzlu TSQL

    • Události v uzlu Objects

    • Události v uzlu transakce

  • Dynamická zobrazení správy:

    • 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 TIME STATISTICs

  • Systémová tabulka sysprocesses

Po instalaci aktualizace SQL Server 2005 Service Pack 2 (SP2) protokoluje SQL Server chybovou zprávu do protokolu chyb, když SQL Server zjistí, že časovače s vysokým rozlišením nejsou synchronizované mezi procesory. Chybová zpráva znamená, že časování výkonu nemusí být přesné a uživatelé by měli používat data o výkonu opatrně. Text chybové zprávy se podobá některé z následujících chybových zpráv:

Chybová zpráva 1

Časové razítko procesoru s ID 2 se nesynchronizuje s jinými procesory.

Chybová zpráva 2

Frekvence časového razítka procesoru se změnila z 191469 na 1794177. Bude použita nová frekvence.

SQL Server používá instrukci čítače reálného časového razítka (RDTSC) k získání počtu impulsů procesoru 64. Tuto hodnotu můžete vydělit pomocí kmitočtu procesoru, která převede hodnotu na hodnoty milisekund. Varianty časování se mohou vyskytnout, když dojde ke změně kmitočtu procesoru nebo jeho posunu.

Krokování procesoru

Využití procesoru je definováno jako úmyslné změny frekvence procesoru. Taktování procesoru je také známé jako technologie Intel SpeedStep nebo AMD PowerNow! technologie. Když nastane krokování procesoru, mohou se rychlost procesoru zvětšovat nebo zmenšovat v přírůstcích tak, jak je 50 MHz, aby se šetřila energie a snížila se výkon tepla. Procesory, které jsou ve stejném uzlu NUMA (non-uniform Memory Access), nezávisle upraví frekvence. V následující tabulce vidíte, jak můžou změny procesoru ovlivnit výpočty časování.

Žalob

RDTSC

Dílky za milisekundu (četnost)

Čas na zdi – hodiny

Spustit dávku

0,1

200

0,30

Rozkrok dolů

200

100

1ms

Ukončit dávku

500

3ms

Total

500

4ms

SQL Server zachytí RDTSC zatržení na začátku i na konci RDTSC. SQL Server potom vydělí značky pomocí hodnoty frekvence. V tomto příkladu dojde při použití kmitočtové hodnoty 200 nebo 100 k následujícím výpočtům časování:

  • Frekvence 200: 500/200 = 2,5 MS

  • Frekvence 100: 500/100 = 5 MS

Žádné ze výpočtů časování neodpovídá skutečnému času na zdi 4 MS. Pokud se tento výpočet používá v RPC: prohlášená událost Trace, budou sloupce dat Doba trvání a čas ukončení hlášeny nesprávně. Událost RPC: Completed zachytí čas počátečního času na zdi a počet impulsů procesoru. Chcete-li získat načasování vyššího rozlišení než dodání Windows v systému SQL Server 2005, budou hodnoty sloupců Doba trvání a čas ukončení v trasování SQL serveru vypočítány pomocí počtu impulsů procesoru. Sloupec čas ukončení se vypočítá přidáním sloupce Doba trvání do sloupce čas zahájení . V tomto příkladu se sloupec čas ukončení vypočítá tak, že nepřidá do času zahájení nesprávné přidání 2,5 ms nebo 5 ms.

Nuly

Posun je rozdíl v hodnotách taktu procesoru. Systémy, které mají více procesorů, mohou pro stejný bod vytvářet různé hodnoty časů procesoru. Ačkoli to není běžné, mohou procesory v průběhu času vyskytnout hodiny. Následující příklad ukazuje, jak může změna posunu ovlivnit výsledek sloupce dat doby trvání v trasování SQL serveru. Příklad předpokládá, že frekvence CPU zůstává ustálená na 200. Následující tabulka ilustruje události v tomto scénáři.

Žalob

Naplánované využití procesoru

PROCESOR 1 RDTSC

PROCESOR 2 RDTSC

Čas na zdi – hodiny

Spustit dávku

0,1

100

1100

0,30

Ukončit dávku

dvojrozměrné

900

1900

4 MS

Total

4 MS

SQL Server zachytí RDTSC a koncové body na začátku. SQL Server potom vydělí RDTSC zatržení hodnotou frekvence. V tomto příkladu systém Windows naplánoval pracovní vlákno SQL serveru na dvou různých procesorech. Pracovní podproces systému SQL Server, který je první, spustil první procesor (CPU 1). Provádění dávky bylo v nějaké chvíli přerušeno a SQL Server poslal spuštění dávky do čekající fronty. Když SQL Server poslal pracovní podproces SQL serveru, který tuto dávku zastavě do fronty runnable, odešle vlákno, aby běželo na druhém procesoru (CPU 2). Pracovní vlákno systému SQL Server dokončeno na procesoru 2. Vzhledem k posunu procesoru byla hodnota koncového ticku zachycená z procesoru 2 1900 místo 900. Tomuto chování se můžete vyhnout, pokud povolíte spřažení procesorů SQL serveru. V tomto příkladu jsou použity následující výpočty časování:

  • Nesprávná, ale nahlášená hodnota: (1900 – 100 = 1800)/200 = 9 MS

  • Správná hodnota: (900 – 100 = 800)/200 = 4 MS

Hodnota sloupce Doba trvání pro událost RPC: Completed by byla hlášena jako 9 MS místo 4 MS. Výsledek je větší než dvojnásobek správné hodnoty 4 MS. Zprávy s upozorněním na posun se přidávají na SQL Server 2005 a označí, že výstupy výkonu, které jsou zmíněné dříve, nemusí být spolehlivé. V některých neuvedených situacích můžou SQL Server 2005 SP2 oznamovat upozornění na tyto zprávy:

  • Nepravdivé varovné zprávy s upozorněním

  • Posun se může stát až z milisekund, aniž by došlo k výraznému systémovému efektu

Při vyhodnocování výstupů souvisejících s výkonem a při porovnávání výstupů souvisejících s výkonem s časováním hodin na zdi musíte být opatrní. Pokud nejsou známky jiných problémů s výkonem, můžete obvykle ignorovat zprávy o rychlosti. Zprávy o posunu můžete obvykle ignorovat v následujících situacích:

  • Procesy fungují podle očekávání.

  • Dotazy SQL serveru nefungují ve vzorcích podivné doby trvání.

  • Nevidíte příznaky jiných problémových míst.

Před ignorováním zpráv ve unášených upozorněních doporučujeme kontaktovat výrobce, abyste měli jistotu, že neexistují žádné známé problémy s RDTSC. Pomocí příznaku trasování 8033 (– T8033) se vrátíte k chování sestav v původní vydané verzi SQL serveru 2005 a v SQL serveru 2005 SP1. Původní vydaná verze SQL serveru 2005 a SQL Server 2005 SP1 nehlásí zprávy o nedoručení. Pokud používáte původní vydanou verzi SQL serveru 2005 nebo SQL Server 2005 SP1 bez problémů, můžete zprávy obvykle ignorovat.

Proč příkaz WAITFOR DELAY funguje správně? Jaké jsou pravidelné procesy systému?

Na mechanismy časového limitu nemá vliv vysoké rozlišení. SQL Server nepoužívá časovač s vysokým rozlišením pro aktivity založené na časovači. Některé aktivity časového limitu vycházejí z časovače s omezeným rozlišením, který používá funkci GetTickCount . Tyto aktivity časového limitu zahrnují časový limit zámku, příkaz WAITFOR DELAY a zjišťování zablokování.

Další informace naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:

938448 Pokud server používá dvoujádrové procesory AMD Opteron nebo víceprocesorové procesory AMD Opteron, může v systému Windows Server 2003 dojít k posunu časového razítkování.

895980 Programy, které používají funkci QueryPerformanceCounter, můžou v systémech Windows Server 2003 a Windows XP špatně fungovatProdukty třetích stran, které tento článek popisuje, vyrábějí společnosti, které jsou nezávislé na společnosti Microsoft. Společnost Microsoft neposkytuje žádnou záruku (implicitně předpokládanou ani jinou) týkající se výkonu a spolehlivosti těchto produktů.

Potřebujete další pomoc?

Chcete další možnosti?

Prozkoumejte výhody předplatného, projděte si školicí kurzy, zjistěte, jak zabezpečit své zařízení a mnohem více.

Komunity vám pomohou klást otázky a odpovídat na ně, poskytovat zpětnou vazbu a vyslechnout odborníky s bohatými znalostmi.

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou jazyka?
Co ovlivnilo váš názor?
Po stisknutí tlačítka pro odeslání se vaše zpětná vazba použije k vylepšování produktů a služeb Microsoftu. Váš správce IT bude moci tato data shromažďovat. Prohlášení o zásadách ochrany osobních údajů.

Děkujeme vám za zpětnou vazbu.

×