Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Аннотация

Microsoft SQL Server 2005 использует счетчик ЦП высокой разрешающей способности для обеспечения возможного времени в микросекундах. Микросекунда является одной миллионной частью секунды (или одной тысячной миллисекунды). Однако значения времени выполнения SQL Server могут быть неправильными, если используются технологии, изменяющие частоту ЦП. Например, эта проблема может возникать при использовании одной из указанных ниже технологий.

  • Степпинг ЦП

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

  • Различные схемы управления электросхемой

В этой статье описаны методы и дополнительные сведения, которые помогут вам решить эту задачу.

Проблемы

При использовании инструкции SET STATISTICS TIME для отображения времени выполнения, синтаксического анализа и компиляции сервера могут быть получены неверные значения. Например, вы можете заметить, что время выполнения SQL Server значительно больше, чем время ЦП. Эта проблема может повлиять на точность настройки производительности. Эта проблема возникает при использовании одной из технологий, перечисленных в разделе "Аннотация" на сервере.

Причина

Эта проблема возникает из-за того, что частоты ЦП изменяются при использовании этих технологий. Сервер SQL Server 2005 использует счетчик ЦП с высоким разрешением для обеспечения возможного времени микросекунд. Если частота ЦП меняется для экономии энергии и снижения теплоотвода, вычисленные длительности могут быть неправильными.

Решение

Сведения о пакете обновления

Чтобы устранить эту проблему, установите последнюю версию пакета обновления для SQL Server 2005. Чтобы получить дополнительные сведения, щелкните следующий номер статьи базы знаний Майкрософт:

913089 Как получить последний пакет обновления для SQL Server 2005Примечание В SQL Server 2005 с пакетом обновления 3 (SP3) и более поздних пакетах обновления отметка времени процессора не используется. В этих версиях SQL Server 2005 используется более надежный таймер, который имеет максимальную точность в 1 миллисекунду.

Статус

Впервые эта проблема была исправлена в SQL Server 2005 с пакетом обновления 3 (SP3).

Обходное решение

Для выполнения точной настройки производительности SQL Server 2005 требует известных и стабильных точек данных. Если на компьютере включены динамические настройки частоты ЦП, вы можете отключить их, чтобы процессоры поддерживали стабильное использование частот, прежде чем начать отслеживать и настраивать производительность SQL Server. Для этого выполните указанные ниже действия.

Настройка схемы управления электроуправлением на компьютере для принудительного поддержания ЦП в максимальной частоте

Для этого выполните следующие действия:

  1. Нажмите кнопку Пуск, выберите выполнить, введите powercfg. cplи нажмите кнопку ОК.

  2. В диалоговом окне Свойства: параметры электропитание нажмите кнопку всегда включено в списке схемы управления питанием .

  3. Нажмите кнопку ОК.

Может возникнуть смещение. Смещение — это расхождение между значениями частоты ЦП. Дополнительные сведения можно найти в разделе "смещение". В этом случае необходимо перезапустить Microsoft Windows, чтобы повторно синхронизировать частоты всех ЦП после того, как вы измените схему управления электрорядом. Если вы не можете перезапустить компьютер, включите сходство процессора SQL Server для предотвращения перемещения рабочих потоков SQL Server между процессорами. После этого вам не придется перезагружать компьютер, даже если будет расхождение между значениями частоты ЦП. Чтобы включить сходство процессоров SQL Server для всех ЦП на сервере, необходимо использовать другую маску в зависимости от количества логических процессоров на сервере. В приведенной ниже таблице перечислены примеры сценариев.

Номер ЦП

Операторы для включения соответствия процессоров

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. Различные служебные программы сторонних разработчиков могут изменить частоту ЦП. Некоторые реализации включают настройку частоты, даже если процессоры находятся в параметрах схемы управления электроуправлением. В этом случае вы должны отключить эти сторонние программы при выполнении настройки производительности в SQL Server 2005.

Использование сторонних служебных программ и драйверов для синхронизации частоты ЦП и счетчиков времени ЦП

