Макет MS SQL для лучшей производительности

Макет MS SQL для лучшей производительности

Мы приобрели новый сервер, который будет работать как бэкэнд MS SQL. Мне интересно узнать, какая настройка будет для него лучшей.

Сервер — Dell R710, на нем установлено 6 жестких дисков: 2x 74 ГБ 15k и 4x 146 ГБ 15k.

В настоящее время он настроен в конфигурации RAID 1/Raid10.

Мой вопрос: куда (в какой массив) следует поместить следующее?

TEMPDB (также их количество, размер и рост) Системные базы данных (главная, модельная и т. д.) MDF-файлы приложений LDF-файлы приложений Файл системной страницы

Операционная система уже установлена ​​на RAID1.

решение1

Я бы поместил ОС, файл подкачки и LDF-файлы в массив RAID1. Все остальное — в массив RAID10.

Если вы не используете Windows 2008, убедитесь, что ваши разделы правильно выровнены:

http://msdn.microsoft.com/en-us/library/dd758814.aspx

Как уже объяснялось, добавьте по одному файлу TEMPDB на каждое ядро ​​процессора — сделайте их все одинакового размера.

Определите размер файлов журналов соответствующим образом и создайте их за один шаг.

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

решение2

TempDB

Некоторое время назад я провел исследование по оптимизации tempdb и ответил на свой собственный вопрос.вопрос на Stackoverflow. Вот что я узнал.

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

Конфигурация физического диска

tempdb должна находиться на своемсобственные выделенные физические диски. Это позволяет отделить транзакции ввода-вывода от остальных томов на SQL Server.

Чтобы переместить tempdb на новый диск, используйте ALTER DATABASE. Это ключевая команда T-SQL для выполнения этой операции. Microsoft предлагает хороший пример в SQL Server 2005 Books Online. Название статьи — ALTER DATABASE (Transact-SQL), а конкретный раздел —«G. Перемещение tempdb в новое место».

Tempdb — это база данных с очень высокой частотой записи. Поэтому массив RAID 5 — неподходящее место для нее. Вам следует поместить tempdbна массиве RAID 1 или RAID 10поскольку они оптимизированы для приложений с высокой записью. Если вы можете позволить себе дополнительные массивы RAID 1 или RAID 10 для каждого физического файла базы данных для tempdb, вы получите повышенную производительность.

Файлы базы данных

Вы должны иметьодин физический файл на ядро ​​ЦП на сервере. Итак, если у вас двухчиповый двухъядерный сервер, у вас должно быть четыре физических файла базы данных для базы данных tempdb. При добавлении дополнительных файлов базы данных важно настроить файлы натот же начальный размер и с теми же настройками ростаТаким образом, SQL Server будет записывать данные в файлы максимально равномерно.

Размер файла базы данных

Размер базы данных tempdb может повлиять на производительность системы. Например, если размер, определенный для tempdb, слишком мал, часть нагрузки по обработке данных может бытьзанят автоматическим увеличением tempdb до размера, необходимого для поддержки рабочей нагрузки, каждый раз при перезапуске экземпляра SQL Server. Вы можете избежать этих накладных расходов, увеличив размеры данных tempdb и файла журнала.

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

  1. Включить автоувеличение для tempdb(в тестовой среде!).
  2. Выполняйте отдельные запросы или файлы трассировки рабочей нагрузки и следите за использованием пространства tempdb.
  3. Выполнять операции по обслуживанию индексов, такие как перестроение индексов и мониторинг пространства tempdb.
  4. Используйте значения использования пространства из предыдущих шагов, чтобы спрогнозировать общее использование рабочей нагрузки; скорректируйте это значение с учетом прогнозируемой параллельной активности, а затем соответствующим образом задайте размер tempdb.

Рекомендации по минимальному размеру для tempdb следующие:

  Размер среды Размер базы данных (МБ) Размер журнала (МБ)
  ----------- ------------ -----------
  Маленький 1024 256
  Средний 5120 1024
  Большой 10024 2048

Настройки базы данных

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

Отказ от ответственности: Настройки следует менять с осторожностью. В зависимости от типа нагрузки, которую вы оказываете на свою tempdb, изменение настроек может негативно повлиять на производительность системы.

Для достижения оптимальной производительности tempdb следуйте инструкциям и рекомендациям, приведенным вОптимизация производительности tempdb.

Как контролировать использование tempdb?

Бегнедостаточно места на диске в tempdbможетвызвать значительные нарушенияв производственной среде SQL Server и может помешать запущенным приложениям завершить операции.

Вы можете использовать sys.dm_db_file_space_usageдинамическое представление управления для мониторинга дискового пространства, используемого этими функциями в файлах tempdb. Кроме того, для мониторинга выделения или освобождения страниц в tempdb на уровне сеанса или задачи вы можете использовать sys.dm_db_session_space_usageи sys.dm_db_task_space_usageдинамические представления управления.

Эти представления могут использоваться для определения больших запросов, временных таблиц или табличных переменных, которые используют много дискового пространства tempdb. Также есть несколько счетчиков, которые могут использоваться для мониторинга свободного пространства, доступного в tempdb, а также ресурсов, которые используют tempdb.

Ссылки:

решение3

Простой общий ответ: все, что связано с высоким уровнем ввода-вывода, должно быть помещено в группу дисков RAID 10. Также вы определились со стратегией разделов или с этой частью вопроса?

Поэтому в вашей первой группе дисков я бы, вероятно, создал один раздел (около 70 ГБ полезной памяти) и разместил на нем ОС и приложение MSSQL.

На втором я бы создал следующие разделы

1) раздел для файла подкачки (зависит от объема имеющейся у вас памяти, но около 10-20 ГБ 2) раздел для файлов журнала транзакций 100 ГБ 3) раздел для файлов данных 100 ГБ

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

Интересно, что я сейчас работаю на той же машине, только использую Linux и Oracle. Вы из параллельной вселенной?

Джеймс

решение4

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

Чтобы дать больше информации, этот сервер не будет под большой нагрузкой, на самом деле это бэкэнд управления исходным кодом. Покупка сервера и DAS или ISCSI SAN или чего-то еще была бы излишней, и стоимость уничтожила бы шансы проекта. Я работаю в SMB примерно из 100 человек, поэтому наш ИТ-бюджет ограничен, особенно сейчас.

@mrdenny

Мы задали вопрос поставщику ПО, который рекомендовал эту конфигурацию. Мы купили его, когда поставили квест, который я задал здесь, и они сказали разместить журнал, базы данных и tempdbs на разделе raid 10. Я не большой специалист по базам данных (правда?), но это прозвучало подозрительно, так как почти все знают, что не следует смешивать ldfs и mdfs на одних и тех же шпинделях.

@splattne — Спасибо за информацию о tempdb, она пригодится для этой и будущих установок SQL.

@SuperCoolMoss - Я поговорил с несколькими людьми из моей собственной сети друзей по ИТ, и они согласны с вами в этом. ОС, файл подкачки и LDF на RAID1, а tempdb и MDF на RAID10

Спасибо всем, кто прокомментировал.

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

  1. Используйте избыточные диски (довольно очевидно)
  2. Используйте быстрые диски (SCSI/SAS, 15k, если возможно)
  3. Разделите файлы ldf и mdf на разные шпиндели.
  4. Не используйте RAID5 для ldfs или tempdbs (используйте RAID10 или RAID1)
  5. Поместите базу данных tempdb на самые быстрые диски; если возможно, отделите базы данных tempdb от дисков ldf и mdf.

Пожалуйста, не стесняйтесь делиться своей измененной версией этого списка.

Связанный контент