Поделиться через


Снижение производительности, вызванное ошибками размера сектора ввода-вывода в SQL Server

Применяется к: SQL Server

В этой статье описывается, как устранить снижение производительности из-за неправильной операции ввода-вывода в SQL Server, если размер физического сектора отличается между дисками.

Обзор

SQL Server может столкнуться с неправильными операциями ввода-вывода, если размер физического сектора дисков отличается от серверов или систем хранения. Это условие может снизить производительность и особенно распространено в средах, где несоответствия размера сектора очевидны, например:

  • Виртуальные машины с подключенным хранилищем
  • Группы доступности AlwaysOn
  • доставка журналов;
  • Миграции оборудования

Например, распространенная проблема возникает, когда основной сервер использует размер сектора 4 КБ, а сервер-получатель использует 512 байт. Эта проблема приводит к неправильному выполнению операций ввода-вывода во время синхронизации журналов или восстановления. Это несоответствие может привести к снижению производительности, например медленным восстановлением или задержками синхронизации.

Флаг трассировки 1800 гарантирует, что SQL Server использует согласованный размер сектора 4 КБ для операций ввода-вывода журнала транзакций независимо от размера физического сектора базового диска. Этот флаг трассировки предназначен для поддержания производительности в смешанных средах, где серверы могли быть обновлены или перенесены на оборудование с различными спецификациями хранилища.

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

Симптомы

Вы можете столкнуться с снижением производительности в SQL Server из-за неправильного ввода-вывода, если вы столкнулись со следующими симптомами:

  • Время медленной синхронизации или восстановления. Операции ввода-вывода неправильной обработки и вывода могут привести к медленной синхронизации или времени восстановления, особенно в распределенных средах SQL Server, таких как группы доступности AlwaysOn или доставка журналов.

  • Сообщения об ошибках в журнале ошибок SQL Server: сообщения об ошибках, связанные с операциями ввода-вывода, могут указывать на проблемы с неправильной настройкой, например:

    There have been # misaligned log IOs which required falling back to synchronous IO.

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

Проверка размера сектора

Чтобы избежать неправильных операций ввода-вывода, важно убедиться, что размер физического сектора дисков согласован во всех серверах и системах хранения.

Чтобы проверить размер сектора, выполните следующую команду в командной строке с повышенными привилегиями:

fsutil fsinfo sectorinfo <volume path name>

На следующем снимка экрана показан вывод fsutil fsinfo sectorinfo команды для E: диска, которая имеет размер сектора 8 КБ, но размер физического сектора в 4 КБ, что приводит к неправильному выполнению операций ввода-вывода:

Снимок экрана: выходные данные командной строки размера сектора 8 КБ.

Решение

Если вы испытываете снижение производительности из-за неправильной обработки и вывода операций ввода-вывода и не можете изменить размер сектора, можно использовать флаг трассировки 1800 в качестве глобального параметра запуска, чтобы принудительно sql Server использовать согласованный размер сектора 4 КБ для операций ввода-вывода журнала транзакций.

Чтобы включить флаг трассировки 1800 в качестве параметра запуска, выполните следующие действия.

  1. В системе, в которой установлен SQL Server, откройте диспетчер конфигурации SQL Server.

  2. Разверните диспетчер конфигурации SQL Server (локальный) и выберите службы SQL Server.

  3. Щелкните правой кнопкой мыши экземпляр SQL Server, который вы хотите настроить, и выберите пункт "Свойства".

    Снимок экрана: меню службы SQL Server правой кнопкой мыши с выделенными свойствами.

  4. В свойствах SQL Server перейдите на вкладку "Параметры запуска", введите -T1800 поле параметра запуска и нажмите кнопку "Добавить", чтобы добавить параметр в список.

    Снимок экрана: добавление флага трассировки в качестве параметра запуска в свойствах SQL Server.

  5. Убедитесь, что флаг трассировки добавлен в список параметров запуска. Нажмите кнопку "ОК ", чтобы сохранить изменения:

    Снимок экрана: окно свойств SQL Server с выделенными параметрами запуска.

  6. Перезапустите службу SQL Server, чтобы включить флаг трассировки при запуске экземпляра.

Ссылки

KB3009974. ИСПРАВЛЕНИЕ. Медленная синхронизация при наличии разных размеров сектора