Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengoptimalkan TempDB:Menghindari Kemacetan dan Masalah Kinerja

Seperti namanya, TempDB adalah ruang kerja sementara yang diperlukan oleh SQL Server untuk membuat dan menyimpan objek perantara dan sementara.

TempDB adalah roda penggerak yang signifikan dalam keseluruhan peralatan SQL Server dan sebagai ruang kerja sementara – data yang dimilikinya bersifat sementara. Dengan kata lain, instans SQL Server Anda membuat ulang TempDB setiap kali dimulai ulang – memberikan dirinya alas awal yang bersih untuk digunakan.

  • objek sementara yang dipicu oleh permintaan pengguna
  • objek yang dibutuhkan oleh proses sistem internal
  • informasi versi baris

Tak perlu dikatakan, jika TempDB tidak dikonfigurasi secara optimal, itu dapat menyebabkan kemacetan operasional dan penurunan kinerja. Ini mungkin membuat Anda bertanya-tanya mengapa kueri Anda dengan gabungan kompleks dan operasi penyortiran tidak menghasilkan hasil secepat yang diharapkan.

Tidak ada cara mudah untuk menggeneralisasi tentang praktik terbaik untuk mengoptimalkan TempDB, skenarionya terlalu beragam dan apa yang berhasil dalam situasi tertentu mungkin tidak berfungsi di situasi lain. Meskipun database Anda telah masuk ke produksi, selalu merupakan ide yang baik untuk terus meninjau penyiapan TempDB Anda untuk memastikannya dikonfigurasi sebagaimana mestinya.

Salah satu masalah paling serius dalam kinerja database adalah pertentangan TempDB. Ini terjadi ketika banyak sumber daya memerlukan TempDB, tetapi hanya ada satu file data TempDB untuk diakses.

Pertikaian TempDB dapat menyebabkan masalah kinerja yang serius dan sering disalahpahami sebagai pemblokiran normal karena kunci basis data. Sering kali, ini sebenarnya mengunci pertikaian pada halaman alokasi oleh proses bersamaan. Hal ini dapat menyebabkan kemacetan karena setiap proses menunggu gilirannya. Karena belokan tidak datang cukup cepat, batas waktu koneksi yang mendasarinya dan prosesnya perlu dibatalkan alokasinya.

Mendapatkan apa? Kemacetan lalu lintas virtual dari proses yang diblokir.

Bagaimana cara mengatasi pertikaian TempDB dan mengoptimalkan kinerja SQL Server? Mari kita lihat dasar-dasarnya dan mulai dari sana.

Jumlah file data – Berapa banyak yang harus saya miliki?

Saat Anda menyiapkan SQL Server dan mempertahankan konfigurasi default, Anda hanya memiliki satu file data untuk TempDB. Jangan puas dengan konfigurasi ini.

Salah satu aturan praktis yang sering disebut-sebut adalah file data tunggal per inti. Tapi lanjutkan dengan hati-hati dalam contoh ini, jika server Anda memiliki 12 core, maka jangan gunakan 12 file data TempDB kecuali dibenarkan oleh aplikasi dan persyaratan beban.

Opsi terbaik, mengingat konfigurasi perangkat keras saat ini, adalah memulai dengan 8 file data primer berukuran sama dan melihat apakah masalah pertikaian telah teratasi. Kerjakan cara Anda ke atas dan tambahkan lebih banyak empat file jika diperlukan. Wisaya penginstalan dan penyetelan SQL Server 2016 memiliki fitur bawaan yang memastikan Anda memiliki cukup banyak file data TempDB dengan mendeteksi jumlah inti CPU dan secara otomatis membuat file data TempDB dengan jumlah yang sesuai.

Ukuran penting – Bagaimana seharusnya ukuran file data dikonfigurasi?

Sekarang setelah kita membahas jumlah file, mari kita lihat ukuran yang direkomendasikan untuk setiap file. Ukuran default adalah 8 MB, yang menyediakan SQL Server dengan total 64 MB ruang TempDB, tidak cukup untuk sebagian besar lingkungan produksi. Menjaga Autogrowth juga merupakan opsi, tetapi SQL Server harus berhenti sejenak, dan mengalokasikan lebih banyak ruang disk untuk file TempDB bila diperlukan – menambahkan overhead yang signifikan ke SQL Server selama proses produksi.

Praktik yang disarankan adalah menyimpan file dan ruang awal yang diperlukan untuk setiap file kira-kira 80 hingga 90% dari volume penyimpanan TempDB. 10 hingga 20% ruang disk tersisa untuk memori virtual berbasis OS.

Dengan kata lain, pra-ukuran file data selama pengaturan atau ubah ukuran file di lingkungan produksi. Ini akan memastikan ruang disk yang cukup dialokasikan untuk TempDB. Menjaga opsi Autogrowth untuk selalu direkomendasikan pada saat ini, tetapi idealnya, cobalah untuk memastikan SQL Server tidak harus mengalokasikan ruang disk tambahan dengan cepat terlalu sering.

Fakta menarik, sebelum SQL Server 2017, tidak mungkin mengalokasikan lebih dari 1 GB per file data TempDB pada saat penyiapan. Dengan versi terbaru, dimungkinkan untuk mengalokasikan sebanyak 256 GB untuk file data TempDB selama penyiapan.

Yang membawa kita ke pertanyaan berikutnya:

