Tempdb, Microsoft SQL Server’daki sistem veritabanlarından biridir. Geçici kullanıcı nesnelerini, satır sürüm oluşturma bilgilerini ve SQL Server motoru tarafından oluşturulan dahili nesneleri tutan genel bir kaynaktır. SQL Server, örnek her başlatıldığında TempDB’nin temiz bir kopyasını oluşturur. Bunu neden önemsemelisiniz? Tempdb, tüm SQL Server’ın performansını etkiler. Birçok arka plan işlemi TempDB kullanır. Optimum performans göstermezse, tüm veritabanları…
Tempdb, Microsoft SQL Server’daki sistem veritabanlarından biridir.
Geçici kullanıcı nesnelerini, satır sürüm oluşturma bilgilerini ve SQL Server motoru tarafından oluşturulan dahili nesneleri tutan genel bir kaynaktır.
SQL Server, örnek her başlatıldığında TempDB’nin temiz bir kopyasını oluşturur.
Bunu neden önemsemelisiniz?
Tempdb, tüm SQL Server’ın performansını etkiler.
Birçok arka plan işlemi TempDB kullanır.
Optimum performans göstermezse, tüm veritabanları etkilenir ve tüm sunucuyu yavaşlatır.
En iyi performans için TempDB nasıl ayarlanır?
Veri dosyalarının sayısını kontrol edin
Varsayılan olarak SQL Server yapılandırması, TempDB için tek bir veri dosyasına sahiptir.
Microsoft disk bant genişliğini en üst düzeye çıkarmak ve çekişmeyi azaltmak için veri dosyalarının sayısını artırmanızı önerir.
Sunucunuz için değişiklik komut dosyasını doğrulamak ve oluşturmak için aşağıdaki komut dosyasını kullanabilirsiniz.
- DECLARE @check BIT
- SET @check = 0 –For information set 0, for change 1
- DECLARE @BASEPATH NVARCHAR(300)
- DECLARE @SQL_SCRIPT NVARCHAR(1000)
- DECLARE @CORES INT
- DECLARE @FILECOUNT INT
- DECLARE @SIZE INT
- DECLARE @GROWTH INT
- DECLARE @ISPERCENT INT
- — TempDB mdf count equal logical cpu count
- SELECT @CORES = cpu_count FROM sys.dm_os_sys_info
- PRINT ‘Logical CPU count ‘ + CAST(@CORES AS NVARCHAR(100))
- IF @CORES BETWEEN 9 AND 31 SET @CORES = @CORES / 2
- IF @CORES >= 32 SET @CORES = @CORES / 4
- –Check and set tempdb files count are multiples of 4
- IF @CORES > 8 SET @CORES = @CORES – (@CORES % 4)
- SET @BASEPATH = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N’tempdb.mdf’, LOWER(physical_name)) – 1) DataFileLocation
- FROM master.sys.master_files
- WHERE database_id = 2 AND FILE_ID = 1)
- SET @FILECOUNT = (SELECT COUNT(*)
- FROM master.sys.master_files
- WHERE database_id = 2 AND TYPE_DESC = N’ROWS’)
- SELECT @SIZE = size FROM master.sys.master_files WHERE database_id = 2 AND FILE_ID = 1
- SET @SIZE = @SIZE / 128
- SELECT @GROWTH = growth FROM master.sys.master_files WHERE database_id = 2 AND FILE_ID = 1
- SELECT @ISPERCENT = is_percent_growth FROM master.sys.master_files WHERE database_id = 2 AND FILE_ID = 1
- IF @ISPERCENT = 0 SET @GROWTH = @GROWTH * 8
- –Current situation
- PRINT ‘Needed ‘ + CAST(@CORES AS NVARCHAR(100)) + ‘ TempDB data files, now there is ‘ + CAST(@FILECOUNT AS NVARCHAR(100)) + CHAR(10) + CHAR(13)
- IF @check = 1 AND @CORES > @FILECOUNT PRINT ‘Commands listed below will be executed’ + CHAR(10) + CHAR(13)
- IF @check = 0 AND @CORES > @FILECOUNT PRINT ‘Commands listed below will NOT be executed’ + CHAR(10) + CHAR(13)
- WHILE @CORES > @FILECOUNT
- BEGIN
- SET @SQL_SCRIPT = N’ALTER DATABASE tempdb
- ADD FILE (
- FILENAME = ”’ + @BASEPATH + ‘tempdb’ + RTRIM(CAST(@CORES AS NCHAR)) + ‘.ndf”,
- NAME = tempdev’ + RTRIM(CAST(@CORES AS NCHAR)) + ‘,
- SIZE = ‘ + RTRIM(CAST(@SIZE AS NCHAR)) + ‘MB,
- FILEGROWTH = ‘ + RTRIM(CAST(@GROWTH AS NCHAR))
- IF @ISPERCENT = 1 SET @SQL_SCRIPT = @SQL_SCRIPT + ‘%’ ELSE SET @SQL_SCRIPT = @SQL_SCRIPT + ‘KB’
- SET @SQL_SCRIPT = @SQL_SCRIPT + ‘)’
- IF @check = 1 EXEC(@SQL_SCRIPT)
- PRINT @SQL_SCRIPT
- SET @CORES = @CORES – 1
- END
Not: SQL Server 2016, CPU çekirdeği sayısını algılayan ve otomatik olarak uygun miktarda TempDB veri dosyası oluşturan yerleşik bir özelliğe sahiptir.
Boyut ve otomatik büyüme ayarlarını gözden geçirin
Doğru bir boyut belirleyin (10 GB ile başlayabilirsiniz) ve otomatik büyütme ayarlarını sabit bir değere ayarlayın. Yüzde kullanmayın.
Çoğu yüksek performanslı SQL sunucusu, tempdb’yi ayrılmış bir disk sürücüsüne yerleştirir.
T1117 ve T1118 izleme işaretlerini kullanın
Tempdb’nin daha hızlı çalışmasına yardımcı olacaklar.
Not: Microsoft, bu davranışı SQL Server 2016 ve daha yeni sürümlerde standart hale getirdi.
Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz!