Я не администратор сервера. Так что будь нежным. Но я только что был на конференции, и на одном из учебных занятий инструктор объяснил некоторые передовые практики SQL DBA. Одним из них было разделение Mdf, Ldf и TempDB на разные диски для повышения производительности.
Теперь у нас в офисе есть сан. Системные администраторы создали 3 диска: один для данных, один для журналов и один для TempDB.
Моя интуиция подсказывает мне, что усилия были напрасными ... не так ли?
Я не знаю многих деталей, но, если вы спросите, я постараюсь заполнить все спецификации, необходимые для точного ответа на этот вопрос.
Файлы базы данных, файлы журнала транзакций и временные файлы данных обычно размещаются на разных томах, чтобы уменьшить конкуренцию ввода-вывода между ними, и это также можно расширить, создав несколько файлов данных для каждой базы данных, распределяя их по еще большему количеству томов и сообщая SQL Сервер, на котором должны храниться определенные таблицы и индексы; так что да, это обычная практика для администраторов баз данных, которая действительно может привести к значительному увеличению производительности.
Это также правда, что это может стать совершенно бессмысленным при использовании SAN; в зависимости от того, как эта SAN была фактически настроена, разные LUN (тома) могут быть сопоставлены с любым набором физических дисков, RAID-массивов и контроллеров хранения, и, таким образом, конкуренция ввода-вывода между двумя LUN может варьироваться от «полностью изолированной» до «эффективно использовать одни и те же диски». Таким образом, если администратор базы данных не работает в тесном сотрудничестве с администратором хранилища, запрос разных LUN для распределения файлов базы данных между ними действительно может стать пустой тратой усилий.
Однако разделение файлов базы данных и файлов журнала транзакций считается наилучшей практикой не только с точки зрения производительности, но и с точки зрения надежности: из-за того, что SQL Server использует механизм хранения транзакций (и аналогичные механизмы, используемые практически любой существующей СУБД), файлы журнала может использоваться для воспроизведения транзакций в сценарии аварийного восстановления, позволяя системе восстановить то, что произошло после была сделана последняя резервная копия. Но для того, чтобы это работало, вы не хотите одновременно терять файлы данных и файлы журналов, поэтому лучше хотя бы разместить их на разных томах, даже если от этого не будет прироста производительности.
Причина, по которой вы отделяете файлы базы данных от файлов журнала, заключается в том, что доступ к базе данных является произвольным, а доступ к журналам - последовательным. Лучшая практика гласит, что вы не смешиваете эти два типа ввода-вывода на одном диске, независимо от того, как этот диск представлен на сервере (локальный, DAS, iSCSI и т. Д.). Так что нет, это не было потраченным зря усилием.
Что касается tempdb, похоже, Microsoft рекомендует отделить его от баз данных:
http://msdn.microsoft.com/en-us/library/ms175527(v=sql.105).aspx
Ввод-вывод на диске для журналов будет только последовательным, если он содержит только один файл журнала. Добавьте еще один, и у вас будет случайный ввод / вывод.