Di mana saya menyimpan file data TempDB?

Sebelum SQL Server 2012, dalam kasus lingkungan berkerumun, TempDB harus ditempatkan pada disk yang dibagi antara lingkungan berkerumun, seperti jaringan area penyimpanan (SAN). Dimulai dengan SQL Server 2012, dimungkinkan untuk menyimpan file data TempDB di penyimpanan lokal berbasis SSD. Ini mengurangi apa yang akan menjadi banyak lalu lintas antara SAN bersama dan contoh SQL Server.

Dalam kebanyakan kasus, opsi terbaik untuk lokasi TempDB adalah SSD lokal khusus. Jika itu tidak memungkinkan, maka menyimpannya pada volume khusus sendiri, dengan ruang disk yang cukup telah dialokasikan sebelumnya akan menyelesaikan kemungkinan masalah kinerja. Pastikan Anda terus memantau kesehatan disk sehingga pembacaan dan penulisan disk dilakukan pada tingkat yang optimal.

Idealnya, media harus secepat mungkin mengingat konfigurasi server, persyaratan aplikasi, dan yang terakhir, anggaran yang dialokasikan.

Sekarang setelah kita melihat dasar-dasarnya, mari kita lihat tambahan yang relevan dan menyambut berbagai tambahan SQL Server setelah SQL Server 2012.

Apa lagi yang baru?

SQL Server 2016

Tab Khusus Selama Penyiapan

  • Dengan edisi ini, SQL Server memiliki tab khusus untuk konfigurasi TempDB selama alur kerja penyiapan
  • Wizard penginstalan dan penyetelan SQL Server 2016 memiliki fitur bawaan yang memastikan Anda memiliki cukup banyak file data TempDB saat menginstal SQL Server. Ini mendeteksi jumlah inti CPU dan secara otomatis membuat file data TempDB, dengan jumlah maksimum 8. Anda dapat meningkatkan jumlah ini setelah menyiapkan SQL Server.

Inisialisasi File Instan

  • SQL Server harus mengalokasikan ruang disk untuk TempDB selama penyiapan awal serta saat ukuran file bertambah dalam proses produksi. Alokasi ini dapat dilakukan dengan dua cara. Cara pertama adalah dengan menginisialisasi ruang disk yang tidak terpakai dengan menulis nol sebelum mengalokasikan ruang. Cara kedua adalah dengan langsung mengalokasikan ruang file untuk pertumbuhan TempDB.
  • Dalam metode pertama, SQL Server harus menjalankan operasi intensif disk dengan menginisialisasi setiap cluster disk logis. Dalam metode ini, proses yang berjalan di server yang membutuhkan TempDB mungkin harus menunggu, sehingga menyebabkan kemacetan.
  • Jika Anda memilih untuk langsung mengalokasikan ruang file, SQL server langsung mengalokasikan ruang untuk Autogrowth tanpa menginisialisasi ruang disk. Ini mengurangi disk i/o setiap kali ada persyaratan Autogrowth dan memastikan throughput dan kinerja yang lebih baik. Meskipun dimungkinkan untuk mengaktifkan IFI di edisi sebelumnya, itu adalah proses yang rumit. Dalam edisi SQL Server ini, lebih mudah untuk mengatur IFI pada saat pengaturan server.
  • Tandai jejak 1117 &1118 berlebihan

SQL Server 2017

  • Sebelum SQL Server 2017, tidak mungkin mengalokasikan lebih dari 1 GB per file data TempDB pada saat penyiapan, artinya ukuran file TempDB harus ditingkatkan setelah penyiapan selesai. Dengan versi ini, dimungkinkan untuk mengalokasikan sebanyak 256 GB untuk file data TempDB selama penyiapan.

Memantau TempDB

Melacak TempDB bisa jadi sulit. Bagaimana Anda bisa tahu jika Anda memiliki perselisihan TempDB? Apa yang dialokasikan ke objek pengguna, penyimpanan versi, atau objek internal? Bagaimana tren ini dari waktu ke waktu? Sesi apa yang menggunakan TempDB dan sejauh mana? Spotlight Cloud memudahkan menjawab pertanyaan-pertanyaan ini. Ini memantau semua aspek kinerja server SQL Anda 24/7 dan menyediakan alur kerja analitis yang mendalam untuk mengatasi masalah kinerja apa pun. Lacak TempDB Anda dari waktu ke waktu dan dapatkan nasihat ahli otomatis tentang konfigurasi.


Sebagai solusi SaaS, Spotlight Cloud mudah diatur dan dikonfigurasi. Ini mempertahankan data kinerja hingga satu tahun yang memberikan wawasan penyetelan yang tidak ada duanya. Masalah kinerja dapat diselesaikan dalam hitungan detik dengan analisis akar masalah. Jangan buang waktu lagi untuk menggali skrip yang rumit – mulai uji coba 30 hari Anda sekarang. Pemantauan kinerja SQL Server terbaik dimulai sekarang.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menonaktifkan Batasan CHECK di SQL Server (Contoh T-SQL)

  2. Kapan/Mengapa menggunakan Cascading di SQL Server?

  3. Perbedaan antara CTE dan SubQuery?

  4. Contoh Konversi 'smalldatetime' menjadi 'datetime' di SQL Server (T-SQL)

  5. Cara Menangkap dan Menganalisis Acara SQL Server