В некоторых случаях для устранения проблем с частотой ЦП системе может потребоваться обновление от производителя. Если вы подозреваете, что у системы может возникнуть какая-либо неполадка, рекомендуется проверить систему на наличие последних версий BIOS, микрокода и микропрограмм.

Дополнительная информация

Microsoft SQL Server 2000 и более ранних версий SQL Server используют механизмы синхронизации Windows. Механизмы синхронизации используют значения в миллисекундах. Как правило, это точность от 10 до 15 мс. Однако точность может быть не менее 55 МС. Запросы SQL Server часто завершаются с помощью однозначных интервалов времени в миллисекундах или микросекундах. Для этой точности требуется таймер высокого разрешения. Таким образом, в этих версиях SQL Server отчет о длительности некоторых запросов равен 0 мс. Поэтому сложно отслеживать производительность и настраивать производительность 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

  • Инструкция SET STATISTICS TIME

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

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

Сообщение об ошибке 1

Счетчик метки времени для ЦП в идентификаторе планировщика 2 не синхронизируется с другими ЦП.

Сообщение об ошибке 2

Частота меток времени ЦП изменилась с 191469 на 1794177 тактов на миллисекунду. Будет использована новая частота

SQL Server использует инструкцию счетчика отметок времени (RDTSC), чтобы получить число тактов ЦП в 64-разрядном режиме. Это значение можно разделить на частоту ЦП, чтобы преобразовать значения в миллисекунды. Временные варианты могут возникать при изменении частоты ЦП или смещении.

Степпинг ЦП

Степпинг ЦП определен как преднамеренный переход на частоту ЦП. Степпинг процессора также может быть известен как технология Intel SpeedStep или AMD PowerNow! технические. Когда происходит степпинг процессора, скорость ЦП может увеличиваться или уменьшаться с шагом в 50 МГц для экономии энергии и снижения теплоотвода. Процессоры, которые находятся в одном и том же узле неоднородного доступа к памяти (NUMA), не изменяют частоту независимо друг от друга. В следующей таблице показано, как изменения степпинга ЦП могут повлиять на расчет времени.

Действие

RDTSC тактов

Тактов в миллисекунде (частота)

Время на часах стены

Запуск пакета

1

200

до

Частота шага вниз

200

100

1ms

Завершить пакет

500

3ms

ИТОГИ

500

4ms

SQL Server захватывает деления RDTSC и на начальных, и в конечных квантах RDTSC. Затем SQL Server делит деления на значение частоты. В этом примере следующие расчеты времени выполняются при использовании значения частоты 200 или 100.

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

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

Ни одно из расчетов времени не совпадает с реальным временным временем стены, которое составляет 4 мс. Если это вычисление используется в событии трассировки RPC: Completed , столбцы данных о длительности и времени окончания отображаются неправильно. Событие RPC: Completed захватывает время начала часов стены и счетчик тактов ЦП. Для получения более высокое время разрешения, чем количество поставок Windows в SQL Server 2005, столбцы данных о длительности и времени окончания в трассировке SQL Server рассчитываются с помощью счетчика тактов ЦП. Столбец время окончания вычисляется путем добавления столбца Duration в столбец время начала . В этом примере в столбце " время окончания " рассчитывается неправильное Добавление 2,5 MS или 5 мс в начало.

Смещен

Смещение — это расхождение в значениях часов ЦП. Системы с несколькими ЦП могут формировать разные значения часов ЦП для одного и того же момента времени. Несмотря на то, что это не так часто, на процессорах могут возникать расстояния времени. В следующем примере показано, как изменения смещений могут повлиять на результат столбца Duration (данные о длительности ) в трассировке SQL Server. В этом примере предполагается, что частота ЦП остается постоянной в 200 тактов на миллисекунду. В приведенной ниже таблице показаны события, описанные в этом сценарии.

Действие

Запланированный ЦП для Windows

RDTSC ЦП 1

ЦП 2 RDTSC

Время на часах стены

Запуск пакета

1

100

1100

до

Завершить пакет

2

900

1900

4 мс

ИТОГИ

4 мс

