Prisijunkite prie „Microsoft“
Prisijunkite arba sukurkite paskyrą.
Sveiki,
Pasirinkti kitą paskyrą.
Turite kelias paskyras
Pasirinkite paskyrą, kurią naudodami norite prisijungti.

Suvestinė

"Microsoft SQL Server" 2005 naudoja didelės skiriamosios gebos CPU skaitinį, kad būtų teikiamos mikroantrosios laiko galimybės. Mikrosekundė yra viena milijonoji sekundės (arba viena tūkstantoji milisekundė). Tačiau "SQL Server" laiko reikšmės gali būti neteisingos, jei naudojate technologijas, kurios keičia procesoriaus dažnius. Pavyzdžiui, ši problema gali kilti naudojant bet kurią iš šių technologijų:

  • CPU žingsninis

  • AMD Cool'n ' quiet technologija

  • Įvairios energijos schemos

Šiame straipsnyje pateikiami būdai ir papildoma informacija, padėsianti jums išspręsti šią problemą.

Simptomai

Naudojant "SET" statistikos laiko sakinį, kad būtų rodomas serverio vykdymas, analizės ir kompiliavimo laikai, galite gauti neteisingų reikšmių. Pavyzdžiui, galite pastebėti, kad praėjęs "SQL Server" vykdymo laiko laikas yra daug daugiau nei CPU laiko. Ši problema gali turėti įtakos našumo koregavimo tikslumui. Ši problema kyla, kai naudojate vieną iš technologijų, įtrauktų į "suvestinės" sekciją serveryje.

Priežastis

Ši problema kyla dėl to, kad CPU dažniai keičiami naudojant šias technologijas. "SQL Server 2005" naudoja didelės skiriamosios gebos CPU skaitinį, kad būtų teikiamos mikroantrosios laiko galimybės. Jei CPU dažniai pakeičiami siekiant taupyti energiją ir sumažinti šilumą, Apskaičiuotieji trukimai gali būti neteisingi.

Sprendimas

Paslaugų paketo informacija

Norėdami išspręsti šią problemą, Įsigykite naujausią "SQL Server 2005" pakeitimų paketą. Jei reikia daugiau informacijos, spustelėkite toliau esantį straipsnio numerį ir peržiūrėkite straipsnį "Microsoft" žinių bazėje:

913089 Kaip įsigyti naujausią "SQL Server 2005" pakeitimų paketąPastaba "SQL Server 2005" 3 pakeitimų pakete ir vėliau pakeitimų paketuose procesoriaus laiko žyma nenaudojama. Šios "SQL Server 2005" versijos naudoja patikimesnį laikmatį, kurio maksimalus tikslumas yra 1 milisekundė.

Statusą

Ši problema pirmą kartą ištaisyta SQL serverio 2005 3 pakeitimų pakete.

Sprendimas

"SQL Server 2005" reikalauja žinomų ir stabilių duomenų taškų, kad būtų galima atlikti tikslią našumo reguliavimą. Jei kompiuteryje įgalinti dinaminis CPU dažnio koregavimas, galite juos išjungti, kad CPU išlaikytų pastovų dažnį, prieš pradėdami stebėti ir sureguliuoti SQL serverio veikimą. Norėdami tai padaryti, naudokite toliau pateiktus būdus.

Konfigūruokite kompiuterio "Power" schemą, kad CPU išlaikytų maksimalų dažnį

Norėdami tai atlikti, vykdykite toliau nurodytus veiksmus.

  1. Spustelėkite pradėti, spustelėkite vykdyti, įveskite Powercfg. cpl, tada spustelėkite gerai.

  2. Dialogo lange energijos parinkčių ypatybės spustelėkite visada sąraše energijos schemos .

  3. Spustelėkite Gerai.

Gali įvykti poslinkis. Poslinkis yra nukrypimas tarp CPU dažnio reikšmių. Daugiau informacijos ieškokite skyriuje "Drift". Šiuo atveju turite iš naujo paleisti "Microsoft Windows", kad iš naujo galėtumėte sinchronizuoti visų procesorių dažnius, kai pakeičiate "Power" schemą. Jei negalite iš naujo paleisti kompiuterio, įgalinkite SQL serverio procesoriaus artumą, kad "SQL Server" darbuotojų gijos nebūtų rodomos tarp CPU. Kai tai padarysite, jums nereikia iš naujo paleisti kompiuterio, net jei atsiranda skirtumai tarp CPU dažnio reikšmių. Norėdami įgalinti "SQL Server" procesoriaus afinitetą visiems serverio CPU, turite naudoti kitą kaukę, atsižvelgiant į serveryje esančių loginių procesorių skaičių. Toliau pateiktoje lentelėje išvardyti scenarijaus pavyzdžiai.

