Sažetak

Microsoft SQL Server 2005 koristi brojač CPU-a s visokom rezolucijom radi pružanja mikrosekunde tempiranja. Mikrosekunda je jedan milijunti drugi (ili jedan tisućiti od milisekunde). Međutim, vrijednosti tempiranja sustava SQL Server mogu biti pogrešne ako koristite tehnologije koje mijenjaju frekvencije CPU-a. Taj se problem, primjerice, može pojaviti kada koristite neku od sljedećih tehnologija:

  • CPU koračni

  • AMD Cool'n ' quiet tehnologija

  • Razni sustavi uštede energije

U ovom se članku nalaze načini i dodatne informacije koje će vam pomoći da zaobiđete taj problem.

Simptomi

Kada koristite naredbu Postavi statistiku vremena da biste prikazali izvršavanje poslužitelja, raščlanjanje i vrijeme kompilacije, možda ćete dobiti pogrešne vrijednosti. Možda ćete, primjerice, primijetiti da je vrijeme izvršavanja sustava SQL Server puno više od vremena procesora. Taj problem može utjecati na točnost podešavanja performansi. Taj se problem pojavljuje kada koristite neku od tehnologija navedenih u odjeljku "Sažetak" na poslužitelju.

Uzrok

Taj se problem pojavljuje jer se frekvencije CPU-a mijenjaju kada koristite te tehnologije. SQL Server 2005 koristi brojač CPU-a s visokom rezolucijom radi pružanja mikrosekunde tempiranja. Ako se frekvencije CPU-a promijene da bi se uštedjela energija i smanjila izlaz topline, izračunata će trajanje biti netočne.

Rješenje

Informacije o servisnom paketu

Da biste riješili taj problem, Nabavite najnoviji servisni paket za SQL Server 2005. Dodatne informacije potražite u članku iz Microsoftove baze znanja pod sljedećim brojem:

913089 Kako nabaviti najnoviji servisni paket za SQL Server 2005Notes U sustavu SQL Server 2005 Service Pack 3 te u kasnijim servisnim paketima ne koristi se oznaka procesora. Ove verzije sustava SQL Server 2005 koriste pouzdaniji timer koji ima maksimalnu preciznost od 1 milisekundi.

Status

Taj je problem prvi put ispravljen u sustavu SQL Server 2005 Service Pack 3.

Zaobilazno rješenje

SQL Server 2005 zahtijeva poznate i stabilne podatkovne toиke radi točnosti podešavanja performansi. Ako je na računalu omogućeno prilagođavanje učestalosti dinamičke frekvencije CPU-a, možete ih onemogućiti da bi CPU održao stalnu frekvenciju frekvencije prije nego što počnete nadzirati i podesiti performanse sustava SQL Server. Da biste to učinili, upotrijebite sljedeće metode.

Konfiguriranje značajke uštede energije na računalu radi primjene CPU-a na maksimalnu učestalost

Da biste to učinili, slijedite ove korake:

  1. Kliknite Start, zatim Pokreni, upišite powercfg. cpl, a zatim kliknite u redu.

  2. U dijaloškom okviru Svojstva mogućnosti uštede energije na popisu Power sheme kliknite uvijek uključeno .

  3. Kliknite U redu.

Može se pojaviti Drift. Drift je divergencija između vrijednosti frekvencije CPU-a. Dodatne informacije potražite u odjeljku "drift". U ovom slučaju morate ponovno pokrenuti Microsoft Windows da biste ponovno sinkronizirali frekvencije svih procesora nakon promjene značajke uštede energije. Ako ne možete ponovno pokrenuti računalo, omogućite afinitet procesora sustava SQL Server da biste spriječili premještanje između CPU-a u sustavu SQL Server. Kada to učinite, ne morate ponovno pokrenuti računalo, čak i ako dođe do divergencije između vrijednosti frekvencije CPU-a. Da biste omogućili afinitet procesora sustava SQL Server za sve CPU-ove na poslužitelju, morate koristiti neku drugu masku, ovisno o broju logičkih procesora koji se nalaze na poslužitelju. U sljedećoj se tablici nalaze ogledni scenariji.