SQL Server захватывает RDTSCные Ticks в начальной и конечной точках. Затем SQL Server делит RDTSC тактов на значение частоты. В этом примере Windows запланировала рабочий поток SQL Server на два разных процессора. Рабочий поток сервера SQL Server, на котором сначала выполнялось обслуживание пакета на первом ЦП (ЦПУ 1). Тем не менее выполнение пакета было прервано в некоторый момент времени, а SQL Server отправил выполнение пакета в очередь ожидания. Когда сервер SQL Server отправил рабочий поток SQL Server, который повторно запускает этот пакет в очередь готовности, Windows отправляет поток на второй ЦП (ЦП 2). Рабочий поток SQL Server завершил работу на ЦПУ 2. Из-за того, что значение параметра End Tick, полученное от ЦП 2, было 1900, а не 900, в связи с этим смещением ЦП. Это поведение можно избежать, если включить сходство процессора SQL Server. В этом примере используются следующие расчеты времени.

  • Неверное, но полученное значение: (1900 – 100 = 1800)/200 = 9 мсек

  • Правильное значение: (900 – 100 = 800)/200 = 4 мсек

Значение столбца Duration для события RPC: Completed будет выводиться как 9 мс вместо 4 мс. Результат — это значение, которое больше, чем Double, является правильным значением 4 мс. Сообщения с предупреждением о смещении добавляются в SQL Server 2005, чтобы указать, что описанные выше результаты производительности могут быть ненадежны. В некоторых необнаруженных ситуациях SQL Server 2005 SP2 может сообщать о следующих предупреждениях:

  • Предупреждающие сообщения (ложь)

  • Смещение может стать десятками миллисекунд, не вынуждая заметного системного эффекта.

Необходимо соблюдать осторожность при оценке выходных данных, связанных с производительностью, и при сравнении выходных данных, связанных с производительностью, с временной частотой для часов стены. В случае отсутствия других проблем с производительностью, как правило, вы можете проигнорировать сообщения с предупреждением о смещении. Например, вы обычно можете игнорировать сообщения с предупреждением о смещении в следующих ситуациях:

  • Процессы выполняются должным образом.

  • Запросы SQL Server не работают с необычными шаблонами длительности.

  • Не отображаются признаки других узких мест.

Тем не менее, прежде чем игнорировать предупреждающие сообщения, мы рекомендуем вам обратиться к своему производителю, чтобы убедиться в отсутствии известных проблем с RDTSC. Вы можете использовать флаг трассировки 8033 (– T8033), чтобы вернуться к поведению отчета в исходной версии SQL Server 2005 и SQL Server 2005 SP1. Исходная версия SQL Server 2005 и SQL Server 2005 с пакетом обновления 1 (SP1) не сообщает об уведомлениях о смещении. Если вы используете исходную версию SQL Server 2005 или SQL Server 2005 с пакетом обновления 1 (SP1) без проблем, вы обычно можете проигнорировать эти сообщения.

Почему оператор WAITFOR DELAY работает правильно? Как насчет периодических системных процессов?

На механизмы времени ожидания не влияет дизайн с высоким разрешением. SQL Server не использует таймер высокой разрешающей способности для действий на основе таймера. Некоторые действия по истечении времени выполняются на основе таймера уменьшенного разрешения, использующего функцию GetTickCount . Эти действия по истечении времени включают время ожидания блокировки, инструкцию WAITFOR DELAY и обнаружение взаимоблокировки.

Для получения дополнительной информации щелкните приведенные ниже номера статей базы знаний Майкрософт:

938448 Если на сервере используются двухъядерные процессоры AMD Opteron или многопроцессорные процессоры AMD Opteron, может произойти смещение счетчика времени на сервере под управлением Windows Server 2003.

895980 Программы, использующие функцию QueryPerformanceCounter, могут работать неправильно в Windows Server 2003 и Windows XPПродукты третьих лиц, обсуждаемые в этой статье, изготовлены компаниями, которые не зависят от корпорации Майкрософт. Корпорация Майкрософт не дает никаких гарантий, подразумеваемых и других, о производительности и надежности этих продуктов.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×