Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

Обобщена информация

Microsoft SQL Server 2005 използва брояча на ПРОЦЕСОРА с висока разделителна способност, за да осигури възможности за микросекунди. Една микросекунда е една милионна от секундата (или една хилядна от една милисекунда). Обаче стойностите за време на SQL Server може да са неправилни, ако използвате технологии, които променят честотите на ПРОЦЕСОРА. Например този проблем може да възникне, когато използвате някоя от следните технологии:

  • Увеличаване на ПРОЦЕСОРА

  • Технология на AMD Cool'n'Quiet

  • Различни електрически схеми

Тази статия съдържа методи и допълнителна информация, която ще ви помогне да заобиколите този проблем.

Симптоми

Когато използвате командата ЗАДАЙ статистически данни, за да се покаже времето за изпълнение, анализиране и съставяне на сървъра, е възможно да получите грешни стойности. Например може да забележите, че времето за изпълнение на SQL Server е по-голямо от ПРОЦЕСОРНО време. Този проблем може да засегне точността на настройването на производителността. Този проблем възниква, когато използвате една от технологиите, които са посочени в секцията "обобщение" на сървъра.

Причина

Този проблем възниква, защото честотите на ПРОЦЕСОРА се променят, когато използвате тези технологии. SQL Server 2005 използва брояча на ПРОЦЕСОРА с висока разделителна способност, за да осигури възможности за микросекунди във времето. Ако честотите на ПРОЦЕСОРА са променени, за да пестите енергия и да намалите топлинната мощност, изчислените продължителности може да са неправилни.

Решение

Информация за сервизния пакет

За да отстраните този проблем, получете най-новия сервизен пакет за SQL Server 2005. За повече информация щракнете върху следния номер на статия, за да видите статията в базата знания на Microsoft:

913089 Как да получите най-новия сервизен пакет за SQL Server 2005Забележка В SQL Server 2005 Service Pack 3 и в по-нови сервизни пакети не се използва клеймото с час на процесора. Тези версии на SQL Server 2005 използват по-надежден таймер, който има максимална точност от 1 милисекунда.

Състоянието

Този проблем е коригиран първо в SQL Server 2005 Service Pack 3.

Заобиколно решение

SQL Server 2005 изисква известни и стабилни точки от данни, за да извършите точна настройка на производителността. Ако на компютъра са разрешени динамични настройки на честотната честота на ПРОЦЕСОРА, можете да ги забраните, така че процесорите да поддържат постоянна честота, преди да започнете да следите и настройвате производителността на SQL Server. За да направите това, използвайте методите по-долу.

Конфигуриране на системата за захранване на компютъра, за да принуди процесора да остане на максимална честота

За да направите това, изпълнете следните стъпки:

  1. Щракнете върху Старт, щракнете върху изпълнение, въведете сила. cplи след това щракнете върху OK.

  2. В диалоговия прозорец свойства на Power Options щракнете върху винаги включена в списъка на енергийните схеми .

  3. Щракнете върху ОК.

Може да възникне отклонение. Дрейф е отклонение между стойностите на честотната честота на ПРОЦЕСОРА. За повече информация вижте раздела "дрейф". В този случай трябва да рестартирате Microsoft Windows, за да синхронизирате отново честотите на всички процесори, след като промените схемата на захранване. Ако не можете да рестартирате компютъра, разрешете афинитета на процесора на SQL Server, за да не позволите на работните нишки на SQL Server да се придвижват между процесора. Когато направите това, не се налага да рестартирате компютъра дори ако се случи отклонение между стойностите на честотната честота на ПРОЦЕСОРА. За да разрешите афинитет на процесора на SQL Server за всички процесори на сървъра, трябва да използвате различна маска в зависимост от броя логически процесори, които са на сървъра. Таблицата по-долу показва примерни сценарии.

CPU номер

Изявления за разрешаване на афинитет на процесора

02 процесора

Exec sp_configure "маска за афинитет", 0x00000003GOreconfigureGO

04 процесора

Exec sp_configure "маска за афинитет", 0x0000000FGOreconfigureGO

08 процесора

Exec sp_configure "маска за афинитет", 0x000000FFGOreconfigureGO

16 процесора

Exec sp_configure "маска за афинитет", 0x0000FFFFGOreconfigureGO

32 процесора

Exec sp_configure "маска за афинитет", 0xFFFFFFFFGOreconfigureGO

Забележка Възможно е да не са достатъчни, за да забранят функциите на вариации на честота на ПРОЦЕСОРА на ниво BIOS. Различните инструменти на други разработчици могат да променят честотите на ПРОЦЕСОРА. Някои реализации разрешават корекции на честотите дори когато процесора е под максималната настройка на Power схемата. В този случай трябва да забраните тези инструменти на други разработчици, когато изпълнявате настройка на производителността в SQL Server 2005.

Използвайте други разработчици и драйвери, за да синхронизирате честотите на ПРОЦЕСОРА и броячите на часовници на ПРОЦЕСОРА