Broj CPU-a

Naredbe za omogućivanje afiniteta procesora

24 CPU-a

The exec sp_configure "Mask afinitet", 0x00000003GOreconfigureGO

10 CPUs

The exec sp_configure "Mask afinitet", 0x0000000FGOreconfigureGO

18 CPU-a

The exec sp_configure "Mask afinitet", 0x000000FFGOreconfigureGO

16 CPU-a

The exec sp_configure "Mask afinitet", 0x0000FFFFGOreconfigureGO

32 CPU-a

The exec sp_configure "Mask afinitet", 0xFFFFFFFFGOreconfigureGO

Napomena Može biti nedovoljan za onemogućivanje značajki varijacije frekvencija CPU-a na razini BIOS-a. Razni uslužni programi trećih strana mogu promijeniti frekvencije CPU-a. Neke implementacije omogućuju prilagođavanje frekvencija čak i kada su CPU-ovi u okviru maksimalne postavke Power sheme. U ovom slučaju morate onemogućiti ove komunalije drugih proizvođača kada izvodite tuning performansi u sustavu SQL Server 2005.

Korištenje servisa trećih strana i upravljačkih programa za sinkronizaciju frekvencija CPU-a i brojača sat CPU-a

U rijetkim prigodama sustav može zahtijevati ažuriranje proizvođača radi ispravljanja problema s frekvencijom CPU-a. Najbolja je praksa provjeriti sustav za najnoviji BIOS, microcode i firmware ažuriranja ako sumnjate na to da sustav može imati problem.

Dodatne informacije

Microsoft SQL Server 2000 i starije verzije sustava SQL Server koriste mehanizme tempiranja sustava Windows. Mehanizmi tempiranja koriste vrijednosti milisekundi preciznosti. Obično je ta preciznost 10 do 15 MS. Međutim, preciznost može biti velika kao 55 MS. Upiti sustava SQL Server često su dovršeni unutar jednoznamenkaste milisekunde ili mikrosekunde time spans. Za tu je preciznost potreban timer visokog razlučivosti. Dakle, ove verzije sustava SQL Server izvješće trajanje nekih upita kao 0 MS. Zbog toga je teško pratiti performanse i podesiti performanse sustava SQL Server u starijim verzijama sustava SQL Server. SQL Server 2005 poboljšava točnost pomoću značajke CPU-a s visokim rezolucijom da bi vam se omogućile značajke mikrosekunde tempiranja. Kada koristite tehnologije koje su navedene u odjeljku "Sažetak", prijavljene vrijednosti tempiranja možda su pogrešne. Taj problem može utjecati na sljedeće objekte i značajke:

  • Praćenje događaja:

    • Događaj pažnje

    • Događaji u čvoru spremljene procedure

    • Događaji na TSQL čvoru

    • Događaji u čvoru objekata

    • Događaji u čvoru transakcija

  • Prikazi za dinamičku upravljanje:

    • 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

  • Naredba postavljanje vremena za statistiku

  • Tablica sustava sysprocesi

Kada instalirate SQL Server 2005 Service Pack 2 (SP2), SQL Server zapisuje poruku o pogrešci u zapisniku pogreške kada SQL Server otkrije da su Mjerači visokih rezolucija izvan sinkronizacije između CPU-a. Poruka o pogrešci označava da tempiranje performansi možda nije točno, a korisnici bi trebali koristiti podatke o performansama s oprezom. Tekst poruke o pogrešci nalikuje jednoj od sljedećih poruka o pogrešci:

Poruka o pogrešci 1

Brojač vremenskih maraka CPU-a na ID-u raspored 2 ne sinkronizira se s drugim CPU-om.

Poruka o pogrešci 2

Frekvencija procesora vremenske oznake promijenila se od 191469 do 1794177 krpelja po milisekundi. Koristit će se nova frekvencija

SQL poslužitelj koristi naputke u realnom vremenu (RDTSC) za stjecanje 64-bitne oznake CPU-a. Tu vrijednost možete podijeliti pomoću frekvencije CPU-a da biste vrijednost pretvorili u milidrugu vrijednosti. Varijacije tempiranja mogu se pojaviti kada se pojave frekvencije procesora ili Drift.

