Güvenle taşıma ve yeni tempdb dosyaları oluşturma


21

Bilmek istediğim iki şey:

  • tempdb'yi minimum kesinti süresiyle nasıl güvenle hareket ettirirsiniz?
  • kaç tempdb dosyaya ihtiyacınız var?

Çekirdek başına 1 dosya mı? Yani dört çekirdekli = 4 tempdb dosya, üç yenilerini oluşturmak?

Yanıtlar:


22

tempdbDosyaları taşımak için aşağıdakileri yapmanız yeterlidir:

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

Yeni bir dosya eklemek istiyorsanız tempdb, aşağıdakileri yapmanız gerekir ( PRIMARYdosya grubuna eklemek veya kendi klasörünüzü oluşturmak istemeniz şartıyla ):

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

Bu değişikliklerin etkili olması için SQL Server hizmetini yeniden başlatmanız gerekecek. Yani kadarıyla kesinti minimize gider, bunu servis yeniden başlatma için alacak süreyi kısıtlanır . tempdbSQL Server her zaman dosyaları yeniden oluşturduğundan ve yeni başlatmalar / dosyalar hizmet başlangıcında oluşturulacağından önceden var olan veritabanı dosyalarını taşıma konusunda endişelenmenize gerek yoktur .

"Çekirdek başına 1 tempdb veri dosyası" gelince, bu büyük ölçüde bir efsanedir. Doğru yaklaşım, tempdbSayfa Boş Alan (PFS), Küresel Tahsis Haritası (GAM) ve Paylaşılan Küresel Tahsis Haritası (SGAM) sayfalarındaki dosya çekişliliğini izlemektir . Lütfen ne kadar dosya çekişme olduğunu görmek için DMV'ye bakan bir sorgu (alternatif bağlantı) almak için bu makaleyesys.dm_os_waiting_tasks bakın tempdb. Öyleyse tempdb, çekirdekten olduğu kadar aynı miktarda dosyayla örtmek yerine bundan kurtulmanız gerekir . Bu daha tavsiye edilebilir bir yaklaşım.


8
  1. Tempdb'yi taşımak için aşağıdakileri yürütün:

    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

    Ardından, SQL Server Hizmetinizi (MSSQLServer) yeniden başlatın.

  2. Tempdb'deki dosya sayısı - Paul Randall'ın makalesine bakın: Günde bir SQL Server DBA efsanesi: (12/30) tempdb, işlemci çekirdeği başına her zaman bir veri dosyasına sahip olmalıdır


4

Gönderen Microsoft'un tavsiyesi :

Genel bir kural olarak, mantıksal işlemci sayısı 8’den küçük veya ona eşitse, aynı sayıda veri dosyasını mantıksal işlemci olarak kullanın.

Mantıksal işlemci sayısı 8'den büyükse, 8 veri dosyası kullanın ve ardından çekişme devam ederse, çekişme kabul edilebilir seviyelere indirilinceye veya oluncaya kadar veri dosyalarının sayısını 4 katına (mantıksal işlemci sayısına kadar) artırın iş yüküne / koduna döner.

TempDB dosyalarını taşımak 2 adımlı bir işlemdir:

  1. SQL söyle nereye sen gitmek için yeni TempDB dosyalarını istediğiniz (bu kesinti yoktur)
  2. SQL ServerDeğişikliğin yürürlüğe girmesi için hizmeti yeniden başlatın (bu, ihtiyacınız olan minimum kesintidir )

SQL'e yeni TempDB dosyalarını nerede yaratacağınızı söylemek için şunları kullanabilirsiniz:

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];

Bu, dosyaları drive:\folderistediğiniz yeniye taşımak için çalıştırmanız gereken T-SQL ifadelerini üretecektir . (büyütmek için resme tıklayın)

Onları taşımak için TempDB dosyaları ve T-SQL ifadeleriyle ilgili ayrıntıları gösteren 2 satır gösteren resim

Hareketli ifadelerinizi çalıştırdığınızda, Current Locationsütunun şimdi yeni durumunuzu gösterdiğini kontrol etmek için yukarıdaki sorguyu tekrar çalıştırabilirsiniz drive:\folder.

TempDB dosyalarının yeni konumlarını gösteren resim

Değişikliklerinizden memnunsanız , SQL Server hizmetini yeniden başlatın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.