В редки случаи системата може да изисква актуализация от производителя за коригиране на проблеми с честотата на ПРОЦЕСОРА. Най-добрата практика е да проверите системата за най-новите актуализации на BIOS, микрокод и фърмуер, ако подозирате, че системата може да има проблем.

Повече информация

Microsoft SQL Server 2000 и по-стари версии на SQL Server използват механизмите за време на Windows. Механизмът за време използва стойности от милисекунди. Обикновено тази точност е от 10 до 15 MS. Точността обаче може да е по-голяма от 55 MS. Заявките за SQL Server често се попълват в едноцифрени милисекунди или микросекунди. Тази точност изисква таймер с висока разделителна способност. Следователно тези версии на SQL Server съобщават за продължителността на някои заявки като 0 MS. Поради това е трудно да следите производителността и да настроите работата на SQL Server в по-стари версии на SQL Server. SQL Server 2005 подобрява точността, като използва брояча на ПРОЦЕСОРА с висока разделителна способност, за да предостави микросекунди възможности за време. Когато използвате технологиите, които са посочени в секцията "обобщение", докладваните стойности за време може да са неправилни. Този проблем може да засегне следните обекти и функции:

  • Трейс събития:

    • Събитие на вниманието

    • Събития в възела на съхранените процедури

    • Събития в TSQL възел

    • Събития в възела обекти

    • Събития в възела "транзакции"

  • Динамични изгледи за управление:

    • 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

  • Командата ' ' ЗАДАЙ статистически час ' '

  • Системна таблица на sysprocesses

След като инсталирате SQL Server 2005 Service Pack 2 (SP2), SQL Server регистрира съобщение за грешка в регистъра за грешки, когато SQL Server открие, че таймерите за висока разделителна способност са извън синхрон между процесора. Съобщението за грешка показва, че времената на изпълнение може да не са точни и потребителите трябва да използват данни за производителност с повишено внимание. Текстът на съобщението за грешка наподобява едно от следните съобщения за грешка:

Съобщение за грешка 1

Броячът за времеви печат на ПРОЦЕСОРА в планировчика на ИД 2 не е синхронизиран с други процесори.

Съобщение за грешка 2

Честота на печата на ПРОЦЕСОРНО време се е променила от 191469 до 1794177 кърлежи за милисекунди. Ще се използва новата честота

SQL Server използва инструкцията за брояч за печат в реално време (RDTSC), за да придобие броя на отметките за 64. Можете да разделите тази стойност чрез честота на ПРОЦЕСОРА, за да преобразувате стойностите в милисекунди. Вариации на времето могат да възникнат при промяна на честотата на ПРОЦЕСОРА или дрейф.

Увеличаване на ПРОЦЕСОРА

Постъпковото увеличаване на ПРОЦЕСОРА е дефинирано като умишлено промяна на честотата на ПРОЦЕСОРА. Постъпковото увеличаване на ПРОЦЕСОРА може да бъде известно също като технология на Intel SpeedStep или AMD PowerNow! технология. Когато се случи увеличаване на ПРОЦЕСОРА, скоростта на ПРОЦЕСОРА може да се увеличи или намали на стъпки като малки като 50 MHz за пестене на енергия и намаляване на топлинната мощност. Процесори, които са с един и същ възел за един и същ неравномерен достъп до паметта, не регулират самостоятелно честотите. Таблицата по-долу илюстрира как Стъпковите промени на ПРОЦЕСОРА могат да повлияят на изчисленията на времето.

Действие

RDTSC кърлежи

Кърлежи за милисекунди (FREQUENCY)

Време за стенен часовник

Папка ' ' Начало ' '

1

200

0

Стъпка на честота надолу

200

100

1ms

Крайна партида

500

3ms

ОБЩИ СУМИ

500

4ms

SQL Server улавя RDTSC кърлежи и в двата начални и крайни RDTSC кърлежи. След това SQL Server разделя отметките със стойността за честота. В този пример възникват следните изчисления на времето, когато използвате честота на 200 или 100:

  • Честота 200: 500/200 = 2,5 MS

  • Честота 100: 500/100 = 5 MS

Нито един от времевите изчисления не съвпада с точното време за стенен часовник от 4 MS. Ако това изчисление се използва в RPC: завършено събитие за проследяване, колоните продължителност и краен час се съобщават неправилно. RPC: завършено събитие улавя началното време за стенен часовник и брояча на процесора. За да получите по-висока разделителна способност от консумативите на Windows в SQL Server 2005, колоните с данни за продължителност и краен час в проследяване на SQL Server се изчисляват с помощта на изминалото брой на отметките за процесора. Колоната End Time се изчислява, като се добави колоната продължителност към колоната Начален час . В този пример колоната End Time се изчислява чрез неправилно добавяне на 2,5 MS или 5 MS към началния час.

Плаващите