CPU koračni

Koračni CPU definira se kao namjerna promjena u frekvenciji CPU-a. CPU koračanje može biti poznat i kao Intel SpeedStep tehnologija ili AMD PowerNow! tehnologija. Kada se korak procesora pojavi, brzina CPU-a može povećati ili smanjiti porast u koracima kao mala kao 50 MHz da bi se uštedjela energija i smanjila toplinski izlaz. CPU-ovi koji se nalaze u istom nejedinstvenom čvoru Memory Access (NUMA) ne prilagođavaju se neovisno o frekvencijama. U sljedećoj se tablici prikazuje kako promjene procesora mogu utjecati na izračun vremena.

Akcije

RDTSC krpelji

Krpelji po milisekundi (frekvencija)

Vrijeme za zidni sat

Pokreni seriju

1

200

0

Frekvencija korak prema dolje

200

100

1ms

Završna serija

500

3ms

UKUPNIH ZBROJEVA

500

4ms

SQL Server bilježi RDTSC krpelje na početku i kraju RDTSC krpelja. Zatim SQL poslužitelj dijeli krpelje po frekvenciji učestalosti. U ovom primjeru sljedeći izračuni tempiranja javljaju se kada koristite frekvencijsku vrijednost 200 ili 100:

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

  • Frekvencija 100: 500/100 = 5 MS

Ni jedan od izračuna tempiranja ne podudara se s stvarnim satom za zidne funkcije. Ako se taj izračun koristi u programu RPC: dovršeni praćenje događaja, stupci Trajanje i vrijeme završetka nisu ispravno prijavljeni. RPC: završeni događaj bilježi početni vremenski sat i zbroj grafikona CPU-a. Da biste dobili veći timing rezolucije od pribora za Windows u sustavu SQL Server 2005, stupci Trajanje i završetak podataka u praćenju sustava SQL Server izračunavaju se pomoću protecnog broja kvačica CPU-a. Stupac vrijeme završetka izračunava se dodavanjem stupca Trajanje u stupac vrijeme početka . U ovom primjeru stupac vrijeme završetka izračunava se neispravno dodavanjem 2,5 MS ili 5 MS na vrijeme početka.

Drift

Drift je divergencija u vrijednosti CPU Clock. Sistemi koji imaju više CPU-a mogu proizvesti različite vrijednosti procesora za istu točku u vremenu. Iako nije uobičajeno, CPU može doživjeti razdvajanje sata tijekom vremena. U sljedećem primjeru pokazuje se kako promjene drift mogu utjecati na ishod stupca podaci o trajanju u praćenju SQL poslužitelja. U primjeru se pretpostavlja da frekvencija CPU-a ostaje stabilna pri 200 krpeljima po milisekundi. U sljedećoj su tablici prikazane događaji u ovom scenariju.

Akcije

Zakazani CPU sustava Windows

CPU 1 RDTSC

CPU 2 RDTSC

Vrijeme za zidni sat

Pokreni seriju

1

100

1100

0

Završna serija

2

900

1900

4 MS

UKUPNIH ZBROJEVA

4 MS

SQL poslužitelj bilježi RDTSC krpelje na početku i na završnim točkama. Nakon toga SQL poslužitelj dijeli krpelje RDTSC frekvencijskim vrijednostima. U ovom primjeru Windows je zakazivao radnički konac za SQL Server na dva različita CPU-a. Radnička nit sustava SQL Server koja servisa batch prvi put je radila na prvom CPU (CPU 1). No izvršenje skupne obrade prekinuto je u nekom trenutku, a SQL poslužitelj poslao je skupnu izvršenje u red čekanja na čekanju. Kada je SQL poslužitelj poslao stavku radnika sustava SQL Server koja je ponovno poslužit u redu za pokretanje, Windows je poslao nit da se pokrene na drugom CPU-u (CPU 2). Radni Thread sustava SQL Server završen je pokrenut na CPU-u 2. Zbog drift CPU-a, vrijednost krajnjih krpelja koja je snimljena na CPU-u 2 bila je 1900 umjesto 900. Ovo ponašanje možete izbjeći ako omogućite afinitet procesora sustava SQL Server. U ovom primjeru koriste se sljedeći izračuni tempiranja:

  • Netočna, ali prijavljena vrijednost: (1900 – 100 = 1800)/200 = 9 MS

  • Ispravna vrijednost: (900 – 100 = 800)/200 = 4 MS

