TempDB dibagikan di antara semua database pada instance. Jadi kadang-kadang bisa ada pertengkaran dalam TempDB untuk halaman-halaman tertentu: SGAM , GAM , dan PFS . Singkatnya, halaman-halaman ini melacak apa yang telah digunakan di TempDB sejauh ini, dan di mana ruang tersedia untuk penggunaan baru.
Biasanya, ini ditangani dengan menambahkan beberapa file data ke TempDB. Ada beberapa filosofi yang berbeda mengenai jumlah yang benar, tetapi semua setuju Anda harus memiliki lebih dari satu.
Berikut beberapa pertanyaan untuk dijalankan ...
Yang ini akan menunjukkan kepada Anda berapa banyak file yang dimiliki TempDB dan di mana mereka berada.
-- tempdb layout
use tempdb
go
exec sp_helpfile
go
Yang ini akan menunjukkan berapa banyak CPU dan core yang Anda miliki.
-- cores and hyperthreading
select cpu_count, hyperthread_ratio
from sys.dm_os_sys_info
go
Yang ini akan menunjukkan kepada Anda berapa banyak NUMA simpul dan inti per NUMA simpul yang Anda miliki.
-- numa nodes and schedulers
select node_id, online_scheduler_count
from sys.dm_os_nodes
order by node_id
go
Yang ini akan menunjukkan kepada Anda halaman mana yang sedang menunggu di TempDB.
-- see if anything is waiting on tempdb
select *
from sys.dm_os_waiting_tasks
where resource_description like '2:%'
go
Berikut adalah artikel yang sedikit lebih mendalam tentang masalah pertikaian halaman.
OK, jadi sekarang bagian filosofi ... :-)
Bagi saya sendiri, jika saya menggunakan sistem SMP , saya hanya ingin file sebanyak setengah dari total core .
Jika saya menggunakan sistem NUMA , maka saya hanya ingin file sebanyak core per node NUMA .
Namun, saya jarang melihat peningkatan karena memiliki lebih dari empat file untuk TempDB. Jadi saya biasanya mulai dengan empat dan memonitor pertengkaran seperti yang dijelaskan dalam artikel yang saya tautkan.
Jika saya terus melihat masalah, maka saya akan menambahkan dua lagi. Periksa lagi, tambahkan lagi, dan ulangi sampai pertengkaran hilang.