Drift е отклонение в стойностите на часовника на ПРОЦЕСОРА. Системите, които имат няколко процесора, могат да произведат различни стойности на CPU Clock за един и същ момент. Въпреки че не е често срещан, може да се отдели време за разделяне на времето. Следващият пример показва как промените в плаващите могат да повлияят на резултата от колоната за времетраене на данни в проследяване на SQL Server. Примерът предполага, че честотата на ПРОЦЕСОРА остава стабилна в 200 кърлежи за милисекунди. Таблицата по-долу илюстрира събитията при този сценарий.

Действие

Планиран CPU на Windows

CPU 1 RDTSC

CPU 2 RDTSC

Време за стенен часовник

Папка ' ' Начало ' '

1

100

1100

0

Крайна партида

2

900

1900

4 MS

ОБЩИ СУМИ

4 MS

SQL Server улавя RDTSC кърлежи и в двете точки за начало и в крайните точки. След това SQL Server разделя RDTSC кърлежи по стойността за честота. В този пример Windows планира работната нишка на SQL Server върху два различни процесора. Нишката на работния поток на SQL Server, която е изработила първо пакета на първия CPU (CPU 1). Въпреки това, изпълнението на партидите беше прекъснато в определен момент и SQL Server изпрати изпълнението на партидата в чакаща опашка. Когато SQL Server изпрати работната нишка на SQL Server, която предоставя тази партида, на опашката на изпълнима отново, Windows изпраща нишката, за да се изпълни на втория CPU (CPU 2). Работният поток на SQL Server завърши работата на ПРОЦЕСОРА 2. Поради отклонението на ПРОЦЕСОРА, стойността на края на цъкане, която е заснета от CPU 2, е 1900 вместо 900. Можете да избегнете този проблем, ако разрешите афинитет на процесора на SQL Server. В този пример се използват следните изчисления на времето:

  • Неправилна, но докладвана стойност: (1900-100 = 1800)/200 = 9 MS

  • Правилна стойност: (900 – 100 = 800)/200 = 4 MS

Стойността на колоната продължителност за RPC: завършено събитие ще бъде съобщено като 9 MS вместо 4 MS. Резултатът е повече от два пъти по-правилната стойност на 4 MS. Предупредителните съобщения за плаващи се добавят към SQL Server 2005, за да се покаже, че изходните резултати, споменати по-рано, може да не са надеждни. В някои необхванати ситуации SQL Server 2005 SP2 може да съобщава предупредителни съобщения за следните неща:

  • Предупредителни съобщения за FALSE Drift

  • Плаващите могат да се превърнат десетки милисекунди, без да се създава забележим системен ефект

Трябва да бъдете внимателни, когато оценявате свързаните с производителността резултати и когато сравнявате резултати, свързани с производителността, към времена на стенен часовник. Ако няма следи от други проблеми с производителността, обикновено можете да игнорирате предупредителните съобщения за плаващи. Например можете обикновено да игнорирате предупредителните съобщения за плаващи в следните ситуации:

  • Процесите се изпълняват по очаквания начин.

  • Заявките за SQL Server не се изпълняват в странни модели на продължителност.

  • Не виждате знаци за други проблеми.

Все пак, преди да игнорирате предупредителните съобщения за плаващи, ви препоръчваме да се свържете с производителя, за да се уверите, че няма известни проблеми с RDTSC. Можете да използвате Трейс Flag 8033 (-T8033), за да се върнете към поведението на отчитане в оригиналната версия на издание на SQL Server 2005 и в SQL Server 2005 SP1. Първоначалната версия на издание на SQL Server 2005 и SQL Server 2005 SP1 не докладват предупредителни съобщения за плаващи. Ако изпълнявате оригиналната версия на SQL Server 2005 или SQL Server 2005 SP1 без проблеми, обикновено можете да игнорирате съобщенията.

Защо изявлението за забавянето на изчакване работи правилно? Какво ще стане с периодичните системни процеси?

Механизмът за прекъсване на времето не се влияе от дизайна с висока разделителна способност. SQL Server не използва таймера с висока разделителна способност за базирани на таймера дейности. Някои дейности за период от време са базирани на намален таймер за разрешаване, който използва функцията GetTickCount . Тези дейности за прекъсване на времето включват заключване на изчакване, изявление за забавяне и откриване на безизходица.

За повече информация щракнете върху номерата по-долу, за да видите статиите в базата знания на Microsoft:

938448 Сървър със сървъри, базиран на Windows Server 2003, може да има брояч за време на печат, ако сървърът използва двуядрени процесори AMD Opteron или процесори AMD Opteron

895980 Програмите, които използват функцията QueryPerformanceCounter, може да се изпълняват слабо в Windows Server 2003 и в Windows XPПродуктите на други разработчици, които се обсъждат в тази статия, се произвеждат от фирми, независими от Microsoft. Microsoft не дава никакви гаранции, подразбиращи се или по друг начин за работата или надеждността на тези продукти.

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×