Vrijednost stupca Trajanje u programu RPC: dovršen događaj bit će prijavljeni kao 9 MS umjesto 4 MS. Taj je rezultat više od dvostruke ispravne vrijednosti 4 MS. Poruke o upozorenjima za drift dodaju se u SQL Server 2005 da bi se ukazivalo na to da rezultati performansi koji su prethodno navedeni možda neće biti pouzdani. U nekim neotkrivenim situacijama SQL Server 2005 SP2 može prijaviti poruke s upozorenjima o sljedećem:

  • Poruke upozorenja za FALSE Drift

  • Drift može postati deseci milisekundi, a da ne uzrokuju vidljivi sistemski efekti.

Morate biti pažljivi kada procijenite izlaz koje se odnose na performanse i kada usporedite izlaze koje se odnose na performanse u tempiranje zidne sata. Ako nema znakova drugih problema s performansama, obično možete ignorirati poruke upozorenja za Drift. Primjerice, poruke s upozorenjima za drift obično možete ignorirati u sljedećim situacijama:

  • Procesi se izvode kao što je očekivano.

  • Upiti sustava SQL Server ne izvode se u čudnim oblicima Durational.

  • Ne vidite znakove drugih uska grla.

No, prije nego što zanemarite poruke upozorenja za drift, preporučujemo da se obratite proizvođaču da biste provjerili postoje li problemi s RDTSC-om. Možete koristiti oznaku Trace 8033 (– T8033) da biste se vratili na ponašanje izvješćivanja u izvornoj verziji sustava SQL Server 2005 i u sustavu SQL Server 2005 SP1. Originalna verzija izdanja sustava SQL Server 2005 i SQL Server 2005 SP1 ne izvješćuju poruke o upozorenjima za Drift. Ako koristite izvornu verziju sustava SQL Server 2005 ili SQL Server 2005 SP1 bez problema, možete obično ignorirati poruke.

Zašto je naredba WAITFOR DELAY ispravno funkcionisava? Što je s periodičkim procesima sustava?

Oblikovanje visokih rezolucija ne utječe na mehanizme za vremensko trajanje. SQL poslužitelj ne koristi timer za visoku razlučivost za aktivnosti temeljene na mjeraču vremena. Neke aktivnosti tijekom vremena temelje se na smanjenom timeru sanacije koji koristi funkciju GetTickCount . Te aktivnosti s time-out obuhvataju zaključavanje vremenske naredbe, naredbu WAITFOR DELAY i otkrivanje zastoja.

Dodatne informacije potražite u člancima iz Microsoftove baze znanja pod sljedećim brojevima:

938448 Poslužitelj sa sustavom Windows Server 2003 može doživjeti drift brojač parametara kada poslužitelj koristi dual-core AMD Opteron procesore ili Multiprocesor AMD Opteron procesora

895980 Programi koji koriste funkciju QueryPerformanceCounter mogu raditi slabo u sustavu Windows Server 2003 i u sustavu Windows XPProizvodi drugih proizvođača o kojima se raspravlja u ovom članku proizvedeni su u tvrtkama koje su nezavisne od Microsofta. Microsoft ne jamči niti implicira ni na koji drugi način, o performansama ili pouzdanosti tih proizvoda.

Potrebna vam je dodatna pomoć?

Proširite svoje vještine
Istražite osposobljavanje
Prvi koristite nove značajke
Pridružite se Microsoft Insidere

Jesu li ove informacije bile korisne?

Koliko ste zadovoljni kvalitetom prijevoda?
Što je utjecalo na vaše iskustvo?

Hvala vam na povratnim informacijama!

×