Apa hot spotting dalam konteks penambahan file ke tempdb?

12

Saya mencoba mencari tahu apakah mungkin untuk menambahkan file tempdb ke SQL Server tanpa harus me-restart layanan SQL Server. Saya melihat jawaban ini di sini di Administrator Database:

Dan satu jawaban menyatakan:

ADD - tidak diperlukan pemadaman. Meskipun seperti yang ditunjukkan Sean dari Microsoft, SQL akan lebih suka menggunakan file dengan isi lebih rendah. Jika Anda beralih dari 1 file data dan menambahkan lebih banyak, maka SQL akan menggunakan yang baru untuk sementara waktu, tetapi kinerja Anda tidak akan lebih buruk daripada hanya memiliki satu file. Namun, jika Anda sudah memiliki 2+ dan menambahkan satu lagi, maka itu akan menjadi hotspot pada yang baru dan menurunkan kinerja.

Namun, komentar memperingatkan hal berikut:

Saya akan menambahkan bagian "Tambahkan": "Tambahkan: Tidak, tetapi Anda kemungkinan besar akan tidak seimbang sehingga Anda akan menemukan bercak panas yang bisa membuat segalanya menjadi lebih buruk."

Saya memiliki pertanyaan-pertanyaan berikut tentang komentar itu tetapi diinstruksikan untuk mengajukan pertanyaan-pertanyaan itu dalam pertanyaan baru saya sendiri (yang ini) daripada bertanya kepada komentator melalui komentar dalam jawaban pertanyaan itu.

Secara khusus:

  1. Apa itu bercak panas? (Saya mendapat beberapa info melalui Google tetapi tidak secara rinci apa yang terjadi dengan hotspot di tempdb setelah menambahkan file)
  2. Bagaimana dengan bercak panas membuat segalanya lebih buruk di tempdb?
  3. Hal spesifik apa dalam DB yang akan jauh lebih buruk?
jrdevdba
sumber

Jawaban:

16
  1. Apa itu bercak panas?

    "Hot spotting" dalam konteks ini berarti bahwa, walaupun tempdb memiliki banyak file, semua pekerjaan I / O dilakukan dalam satu file. Jika tempdb cukup sibuk untuk membenarkan penambahan file, ketidakseimbangan yang menyebabkan hot-spotting (karena pengisian proporsional ) akan berumur pendek, jadi saya pikir peringatannya mungkin sedikit ayam kecil. Dalam pengalaman saya, sih.

  2. Bagaimana dengan bercak panas membuat segalanya lebih buruk di tempdb?

    Saya pikir itu dianggap lebih buruk di tempdb karena butuh beban aktivitas tulis di sebagian besar beban kerja. Anda tentu saja dapat mengalami masalah serupa di basis data pengguna, tetapi karena Anda sudah mencoba menyelesaikan masalah di tempdb ...

  3. Hal spesifik apa dalam DB yang akan jauh lebih buruk?

    Menulis waktu, kebanyakan. Bayangkan setiap orang mencoba menggunakan ATM yang sama, bahkan ketika ada 7 ATM lain di sekitarnya. Hanya begitu banyak yang dapat ditulis kapan saja; yang lainnya harus menunggu. Dengan lebih banyak file (dan inti yang cukup untuk menjadwalkan pekerjaan), I / O dapat disebarkan lebih merata.

    Hanya memastikan:

Aaron Bertrand
sumber
10
  1. Apa itu bercak panas?

Aaron benar dan saya tidak akan mengulangi apa yang dia katakan di atas, namun ini bukan hanya tentang disk IO. Bagian utama yang sebagian besar orang memiliki masalah dengan di TempDB adalah karena pertentangan pada struktur pelacakan tertentu.

Karena memiliki beberapa file tempdb memungkinkan algoritma isi dan bundar robin proporsional secara efektif terjadi menjadi "adil" di seluruh alokasi, menambahkan file baru tanpa alokasi membuang sedikit. Saya tidak setuju bahwa ini peringatan "sedikit ayam" (lihat pembaruan produk di bawah) jika Anda mulai melihat PAGELATCH_*menunggu file baru tersebut dan tidak banyak atau ada pada file lain. Ini umumnya terjadi pada sistem yang memiliki aktivitas TempDB tinggi dan sudah memiliki lebih dari satu file.

Harap dicatat bahwa ada opsi dalam SQL Server 2019 untuk mengubah beberapa tabel sistem yang mendasarinya ke dalam tabel di-memori yang dapat memiliki peningkatan karena objek di-memori dialokasikan secara berbeda dari tabel yang dipanggang disk. Tabel berbasis disk adalah tabel tradisional yang telah kita semua kerjakan selama ini. SQL Server 2014 memperkenalkan tabel yang dioptimalkan memori . SQL Server 2019 dapat menangani beberapa alokasi metadata dalam tabel yang dioptimalkan memori.

Perubahan lain dibuat di SQL Server 2019 untuk membantu dengan perubahan PFS bersamaan, yang umumnya menjadi anggapan struktur in-memory dalam alokasi sedang PAGELATCH_*menunggu.

  1. Bagaimana dengan bercak panas membuat segalanya lebih buruk di tempdb?

Tidak ada yang IMHO. Ya, TempDB memiliki lebih banyak item yang dapat menyebabkan penulisan padanya tanpa digunakan secara langsung sehingga dapat menghambat beberapa item. Namun, database pengguna yang sangat sibuk dalam hal tingkat perubahan data sama buruknya. Ini tidak terbatas hanya pada TempDB.

  1. Hal spesifik apa dalam DB yang akan jauh lebih buruk?

Saya sangat menyukai analogi Harun! Itulah inti dari apa yang terjadi. Yang benar-benar menjadi lebih buruk adalah alokasi dan pelacakan ruang untuk objek dalam database. Jika basis data pengguna Anda sebagian besar statis (tingkat perubahan rendah) atau TempDB Anda tidak benar-benar digunakan, Anda tidak akan melihat apa pun. Namun, jika ini adalah server yang cukup sibuk, Anda dapat memulai atau memperburuk menunggu pagelatch yang dapat menyebabkan pemblokiran konvoi.

Aaron sudah menunjukkan bahwa pada versi yang lebih lama ada bendera jejak untuk memastikan bahwa ekstensi yang seragam digunakan dan bahwa semua file dalam filegroup tumbuh bersama (Aaron menunjukkan 1117 dan 1118 yang merupakan NOP pada 2016+). Hal lain yang ingin saya tunjukkan lagi adalah bahwa ini bukan hanya untuk TempDB tetapi untuk database apa pun, dan tata letak fisik harus dipikirkan tergantung pada kebutuhan.

Ini bukan hanya untuk masalah hotspot tetapi berlaku untuk bagian lain dari sistem seperti cadangan / pemulihan, manajemen file, fragmentasi metadata sistem file, dll., Yang semuanya dapat dibantu dengan memiliki banyak file.

Anda dapat melihat anggapan struktur alokasi dengan mencari waitresourcepada halaman PFS (yang merupakan halaman 1, dan kemudian setiap 8.088 halaman). Jika Anda melihat bahwa semua dalam file yang sama (2: file: halaman) maka Anda tahu ini sedang terjadi.

Sean Gallardy
sumber