Советы по оптимизации базы данных tempdb для нового сервера? - PullRequest
16 голосов
/ 11 декабря 2008

Я планирую новую установку SQL Server 2005 на новую машину, которую я должен заказать. Я знаю, что настройка tempdb очень важна для общей производительности экземпляра SQL Server.

Я читал, что лучше всего создавать столько файлов tempdb, сколько у вас процессоров (или ядер?). Это верно? Есть ли другие рекомендации, например, на конфигурацию установки жесткого диска / RAID, на которую стоит обратить внимание?

Спасибо!

Ответы [ 5 ]

31 голосов
/ 12 декабря 2008

Вот что я исследовал из разных источников.

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

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

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

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

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

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

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

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

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

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

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

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

   Envir. Size  DB Size (MB)  Log Size (MB)
   -----------  ------------  -------------
   Small                1024            256
   Medium               5120           1024
   Large               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.

Ссылки:

6 голосов
/ 11 декабря 2008

Если бы мне пришлось выбрать одного человека, которому я доверяю, для совета по настройке сервера, это был бы Денни Черри. Он написал статью, объясняющую это.

http://searchsqlserver.techtarget.com/tip/0,289483,sid87_gci1307255,00.html

2 голосов
/ 11 декабря 2008

См. Также эту публикацию Журнал транзакций SQL Server RAID , в котором содержится обсуждение структуры сервера, затрагивающее некоторые проблемы, связанные с tempdb.

2 голосов
/ 11 декабря 2008

Из того, что я прочитал, лучше всего поместить tempDB на собственный физический диск (или массив). Для максимальной скорости вы можете добавить массив raid 0. Однако, если один из дисков выйдет из строя, сервер БД станет неработоспособным. Если вы хотите больше избыточности, поместите его в массив raid 10. Реальный ключ, кажется, отделяет его от других баз данных, потому что в TempDB может быть такая большая активность.

Как далеко вы зайдете, зависит от других баз данных на сервере и от того, много ли они работают с временными таблицами и т. Д.

Я не слышал ничего о нескольких файлах в зависимости от количества процессоров или ядер.

0 голосов
/ 06 марта 2013

Я бы порекомендовал создавать файлы данных с количеством ядер от 1/2 до 1/4 *. Вы должны поместить эти файлы на самый быстрый диск, который у вас есть

для получения дополнительной информации вы можете посмотреть здесь: Конфигурация базы данных SQL Server

...