Назад | Перейти на главную страницу

Рекомендуемая настройка диска / раздела для SQL Server

Мне нужен совет относительно того, как лучше всего настроить диски / разделы для SQL Server. Вот некоторые из моих основных опасений:

Как следует разделять файлы SQL (файлы данных, журналы, временные файлы)?

Что лучше: сделать RAID-массивы на большом количестве жестких дисков и разделить пространство или создать несколько RAID-массивов с меньшим количеством дисков для каждого RAID-массива?

Должны ли файлы данных и журналов быть на другом типе RAID?

Должны ли базы данных по умолчанию (master, msdb и т. Д.) Быть расположены на C: или они должны быть в том же месте, что и другие файлы данных / журналов?

Вот хороший пост в блоге: http://sqlserveradvisor.blogspot.com/2009/03/sql-server-disk-configuration.html

Официальный документ по выравниванию дисков: http://msdn.microsoft.com/en-us/library/dd758814.aspx

Короче говоря, ваша ОС должна быть на RAID 1, ваши файлы данных - на RAID 10 (предпочтительно), а файлы журналов - на RAID 1.

Статья о производительности SQL: http://www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx

PDF в топ-10 лучших советов по производительности: http://www.stlssug.org/docs/Best_Practices_for_Performance.pdf

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

MS говорит, почему для tempdb: http://msdn.microsoft.com/en-us/library/ms175527.aspx

Это большой вопрос, который зависит от обстоятельств.

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

Первое, что вам нужно рассмотреть, это какова рабочая нагрузка в различных базах данных - OLTP (чтение / запись) или DSS / DW (в основном чтение). Для рабочих нагрузок чтения / записи вам следует обратить внимание на RAID 1 или RAID 10 (RAID 1 + 0), поскольку они обеспечивают избыточность и отличную производительность чтения / записи. Для рабочих нагрузок, связанных в основном с чтением, можно использовать RAID 5. Причина, по которой RAID 5 не следует использовать для рабочих нагрузок чтения / записи, заключается в том, что вы платите за производительность при записи.

Журналы транзакций по самой своей природе предназначены для чтения / записи (или в основном для записи, в зависимости от того, используете ли вы журнал транзакций для чего-либо - например, для резервного копирования журналов или репликации), и поэтому никогда не должны размещаться на RAID 5.

Это означает, что для некоторых баз данных и рабочих нагрузок у вас могут быть файлы данных на RAID 5 и файлы журналов на RAID 1/10, а для других баз данных у вас может быть все на RAID 1/10. Далее, если у вас многораздельная база данных, она может содержать некоторые данные, предназначенные в основном для чтения, и некоторые данные для чтения / записи, возможно, даже в пределах одной таблицы. Его можно разделить на отдельные файловые группы, а затем каждую файловую группу поместить на соответствующий уровень RAID.

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

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

Вот ссылка на технический документ, который я помог написать, и оно должно вам помочь: Проектирование физических хранилищ базы данных. Также убедитесь, что ваша подсистема ввода-вывода может справиться с ожидаемой рабочей нагрузкой - см. Этот технический документ: Рекомендации по вводу-выводу перед развертыванием. Наконец, убедитесь, что вы используете правильный размер полосы RAID (обычно 64 КБ или выше в более новых системах), правильный размер единицы распределения NTFS (обычно 64 КБ) и что в системах до Windows Server 2008 вы правильно установили смещение раздела диска. . Для получения информации об этом, а также указателей на дополнительную информацию о них и о том, почему вы должны настроить их таким образом, см. Это сообщение в блоге: Правильно ли установлены смещения разделов диска, размеры полос RAID и единицы распределения NTFS?.

Линия Bototm: знайте свою рабочую нагрузку и возможности подсистемы ввода-вывода, а затем выполняйте ее соответствующим образом.

Надеюсь, это будет вам полезно.

PS Что касается tempdb, это большая баня червей по поводу того, как вы должны его настраивать, и там есть все виды противоречивой информации. Я написал подробное сообщение в блоге о конфигурации файла данных tempdb по адресу Заблуждения относительно TF 1118.

Краткий ответ для серверов, которые я настраивал, всегда был

Журналы на отдельных физических дисках, рейд 1 или 10 (чередование + зеркалирование)

База данных на собственных дисках, в зависимости от требований к производительности обычно RAID5

Много кеша на рейд-контроллере (ах)

Желательно снова поместить вашу ОС и файл подкачки Windows в отдельный массив, обычно просто зеркало (Raid 1). Это позволяет разделить все операции записи, поэтому высокая производительность не тянет все вниз.

То, что я испытал в прошлом, заключается в том, что запись в базу данных + запись в журнал + запись в файл подкачки будет тормозить массив Raid5, и производительность упадет до чертиков. Проблема в том, что ваша производительность будет в порядке при тестировании, разработке и т. Д. Но когда вы начнете производство и использование будет стремительно расти, эта проблема появится «неожиданно», и жалобы пользователей резко возрастут.

Здесь есть намного лучшие ребята из MSSQL, чем я, но в целом я бы предложил следующее;

ОС и код на C: - это должны быть локальные диски, должна быть пара массивов RAID1 - для этого мы используем два 2,5-дюймовых диска SAS 146 ГБ со скоростью вращения 10 оборотов в минуту, но вы можете использовать 2 диска SATA 7.2. Данные должны быть на довольно быстром (10krpm или лучше) массиве RAID 1/10, 5/50/6/60 любого размера, который вам нужен - мы храним наши на FC SAN LUN, обычно на дисковой группе уровня 2 / 10krpm. . Журналы должны быть на отдельной ОЧЕНЬ БЫСТРОЙ (15krpm) маленькой (10GB или меньше?) Паре массивов RAID 1 - мы храним наши на FC SAN LUN, обычно на очень маленькой дисковой группе tier1 / 15krpm или на tier0 / ssd группа.

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

Мы храним нашу master / tempdb с нашими обычными базами данных, но вы можете разбить его на отдельный LUN массива данных.

Надеюсь это поможет.