Безпечне переміщення та створення нових файлів tempdb


21

Я хотів би знати дві речі:

  • як ви безпечно переміщуєте tempdb з мінімальним простоєм?
  • скільки файлів tempdb вам потрібно?

Це 1 файл на ядро? Отже, quad core = 4 tempdb файли, створюючи три нові?

Відповіді:


22

Щоб перемістити tempdbфайли, вам просто потрібно зробити наступне:

alter database tempdb
modify file
(
    name = tempdev,
    filename = 'C:\YourNewTempdbDir\tempdb.mdf'
)
go

alter database tempdb
modify file
(
    name = templog,
    filename = 'C:\YourNewTempdbDir\templog.ldf'
)
go

Якщо ви хочете додати новий файл tempdb, вам просто потрібно зробити наступне (за умови, що ви хочете додати його до PRIMARYгрупи файлів або створити свій власний):

alter database tempdb
add file
(
    name = tempdb2,
    filename = 'C:\YourNewTempdbDir\Tempdb2.ndf'
)
go

Щоб ці зміни набули чинності, вам потрібно буде перезапустити службу SQL Server. Що стосується скорочення часу простою, ви обмежуєтесь кількістю часу, яке знадобиться для перезавантаження служби . Не потрібно турбуватися про переміщення вже існуючих tempdbфайлів баз даних, оскільки SQL Server завжди відтворює файли, а нові місця / файли будуть створені при запуску служби.

Щодо "1 файлу даних tempdb на ядро", це багато в чому міф. Правильний підхід полягає у відстеженні tempdbвмісту файлів для сторінок вільного простору (PFS), глобальної карти розподілу (GAM) та спільної глобальної карти розподілу (SGAM). Будь ласка, зверніться до цієї статті, щоб отримати запит (альтернативне посилання), який переглядає sys.dm_os_waiting_tasksDMV, щоб побачити, скільки вмісту tempdbфайлів. Тоді вам потрібно відмовитися від цього, замість того, щоб просто зафіксувати tempdbстільки ж файлів, скільки є ядра. Це більш доцільний підхід.


8
  1. Щоб перемістити tempdb, виконайте:

    ALTER DATABASE tempdb 
    MODIFY FILE ( name=tempdev, filename='D:\Newpath\tempdb.mdf') 
    GO
    ALTER DATABASE tempdb 
    MODIFY FILE ( name=templog, filename='D:\Newpath\templog.ldf') 
    GO

    Потім перезапустіть службу SQL Server (MSSQLServer).

  2. Кількість файлів у tempdb - див. Статтю Пола Рендалла: міф про DBA SQL Server на день: (12/30) tempdb завжди повинен мати один файл даних на ядро ​​процесора


4

З порад Microsoft :

Як правило, якщо кількість логічних процесорів менше або дорівнює 8, використовуйте таку ж кількість файлів даних, що і логічні процесори.

Якщо кількість логічних процесорів перевищує 8, використовуйте 8 файлів даних, а потім, якщо суперечка триває, збільшуйте кількість файлів даних на кратні 4 (до кількості логічних процесорів), поки суперечка не зменшиться до прийнятного рівня або зробіть зміни навантаження / код.

Переміщення файлів TempDB - це двоетапний процес:

  1. Скажіть, де SQL ви хочете, щоб переходили ваші нові файли TempDB (у цьому немає простоїв)
  2. Перезапуск на SQL Serverслужбу для зміни вступили в силу (це мінімальний час простою вам потрібно)

Щоб сказати SQL, де створити нові файли TempDB, ви можете використовувати:

DECLARE @newDriveAndFolder VARCHAR(8000);

SET @newDriveAndFolder = 'Z:\YourTempDBfolder';

SELECT [name] AS [Logical Name]
    ,physical_name AS [Current Location]
    ,state_desc AS [Status]
    ,size / 128 AS [Size(MB)] --Number of 8KB pages / 128 = MB
    ,'ALTER DATABASE tempdb MODIFY FILE (NAME = ' + QUOTENAME(f.[name])
    + CHAR(9) /* Tab */
    + ',FILENAME = ''' + @newDriveAndFolder + CHAR(92) /* Backslash */ + f.[name]
    + CASE WHEN f.[type] = 1 /* Log */ THEN '.ldf' ELSE '.mdf' END  + ''''
    + ');'
    AS [Create new TempDB files]
FROM sys.master_files f
WHERE f.database_id = DB_ID(N'tempdb')
ORDER BY f.[type];

Це призведе до створення тверджень T-SQL, які потрібно запустити для переміщення файлів до потрібного drive:\folderвам нового . (натисніть на зображення, щоб збільшити розмір)

Зображення, що показує 2 рядки з деталями про файли TempDB та операторами T-SQL для їх переміщення

Після запуску рухомих операторів ви можете запустити вищезазначений запит ще раз, щоб перевірити, чи Current Locationстовпець тепер відображає ваш новий drive:\folder.

Зображення, що показує нові місця файлів TempDB

Після того як ви задоволені своїми змінами, перезапустіть службу SQL Server .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.