ИСПРАВЛЕНИЕ: Снижение быстродействия наблюдается 2008 R2 SQL Server или SQL Server 2012 наблюдается высокая загрузка ЦП с конкуренции через QUERY_EXEC_STATS spinlock

Переводы статьи Переводы статьи
Код статьи: 2662301 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Корпорация Майкрософт распространяет пакет обновления 1 (SP1) для Microsoft SQL Server 2008 R2 или Microsoft SQL Server 2012 исправления в один загружаемый файл. Так как накопительные исправления, каждый выпуск содержит все исправления и обновления безопасности, которые были включены в предыдущие SQL Server 2008 R2 пакетом обновления 1 (SP1) или Microsoft SQL Server 2012 выпуска обновления.

Проблема

Рассмотрим следующий сценарий:
  • Экземпляр Microsoft SQL Server 2008 R2 или 2012 Microsoft SQL Server установки на компьютере.
  • В экземпляре выполняются одновременно инструкции, указанных ниже:
    CREATE PROC p AS RETURN (
    query
    ); EXEC p;
    Или запустить запрос, содержащий следующий код:

    IF EXISTS(
    subquery
    );
  • Использование ЦП высоких и рабочие потоки находятся в состоянии runnable.
  • Конкуренцию за QUERY_EXEC_STATS Spinlock высокой.
    Прокруток, возможных конфликтов, а значения off назад для QUERY_EXEC_STATS быстро увеличить Spinlock.
    Примечание Дополнительные сведения о том, как отслеживать QUERY_EXEC_STATS Spinlock, обратитесь к разделу «Дополнительная информация».

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

Причина

Эту проблему, поскольку происходит SQL Server 2008 R2 или 2012 SQL Server создает и удаляет некоторые структуры памяти о глобальной статистики вместо их кэширование. Это приводит к узким местом для производительности.

Решение

Накопительное обновление информации

SQL Server 2012

Исправление этой уязвимости первого выпуска в накопительное обновление 1 для SQL Server 2012. Дополнительные сведения о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:
2679368 Накопительный пакет обновления 1 для SQL Server 2012
Примечание Поскольку сборки являются накопительными, каждый новый выпуск исправлений содержит все исправления и исправить все исправления безопасности, которые были включены в предыдущие 2012 SQL Server выпуска. Корпорация Майкрософт рекомендует рассмотреть применение самую последнюю версию исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
2692828 Строит 2012 SQL Server, выпущенных после 2012 SQL Server
Необходимо установить исправление SQL Server 2012 установки 2012 SQL Server.

Накопительный пакет обновления 5 для SQL Server 2008 R2 SP1

Исправление этой уязвимости первого выпуска накопительного обновления 5. Дополнительные сведения о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2 SP1 щелкните следующий номер статьи базы знаний Майкрософт:
2659694 Накопительный пакет обновления 5 для SQL Server 2008 R2 SP1
Примечание Поскольку сборки являются накопительными, каждый новый выпуск исправлений содержит все исправления и все исправления безопасности, которые были включены в предыдущие SQL Server 2008 R2 SP1 исправления выпуска. Мы рекомендуем рассмотреть применение самую последнюю версию исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
2567616 SQL Server 2008 R2 построений, выпущенных после пакета обновления 1 2008 R2 SQL Server

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

Для наблюдения за QUERY_EXEC_STATS spinlock, задержки и количества итераций в зависимости от среды, в следующем коде и запустите его:

SET NOCOUNT ON
CREATE TABLE #spins([Spinlock Name] varchar(50),Collisions numeric,Spins numeric,[Spins/Collision] float,[Sleep Time (ms)] numeric,Backoffs numeric, InsertTime datetime DEFAULT GETDATE())
DECLARE @counter int = 1
WHILE @counter < 10
      BEGIN
            INSERT INTO #spins ([Spinlock Name], Collisions, Spins, [Spins/Collision], [Sleep Time (ms)], Backoffs) EXECUTE ('DBCC SQLPERF (''SPINLOCKSTATS'') WITH NO_INFOMSGS')
            WAITFOR DELAY '00:00:05'
            SET @counter +=1
      END
SELECT * FROM #spins WHERE [Spinlock Name] = 'QUERY_EXEC_STATS' ORDER BY InsertTime
DROP TABLE #spins

Статус

Корпорация Майкрософт подтверждает, что это проблема в продуктах корпорации Майкрософт, перечисленных в разделе «Относится к».

Свойства

Код статьи: 2662301 - Последний отзыв: 12 апреля 2012 г. - Revision: 1.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Standard
Ключевые слова: 
kbqfe kbfix kbexpertiseadvanced kbsurveynew kbmt KB2662301 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:2662301

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com