SQL Server 2005/2008 — несколько файловых групп?

Я разработчик в душе, но время от времени у клиента нет достойного администратора баз данных для решения этих проблем, поэтому меня вызывают, чтобы решить....

Каковы ваши стратегии/наилучшие методы работы с базой данных SQL Server разумного размера (большей, чем Northwind или AdventureWorks) — используете ли вы несколько файловых групп? Если да: сколько? И почему?

Каковы ваши критерии, чтобы решить, когда отойти от подхода «одна файловая группа для всего»:

  • размер базы данных?
  • сложность базы данных?
  • требования к доступности/надежности?
  • что еще?

Если вы используете несколько файловых групп, сколько вы используете? Один для данных, один для индекса, один для журнала? Несколько (сколько) для данных? Каковы причины вашего выбора - почему вы используете именно такое количество файловых групп :-)


person marc_s    schedule 13.02.2009    source источник


Ответы (6)


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

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

Имейте в виду, что MDF технически работает аналогично разделу жесткого диска, когда речь идет о хранении данных. MDF — это файл случайного чтения, тогда как LDF — файл последовательного чтения. Поэтому разделение их на отдельные диски приводит к огромному приросту производительности, если только не используются твердотельные накопители, в этом случае прирост все равно есть.

person BinaryMisfit    schedule 13.02.2009

Существует по крайней мере ОДНА веская причина для создания нескольких (по крайней мере двух) файловых групп в SQL Server 2008: если вы хотите использовать функцию FILESTREAM, у вас должна быть выделенная и настраиваемая файловая группа для ваших данных FILESTREAM. :-)

Марк

person marc_s    schedule 10.03.2009

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

person Community    schedule 01.03.2010

Как правило, у вас должна быть только одна основная файловая группа и один файл журнала.

Иногда, когда у вас очень статические данные, вы можете создать файловую группу SECOND, содержащую эти статические данные. Затем вы можете сделать файловую группу ТОЛЬКО ДЛЯ ЧТЕНИЯ, что улучшит вашу производительность. В конце концов, это довольно статические данные. Это не стоит того, если у вас небольшое количество строк только для чтения (например, значения таблицы поиска). Но для некоторых вещей (например, архивного контента, который все еще можно прочитать) это может быть отличным вариантом.

Я получил эту идею от этого сообщение в блоге.

ХТН.

person Pure.Krome    schedule 03.04.2009

Я работал с большим количеством баз данных, и единственный раз, когда мы использовали файловые группы, был случай, когда на диске не хватало места, и нам пришлось создать новую файловую группу на другом шпинделе. Я уверен, что есть веские причины, почему это не идеально, но такова была реальность.

person MrTelly    schedule 13.02.2009

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

person Der U    schedule 30.04.2013