PROCESORIAUS numeris

Teiginiai, įgalinantis procesoriaus afinitetą

02 CPU

Exec sp_configure "priskyrimo šablonas", 0x00000003GOreconfigureGO

04 CPU

Exec sp_configure "priskyrimo šablonas", 0x0000000FGOreconfigureGO

08 CPU

Exec sp_configure "priskyrimo šablonas", 0x000000FFGOreconfigureGO

16 CPU

Exec sp_configure "priskyrimo šablonas", 0x0000FFFFGOreconfigureGO

32 CPU

Exec sp_configure "priskyrimo šablonas", 0xFFFFFFFFGOreconfigureGO

Pastaba Gali nepakakti išjungti procesoriaus dažnio variacijų funkcijas BIOS lygiu. Įvairių trečiųjų šalių komunalinės paslaugos gali pakeisti procesoriaus dažnius. Kai kurie diegimai leidžia keisti dažnį, net kai CPU yra dalyje maksimalus energijos schemos parametrai. Šiuo atveju privalote išjungti šias trečiųjų šalių programas, kai atliekate "SQL Server 2005" našumo reguliavimą.

Naudokite trečiosios šalies komunalines paslaugas ir tvarkykles, kad sinchronizuotumėte CPU dažnius ir CPU laikrodžio skaitiklius

Retais atvejais sistemai gali reikėti gamintojo naujinimo, kad būtų ištaisytos CPU dažnio problemos. Jei įtariate, kad sistemai gali kilti problema, geriausia tikrinti naujausią BIOS, mikrokodo ir programinės-aparatinės įrangos naujinimų sistemą.

Daugiau informacijos

"Microsoft SQL Server" 2000 ir ankstesnės "SQL Server" versijos naudoja "Windows" laiko planavimo mechanizmus. Laiko planavimo mechanizmai naudoja milisekundės tikslumo reikšmes. Paprastai šis tikslumas yra nuo 10 iki 15 ms. Tačiau tikslumas gali būti toks pat kaip 55 ms. SQL serverio užklausos dažnai būna vieno skaitmens milisekundžių arba mikrosekundę Time apima. Šiam tikslumui reikia didelės skiriamosios gebos laikmačio. Todėl šios "SQL Server" versijos praneša apie kai kurių užklausų trukmę kaip 0 ms. Todėl sunku stebėti veikimą ir sureguliuoti SQL serverio veikimą ankstesnėse "SQL Server" versijose. SQL Server 2005 pagerina tikslumą, naudodami didelės skiriamosios gebos CPU Skaitliukas, kad būtų teikiamos mikroantrosios laiko galimybės. Kai naudojate technologijas, pateiktas skyriuje "suvestinė", pateiktos laiko reikšmės gali būti neteisingos. Ši problema gali turėti įtakos šiems objektams ir funkcijoms:

  • Sekimo įvykiai:

    • Dėmesio įvykis

    • Įvykiai saugomų procedūrų mazge

    • Įvykiai "TSQL" mazge

    • Įvykiai objektų mazge

    • Įvykiai operacijų mazge

  • Dinaminio valdymo rodiniai:

    • 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

  • "SET" statistikos laiko sakinys

  • Sysprocesų sistemos lentelė

Įdiegus "SQL Server 2005" 2 pakeitimų paketą (SP2), "SQL Server" užregistruoja klaidos pranešimą klaidų žurnale, kai "SQL Server" aptinka, kad didelės skiriamosios gebos laikmačiai nesinchronizuojami tarp CPU. Klaidos pranešimas nurodo, kad našumo laikotarpiai gali būti netikslūs, o vartotojai turi naudoti našumo duomenis atsargiai. Klaidos pranešimo tekstas panašus į vieną iš šių klaidos pranešimų:

1 klaidos pranešimas

CPU laiko Žymos skaitiklio planavimo ID 2 nesinchronizuotas su kitais CPU.

2 klaidos pranešimas

CPU laiko spaudo dažnis pakeistas iš 191469 į 1794177 erkių viename milisekundėje. Bus naudojamas naujas dažnumas

"SQL Server" naudoja realaus laiko Žymos skaitiklio (RDTSC) instrukciją, kad įgytų 64 bitų procesoriaus erkių skaičių. Šią reikšmę galite padalinti pagal procesoriaus dažnį, kad konvertuotumėte reikšmę į milisekundės reikšmes. Laiko variacijos gali atsirasti, kai įvyksta CPU dažnio keitimas arba poslinkis.

