Дефрагментация дисков базы данных SQL Server
В этой статье приведены некоторые рекомендации по дефрагментации дисков базы данных SQL Server.
Исходная версия продукта: SQL Server
Исходный номер базы знаний: 3195161
Следует ли дефрагментировать диски SQL Server на уровне операционной системы?
Это зависит от состояния фрагментации текущих дисков. Как правило, это не больно, и это может помочь, если вы следуйте меры предосторожности, описанные в разделе "Меры предосторожности" при дефрагментации дисков базы данных SQL Server. Единственное отрицательное заключается в том, что необходимо завершить работу SQL Server , если средство дефрагментации не поддерживает возможности транзакционных данных. Хорошая новость заключается в том, что после запуска дефрагментации вам не придется делать это снова, если у вас нет большого количества автоматических и других файлов, перемещающихся на диски и от них. Убедитесь, что вы понимаете все стратегии кэширования записи, которые использует программа. Кэширование с помощью такой служебной программы может включать кэш без поддержки батареи, и это может нарушить требования к протоколу WAL.
Дополнительная информация
Дефрагментатор диска перемещает все файлы, включая файл базы данных, в смежные кластеры на жестком диске. Это оптимизирует и ускоряет доступ к файлам. За исключением операционной системы Windows NT, если не дефрагментировать жесткий диск, операционная система может перейти в несколько физических расположений на диске, чтобы получить файл базы данных, что делает доступ к файлам более медленным.
Так как доступ к физическим данным является самой дорогой частью запроса ввода-вывода, дефрагментация может обеспечить повышение производительности для SQL Server и других приложений. Блоки, связанные с размещением данных, близкие друг к другу, снижают требования к операции ввода-вывода.
Различные служебные программы дефрагментации доступны на рынке сегодня. Некоторые служебные программы обеспечивают дефрагментацию в открытых файлах, а другие требуют дефрагментации закрытого файла или лучше работают при использовании в условиях закрытого файла. Кроме того, некоторые служебные программы имеют возможности транзакций, в то время как другие не имеют.
Меры предосторожности при дефрагментации дисков базы данных SQL Server
При оценке служебной программы дефрагментации для использования с SQL Server убедитесь, что программа предоставляет возможности транзакционных данных. В частности, выберите программу дефрагментации, которая предоставляет следующие возможности транзакционных данных:
Исходный сектор не считается перенесенным до тех пор, пока новый сектор не будет успешно создан и данные успешно скопированы.
Служебная программа защищает от сбоя системы, например сбоя питания, в безопасном режиме, который позволяет сохранять файлы логически и физически нетронутыми. Чтобы гарантировать целостность данных, при выполнении программы дефрагментации в файле на основе SQL Server настоятельно рекомендуется выполнить тест на основе подключаемого модуля.
Протокол ведения журнала на основе записи (WAL) требует предотвращения перезаписей секторов, чтобы избежать потери данных. Программа должна поддерживать физическую целостность файла до тех пор, пока он выполняет любое перемещение данных. Служебная программа должна работать над границами сектора в транзакционных целях, чтобы сохранить файлы SQL Server нетронутыми.
Программа должна предоставить соответствующие механизмы блокировки, чтобы гарантировать, что файл сохраняет согласованный образ для любых изменений. Например, программа должна убедиться, что исходный сектор не может быть изменен при копировании в новое расположение. Если изменения были разрешены, программа дефрагментации может потерять запись.
Критически важные дефрагментаторы дисков, которые не предоставляют эти возможности транзакционных данных, не следует использовать, если только экземпляр SQL Server, использующий диски для дефрагментации, был завершен, чтобы не дефрагментировать открытые файлы базы данных.
Дефрагментация open-file вызывает несколько возможных проблем, которые дефрагментация закрытого файла обычно не выполняется:
Дефрагментация open-file влияет на производительность. Служебные программы дефрагментации могут блокировать разделы файла, предотвращая выполнение операции чтения или записи SQL Server. Это может повлиять на параллелизм сервера под управлением SQL Server. Обратитесь к производителю средства дефрагментации, чтобы узнать, как заблокированы файлы и как это может повлиять на параллелизм SQL Server.
Дефрагментация open-file может повлиять на кэширование и упорядочение записи. Для служебных программ на основе открытых файлов требуются компоненты пути ввода-вывода; Эти компоненты не должны изменять порядок или предполагаемый характер операции записи. Если клиент протокола WAL или записи не работает, скорее всего, произойдет повреждение базы данных. База данных и все связанные файлы считаются одной сущностью. (Это рассматривается во многих статьях базы знаний Майкрософт, электронной документации ПО SQL Server и различных технических документах.) Все записи должны хранить исходные последовательности упорядочивания записи и возможности записи.
Рекомендации
- Дефрагментируйте том NTFS, если он не был отформатирован, прежде чем создать новую базу данных или переместить существующие базы данных в том.
- Убедитесь, что вы планируете и размер данных SQL и файлы журналов соответствующим образом при создании базы данных.
- Создайте журналы транзакций до SQL Server 2014 с автоматическим увеличением, если он будет использоваться.
- Дефрагментируйте диск или диски, на которых находятся журналы транзакций. Это позволит предотвратить фрагментацию внешнего файла журнала транзакций. Эта проблема может возникнуть, если у ваших файлов было много автоматического увеличения или когда это не выделенный диск, содержащий множество баз данных, журналов или других измененных файлов. В этой ситуации файлы (включая файл журнала транзакций) могут быть переключлены и фрагментированы.
- Если вы дефрагментируете диски базы данных, которые являются дисками кластера, диски кластера должны быть настроены для приостановки мониторинга работоспособности (также называемого режимом обслуживания).
- Чтобы свести к минимуму фрагментацию, не сжимайте файлы базы данных. Кроме того, вручную выращивайте их в размерах, которые свести к минимуму активность роста.
- Сохраняйте файлы базы данных на выделенных дисках.
- Выполните полную резервную копию перед дефрагментацией этих расположений, содержащих файлы базы данных и резервных копий SQL Server.