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


Дефрагментация дисков базы данных SQL Server

В этой статье содержатся некоторые рекомендации по дефрагментации дисков SQL Server базы данных.

Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 3195161

Должны ли SQL Server диски дефрагментироваться на уровне операционной системы?

Это зависит от состояния фрагментации текущих дисков. Как правило, это не повредит, и это может помочь, если вы соблюдаете меры предосторожности, описанные в разделе Меры предосторожности при дефрагментации SQL Server дисков базы данных. Единственный недостаток заключается в том, что необходимо завершить работу SQL Server, если средство дефрагментации не поддерживает возможности транзакционных данных. Хорошая новость заключается в том, что после запуска дефрагментации вам действительно не придется делать это снова, если у вас не будет много авторазрастания и других файлов, перемещающихся на диски и с них. Убедитесь, что вы понимаете все стратегии кэширования записи, которые использует служебная программа. Кэширование с помощью такой программы может включать кэш без поддержки батареи, что может нарушить требования к протоколу WAL.

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

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

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

Сегодня на рынке доступны различные средства дефрагментации. Некоторые служебные программы обеспечивают дефрагментацию открытых файлов, тогда как другие требуют дефрагментации закрытых файлов или работают лучше при использовании в условиях закрытого файла. Кроме того, некоторые служебные программы имеют возможности транзакций, а другие — нет.

Меры предосторожности при дефрагментации SQL Server дисках базы данных

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

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

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

  • Протокол Write-Ahead ведения журнала (WAL) требует предотвращения перезаписи секторов, чтобы избежать потери данных. Служебная программа должна поддерживать физическую целостность файла до тех пор, пока она выполняет любое перемещение данных. Служебная программа должна работать на границах сектора транзакций, чтобы сохранить файлы SQL Server нетронутыми.

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

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

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

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

  • Дефрагментация открытого файла может повлиять на кэширование записи и упорядочение. Для программ на основе открытых файлов требуются компоненты пути ввода-вывода; эти компоненты не должны изменять порядок или предполагаемый характер операции записи. Если неработают клиенты протокола записи или WAL, скорее всего, произойдет повреждение базы данных. База данных и все связанные файлы считаются единой сущностью. (Это рассматривается во многих статьях базы знаний Майкрософт, SQL Server электронной документации и различных технических документах.) Все операции записи должны сохранять исходные последовательности упорядочения записи и возможности сквозной записи.

Рекомендации

  • Дефрагментируйте том NTFS, если он не был отформатирован, перед созданием новой базы данных или перемещением существующих баз данных в том.
  • При первом создании базы данных убедитесь, что вы планируете и размер файлов данных SQL и журналов соответствующим образом.
  • Создайте журналы транзакций до SQL Server 2014 года с учетом автоматического увеличения, если он будет использоваться.
  • Дефрагментируйте диск или диски, на которых находятся журналы транзакций. Это предотвратит фрагментацию внешнего файла журнала транзакций. Эта проблема может возникнуть, если в ваших файлах было много автоматического увеличения или если это не выделенный диск, содержащий много баз данных, журналов или других измененных файлов. В этом случае файлы (включая файл журнала транзакций) могут быть чередующимися и фрагментированными.
  • Если вы дефрагментируете диски базы данных, которые являются дисками кластера, на дисках кластера следует настроить приостановку мониторинга работоспособности (также называется режимом обслуживания).
  • Чтобы свести к минимуму фрагментацию, не сжимайте файлы базы данных. Кроме того, вручную вырастите их в размерах, которые минимизирует активность роста.
  • Храните файлы базы данных на выделенных дисках.
  • Выполните полное резервное копирование перед дефрагментацией расположений, содержащих SQL Server базы данных и файлов резервных копий.

Ссылки