CPU žingsninis

CPU žingsninis yra apibrėžiamas kaip sąmoningo procesoriaus dažnio pokytis. CPU stiprinimas taip pat gali būti žinomas kaip "Intel SpeedStep" technologija arba AMD PowerNow! technologijų. Kai CPU įžengia, CPU greitis gali padidėti arba sumažėti didinant ir sumažinant "50 MHz" energijos taupymą ir šilumos išsiskyrimą. CPU, kurie yra tame pačiame ne vienodos atminties prieigos (NUMA) mazge, nepriklausomai sureguliuokite dažnius. Toliau pateiktoje lentelėje parodyta, kaip CPU Žingsniniai keitimai gali turėti įtakos laiko skaičiavimams.

Veiksmą

RDTSC erkės

Erkių viename milisekundėje (dažnumas)

Sieninis laikrodis

Paleisti paketą

1

200

0

Dažnio žingsnis žemyn

200

100

1ms

Baigti paketą

500

3ms

SUMOS

500

4ms

SQL serveris fiksuoja RDTSC erkių pradžios ir pabaigos RDTSC erkes. Tada "SQL Server" skirsto erkių pagal dažnio reikšmę. Šiame pavyzdyje toliau nurodyti laiko skaičiavimai įvyksta, kai naudojate "200" arba "100" dažnio reikšmę:

  • Dažnis 200: 500/200 = 2,5 ms

  • Dažnis 100: 500/100 = 5 ms

Nė vienas iš laiko skaičiavimų atitinka faktinį Sieninis laikrodis laikas 4 ms. Jei šis skaičiavimas naudojamas RPC: užbaigto sekimo įvykio, duomenų stulpelių trukmė ir pabaigos laikas pateikiami netinkamai. RPC: užbaigtas įvykis fiksuoja pradžios Sieninis laikrodis ir procesoriaus varnelės skaičių. Jei norite gauti didesnės skiriamosios gebos laiką nei "Windows" produktų "SQL Server 2005", "SQL Server" sekimo trukmės ir pabaigos laiko stulpeliai skaičiuojami naudojant praėjusio procesoriaus Padalos skaičių. Stulpelis pabaigos laikas apskaičiuojamas įtraukiant stulpelį duration į pradžios laiko stulpelį. Šiame pavyzdyje stulpelis pabaigos laikas apskaičiuojamas netinkamai pridedant arba 2,5 ms, arba 5 ms pradžios laiką.

Drift

"Drift" yra CPU laikrodžio reikšmių nukrypimas. Sistemos, kurios turi kelis CPU, gali pateikti skirtingus to paties taško CPU laikrodžio reikšmes. Nors tai ir nėra įprasta, CPU gali būti atskirtas nuo laiko. Toliau pateiktame pavyzdyje parodyta, kaip "Drift" keitimai gali turėti įtakos "SQL Server" duomenų stulpelio " duration " rezultatams. Pavyzdys reiškia, kad CPU dažnis išlieka pastovus 200 erkių viename milisekundėje. Toliau pateiktoje lentelėje parodyti šio scenarijaus įvykiai.

Veiksmą

"Windows" suplanuotas CPU

CPU 1 RDTSC

CPU 2 RDTSC

Sieninis laikrodis

Paleisti paketą

1

100

1100

0

Baigti paketą

2

900

1900

4 MS

SUMOS

4 MS

SQL serveris fiksuoja RDTSC erkių ir pradžios, ir pabaigos taškus. Tada "SQL Server" skirsto RDTSC erkes pagal dažnio reikšmę. Šiame pavyzdyje "Windows" suplanavo "SQL Server" darbuotojų giją dviejuose skirtinguose CPU. "SQL Server" darbuotojų gijos, kurios teikia paketinę užduotį pirmajam CPU (CPU 1), pirmą kartą. Tačiau Paketinis vykdymas buvo nutrauktas tam tikru momentu, o "SQL Server" išsiuntė paketinį vykdymą į laukiantį eilę. Kai "SQL Server" išsiuntė "SQL Server" darbuotojo giją, kuri šias paketines paslaugas teikia į "Runnable" eilę dar kartą, "Windows" išsiuntė giją veikti antrajame CPU (CPU 2). "SQL Server" darbuotojo gijos atliktas CPU 2. Dėl CPU dreifo pabaigos pokyčio reikšmė, kuri buvo perimta iš CPU 2, buvo 1900, o ne 900. Galite išvengti šio veikimo, Jei įgalinsite "SQL Server" procesoriaus pažiūras. Šiame pavyzdyje naudojami šie laiko skaičiavimai:

  • Neteisinga, bet nurodyta reikšmė: (1900 – 100 = 1800)/200 = 9 MS

  • Teisinga reikšmė: (900 – 100 = 800)/200 = 4 MS

RPC trukmės stulpelio reikšmė : įvykdytas įvykis bus pateiktas kaip 9 ms, o ne 4 ms. Šis rezultatas yra daugiau nei dvigubai didesnė nei teisinga 4 MS reikšmė. Į "SQL Server 2005" įtraukiami įspėjimų apie slinkimą įspėjimai, rodantys, kad anksčiau minėti našumo rezultatai gali būti nepatikimi. Kai kurios nepadengtos situacijos, "SQL Server" 2005 SP2 gali pranešti apie įspėjimus apie šiuos pranešimus:

  • Klaidingi įspėjimų apie slinkimus įspėjimai

  • Dreifas gali tapti dešimtimis milisekundėmis nesukeliant pastebimo sistemos efektų

Turite būti atsargūs, kai įvertinate su našumu susijusius rezultatus ir kai lyginate su našumu susijusius rezultatus su Sieninis laikrodis laikotarpius. Jei nėra kitų veikimo problemų požymių, galite paprastai nepaisyti įspėjimų apie slinkį. Pvz., galite paprastai nepaisyti įspėjimų apie dreifuojančius įspėjimus šiais atvejais:

  • Procesai veikia taip, kaip tikėtasi.

  • SQL serverio užklausos nevykdomos keistu duacionalusis trafaretais.

  • Nematote kitų trukdžių požymių.

Tačiau prieš nepaisydami įspėjimų apie slinkio įspėjimus rekomenduojame susisiekti su gamintoju, kad įsitikintumėte, jog nėra žinomų "RDTSC" problemų. Galite naudoti sekimo vėliavėlę 8033 (– T8033), kad grįžtumėte į ataskaitų veikimą pirminio leidimo versijoje "SQL Server 2005" ir "SQL Server 2005 SP1". Pradinė "SQL Server 2005" ir "SQL Server 2005 SP1" leidimo versija nepraneša apie "Drift" įspėjimų pranešimus. Jei naudojate "SQL Server 2005" arba "SQL Server" 2005 SP1, kuriame nėra problemų, paprastai galite nepaisyti laiško.

Kodėl sakinys WAITFOR UŽDELSIMĄ veikia tinkamai? Kas yra periodinės sistemos procesai?

Dėl didelės skiriamosios gebos konstrukcijos skirtojo laiko mechanizmų neturi įtakos. "SQL Server" nenaudoja didelės skiriamosios gebos laikmačio veiklai laikmačio veiklai. Kai kurie skirtojo laiko veiksmai yra pagrįsti sumažinto skiriamosios gebos laikmačiu, kuris naudoja funkciją GetTickCount . Ši skirtojo laiko veikla apima užrakto skirtojo laiko, "WAITFOR DELAY" ir aklavietės aptikimą.

Jei reikia daugiau informacijos, spustelėkite toliau pateiktus straipsnio numerius ir peržiūrėkite straipsnius "Microsoft" žinių bazėje:

938448 "Windows Server 2003" pagrįstas serveris gali turėti laiko Žymos skaitiklio dreifo, jei serveris naudoja dviejų branduolių AMD Opteron procesorių arba daugiaprocesorėje AMD Opteron procesorių

895980 Programos, kurios naudoja QueryPerformanceCounter funkciją, gali veikti prastai "Windows Server" 2003 ir "Windows XP"Trečiųjų šalių produktus, šiame straipsnyje aptariama, gamina nuo "Microsoft" nepriklausančios įmonės. "Microsoft" neteikia jokių garantijų, numanomų ar kitokių, dėl šių produktų našumo ar patikimumo.

Reikia daugiau pagalbos?

Norite daugiau parinkčių?

Sužinokite apie prenumeratos pranašumus, peržiūrėkite mokymo kursus, sužinokite, kaip apsaugoti savo įrenginį ir kt.

Bendruomenės padeda užduoti klausimus ir į juos atsakyti, pateikti atsiliepimų ir išgirsti iš ekspertų, turinčių daug žinių.

Ar ši informacija buvo naudinga?

Ar esate patenkinti kalbos kokybe?
Kas turėjo įtakos jūsų įspūdžiams?
Paspaudus mygtuką Pateikti, jūsų atsiliepimai bus naudojami tobulinant „Microsoft“ produktus ir paslaugas. Jūsų IT administratorius galės rinkti šiuos duomenis. Privatumo patvirtinimas.

Dėkojame už jūsų atsiliepimą!

×