Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2025 (17.x) dan versi yang lebih baru
Saat Anda mengaktifkan tata kelola sumber daya ruang tempdb, Anda meningkatkan keandalan dan menghindari gangguan dengan mencegah kueri atau beban kerja yang tidak terkendali mengonsumsi sejumlah besar ruang di tempdb.
Dimulai dengan SQL Server 2025 (17.x), Anda dapat menggunakan resource governor untuk memberlakukan batas jumlah tempdb total ruang yang digunakan oleh grup beban kerja. Grup beban kerja dapat dikaitkan dengan aplikasi, pengguna, sekelompok pengguna, dll. Ketika permintaan (kueri) mencoba melebihi batas, gubernur sumber daya membatalkannya dengan kesalahan berbeda yang menunjukkan bahwa batas grup beban kerja telah diberlakukan.
Akibatnya, Anda dapat mempartisi ruang bersama tempdb di antara berbagai beban kerja. Misalnya, Anda dapat menetapkan batas yang lebih tinggi untuk grup beban kerja yang digunakan oleh aplikasi misi penting, dan menetapkan batas bawah untuk default grup beban kerja yang digunakan oleh semua beban kerja lainnya.
Untuk contoh konfigurasi langkah demi langkah, lihat Tutorial: Contoh untuk mengonfigurasi tata kelola sumber daya ruang tempdb.
Mulai menggunakan pengelola sumber daya
Resource governor menyediakan kerangka kerja yang fleksibel untuk menetapkan batas ruang yang berbeda untuk aplikasi, pengguna, grup pengguna, dll yang berbeda tempdb . Anda juga dapat mengatur batas berdasarkan logika kustom.
Jika Anda baru mengenal gubernur sumber daya di SQL Server, lihat gubernur sumber daya untuk mempelajari tentang konsep dan kemampuannya.
Untuk panduan konfigurasi gubernur sumber daya dan praktik terbaik, lihat Tutorial: Contoh konfigurasi gubernur sumber daya dan praktik terbaik.
Mengatur batas konsumsi ruang tempdb
Anda dapat membatasi tempdb konsumsi ruang oleh grup beban kerja dengan salah satu dari dua cara:
Atur batas tetap menggunakan
GROUP_MAX_TEMPDB_DATA_MBargumen .Batas tetap berguna ketika persyaratan penggunaan beban
tempdbkerja diketahui terlebih dahulu, atau ketikatempdbukuran tidak berubah.Atur batas persen menggunakan
GROUP_MAX_TEMPDB_DATA_PERCENTargumen .Batas persen berguna jika Anda dapat mengubah ukuran maksimum dari
tempdbseiring waktu dan Anda ingintempdbyang tersedia untuk setiap grup beban kerja berubah secara proporsional tanpa perlu mengonfigurasi ulang gubernur sumber daya. Misalnya, jika Anda meningkatkan Azure VM yang menjalankan SQL Server dan meningkatkan ukuran maksimumtempdb,tempdbruang yang tersedia untuk setiap kelompok tugas dengan batas persentase juga meningkat.
Untuk informasi selengkapnya tentang GROUP_MAX_TEMPDB_DATA_MB argumen dan GROUP_MAX_TEMPDB_DATA_PERCENT , lihat MEMBUAT GRUP BEBAN KERJA atau MENGUBAH GRUP BEBAN KERJA.
Jika batas tetap dan persen ditentukan untuk grup beban kerja yang sama, batas tetap lebih diutamakan daripada batas persen.
Pada instans SQL Server tertentu, Anda dapat memiliki campuran grup beban kerja dengan batas tetap, batas persen, atau tidak ada batasan pada tempdb konsumsi ruang.
Konfigurasi batas persen
Batas persen hanya berlaku ketika tempdb konfigurasi file data memenuhi persyaratan yang dirangkum dalam tabel berikut:
| Konfigurasi | Deskripsi | Ukuran maksimum Tempdb (100%) | Batas persen berlaku |
|---|---|---|---|
-
GROUP_MAX_TEMPDB_DATA_MB belum diatur- Untuk semua file data, MAXSIZE tidak UNLIMITED- Untuk semua file data, FILEGROWTH bukan nol |
tempdb file data dapat ditumbuhkan secara otomatis hingga ukuran maksimumnya |
Total nilai MAXSIZE dari semua file data |
Ya |
-
GROUP_MAX_TEMPDB_DATA_MB belum diatur- Untuk semua file data, MAXSIZE adalah UNLIMITED- Untuk semua file data, FILEGROWTH adalah nol |
tempdb file data diatur ke ukuran yang sudah ditentukan dan tidak dapat bertambah lebih jauh |
Total nilai SIZE dari semua file data |
Ya |
| Semua konfigurasi lainnya | Tidak. |
Kueri berikut memungkinkan Anda melihat konfigurasi file data saat ini tempdb :
SELECT file_id,
name,
size * 8. / 1024 AS size_mb,
IIF(max_size = -1, NULL, max_size * 8. / 1024) AS maxsize_mb,
IIF(is_percent_growth = 0, growth * 8. / 1024, NULL) AS filegrowth_mb,
IIF(is_percent_growth = 1, growth, NULL) AS filegrowth_percent
FROM sys.master_files
WHERE database_id = 2
AND
type_desc = 'ROWS';
Untuk file tertentu dalam tataan hasil:
-
maxsize_mbJika kolom adalahNULL, makaMAXSIZEadalahUNLIMITED. - Ketika salah satu
filegrowth_mbataufilegrowth_percentnol, makaFILEGROWTHadalah nol.
Jika Anda mengatur GROUP_MAX_TEMPDB_DATA_PERCENT dan menjalankan pernyataan ALTER RESOURCE GOVERNOR RECONFIGURE, tetapi konfigurasi file data tidak memenuhi persyaratan, pernyataan selesai dengan sukses dan batas persentase disimpan, tetapi tidak diberlakukan. Dalam hal ini, Anda menerima pesan peringatan 10989, tingkat keparahan 10, GROUP_MAX_TEMPDB_DATA_PERCENT tidak berlaku karena persyaratan konfigurasi tempdb tidak terpenuhi. Pesan juga dicatat dalam log kesalahan.
Agar batas persen efektif, konfigurasi tempdb ulang file data untuk memenuhi persyaratan dan jalankan ALTER RESOURCE GOVERNOR RECONFIGURE lagi. Untuk informasi selengkapnya tentang mengonfigurasi SIZE, , FILEGROWTHdan MAXSIZE, lihat Opsi UBAH File DATABASE dan Grup File.
Nota
Untuk instans baru SQL Server, file MAXSIZE data adalah UNLIMITED dan FILEGROWTH lebih dari nol, yang berarti bahwa batas persentase tidak berlaku. Untuk menggunakan batas persen, Anda harus:
- Siapkan file data
tempdbsesuai ukuran yang dimaksudkan dan aturFILEGROWTHke nol. - Atur
MAXSIZEsetiap file data ke nilai terbatas.Untuk setiap
tempdbvolume file data, pastikan bahwa jumlahMAXSIZEnilai untuk file pada volume kurang dari atau sama dengan ruang disk yang tersedia pada volume.Misalnya, jika volume memiliki ruang kosong 100 GB dan memiliki dua
tempdbfile data, buatMAXSIZEdari setiap file 50 GB atau kurang.
Jika batas persen berlaku, dan Anda menambahkan, menghapus, atau mengubah ukuran tempdb file data, Anda harus menjalankan ALTER RESOURCE GOVERNOR RECONFIGURE untuk memperbarui gubernur sumber daya dengan ukuran tempdb maksimum baru (100%).
Cara kerjanya
Bagian ini menjelaskan tempdb tata kelola sumber daya ruang secara rinci.
Saat halaman data dialokasikan dan dialokasikan kembali, gubernur sumber daya mempertahankan catatan penggunaan ruang yang dikonsumsi oleh setiap kelompok beban kerja.
Jika pengelola sumber daya diaktifkan dan
tempdbbatas konsumsi ruang diatur untuk grup beban kerja, dan permintaan (kueri) yang berjalan dalam grup beban kerja mencoba untuk menaikkan totaltempdbkonsumsi ruang oleh grup melewati batas, permintaan dibatalkan dengan kesalahan 1138, tingkat keparahan 17, Tidak dapat mengalokasikan halaman baru untuk database 'tempdb' karena itu akan melebihi batas yang ditetapkan untuk grup beban kerja 'workload-group-name'.Ketika permintaan dihentikan dengan kode kesalahan 1138, nilai pada kolom
total_tempdb_data_limit_violation_countdari tampilan manajemen dinamis (DMV) sys.dm_resource_governor_workload_groups bertambah satu, dantempdb_data_workload_group_limit_reachedperistiwa diperpanjang dipicu.Pengatur sumber daya melacak semua
tempdbpenggunaan yang dapat dikaitkan dengan grup beban kerja, termasuk tabel sementara, variabel (termasuk variabel tabel), parameter bernilai tabel, tabel nontemporer, kursor, dantempdbpenggunaan selama pemrosesan kueri, seperti penampung, tumpahan, tabel kerja, dan file kerja.Konsumsi ruang untuk tabel sementara global dan tabel nontemporer di diperhitungkan di
tempdbbawah grup beban kerja yang menyisipkan baris pertama ke dalam tabel, bahkan jika sesi di grup beban kerja lain menambahkan, memodifikasi, atau menghapus baris dalam tabel yang sama.Batas konsumsi yang dikonfigurasi
tempdbuntuk setiap kelompok beban kerja terlihat di tampilan katalog sys.resource_governor_workload_groups, dalam kolomgroup_max_tempdb_data_mbdangroup_max_tempdb_data_percent.Konsumsi saat ini dan konsumsi puncak ruang oleh grup beban kerja diekspos di
tempdb, masing-masing di kolom dantempdb_data_space_kb.Petunjuk / Saran
tempdb_data_space_kbdanpeak_tempdb_data_space_kbkolom dalam sys.dm_resource_governor_workload_groups tetap terjaga meskipun tidak ada batasan pada pemakaian ruang yang ditetapkan.Anda dapat membuat fungsi pengklasifikasi dan grup beban kerja tanpa mengatur batas apa pun pada awalnya. Pantau
tempdbpenggunaan oleh setiap grup dari waktu ke waktu untuk menetapkan pola penggunaan representatif, lalu tetapkan batas sesuai kebutuhan.Tempdbpenggunaan oleh penyimpanan versi, termasuk penyimpanan versi persisten (PVS) saat pemulihan database terakselerasi (ADR) diaktifkan ditempdb, tidak diatur karena versi baris mungkin digunakan oleh permintaan di beberapa grup beban kerja.Konsumsi ruang dalam
tempdbdiperhitungkan sebagai jumlah halaman data 8-KB yang digunakan. Bahkan jika halaman tidak diisi dengan data sepenuhnya, halaman tersebut menambahkan 8 KB ketempdbpenggunaan grup beban kerja.Tempdbakuntansi ruang dipertahankan selama masa pakai grup beban kerja. Jika grup beban kerja dihapus saat tabel sementara global atau tabel nontemporer yang datanya dihitung dalam grup beban kerja ini tetap ada ditempdb, ruang yang digunakan oleh tabel ini tidak dihitung di bawah grup beban kerja lainnya.Tempdbtata kelola sumber daya ruang mengontrol ruang dalamtempdbfile data, tetapi bukan ruang disk pada volume yang mendasar. Kecuali Anda telah menumbuhkantempdbfile data ke ukuran yang dimaksudkan sebelumnya, ruang pada volume tempattempdblokasinya mungkin digunakan oleh file lain. Jika tidak ada ruang yang tersisa untuktempdbbertambahnya file data, makatempdbmungkin kehabisan ruang sebelum batas grup beban kerja padatempdbkonsumsi ruang tercapai.Tata kelola sumber daya ruang dalam
tempdbberlaku untuk file data tetapi bukan file log transaksi. Untuk memastikan bahwa log masuktempdbtransaksi tidak menggunakan sejumlah besar ruang, aktifkan ADR ditempdb.
Perbedaan dengan pelacakan ruang tingkat sesi
DMV sys.dm_db_session_space_usage menyediakan tempdb statistik alokasi dan dealokasi ruang untuk setiap sesi. Bahkan jika hanya ada satu sesi dalam grup beban kerja, statistik penggunaan ruang yang disediakan oleh DMV ini mungkin tidak sama persis dengan statistik yang disediakan dalam tampilan sys.dm_resource_governor_workload_groups , karena alasan berikut:
- Tidak seperti
sys.dm_resource_governor_workload_groups,sys.dm_db_session_space_usage:- Tidak mencerminkan
tempdbpenggunaan ruang/memori oleh tugas yang sedang berjalan. Statistik disys.dm_db_session_space_usagediperbarui ketika tugas selesai. Statistik di diperbaruisys.dm_resource_governor_workload_groupsterus menerus. - Tidak melacak halaman peta alokasi indeks (IAM). Untuk informasi selengkapnya, lihat Pemandu arsitektur halaman dan ekstensi.
- Tidak mencerminkan
- Setelah baris dihapus, atau ketika tabel, indeks, atau partisi dihilangkan atau dipotong, halaman data mungkin dibatalkan alokasinya oleh proses latar belakang asinkron. Dealokasi halaman ini mungkin terjadi dengan penundaan.
sys.dm_resource_governor_workload_groupsmencerminkan dealokasi halaman ini saat terjadi, bahkan jika sesi yang menyebabkan dealokasi ini ditutup dan tidak lagi ada disys.dm_db_session_space_usage.
Praktik terbaik untuk tata kelola sumber daya ruang tempdb
Sebelum mengonfigurasi tempdb tata kelola sumber daya ruang, pertimbangkan praktik terbaik berikut:
Tinjau praktik terbaik umum untuk pengelola sumber daya.
Untuk sebagian besar skenario, hindari mengatur
tempdbbatas konsumsi ruang ke nilai kecil atau nol, terutama untukdefaultgrup beban kerja. Jika Anda melakukannya, banyak tugas umum mungkin mulai gagal jika mereka perlu mengalokasikan ruang ditempdb. Misalnya, jika Anda menetapkan batas tetap atau persen ke 0 untukdefaultgrup beban kerja, Anda mungkin tidak dapat membuka Object Explorer di SQL Server Management Studio (SSMS).Kecuali Anda membuat grup kerja kustom dan fungsi klasifikasi yang menempatkan beban kerja dalam grup mereka sendiri, hindari membatasi penggunaan
tempdboleh grup kerjadefault. Ini mungkin dapat membatalkan kueri dengan kesalahan 1138 ketikatempdbmasih memiliki ruang yang tidak digunakan yang tidak dapat dimanfaatkan oleh beban kerja pengguna mana pun.Diizinkan jumlah nilai
GROUP_MAX_TEMPDB_DATA_MBuntuk semua grup beban kerja melebihi ukuran maksimumtempdb. Misalnya, jika ukuran maksimumtempdbadalah 100 GB,GROUP_MAX_TEMPDB_DATA_MBbatas untuk grup beban kerja A dan grup beban kerja B masing-masing bisa 80 GB.Pendekatan ini tetap mencegah setiap grup beban kerja dari mengonsumsi semua ruang di
tempdbdengan menyisakan 20 GB untuk grup beban kerja lainnya. Pada saat yang sama, Anda menghindari kueri yang tidak perlu dibatalkan ketika ruang kosongtempdbmasih tersedia karena grup beban kerja A dan B tidak mungkin menggunakan sejumlahtempdbbesar ruang pada saat yang sama.Demikian pula, jumlah
GROUP_MAX_TEMPDB_DATA_PERCENTnilai untuk semua grup beban kerja dapat melebihi 100 persen. Anda dapat mengalokasikan lebihtempdbbanyak ruang untuk setiap grup jika Anda tahu bahwa beberapa grup tidak mungkin menyebabkan penggunaan tinggitempdbsecara bersamaan.
Konten terkait
- Tutorial: Contoh untuk mengonfigurasi tata kelola sumber daya ruang tempdb
- Pengelola Sumber Daya
- tutorial : Contoh konfigurasi gubernur sumber daya dan praktik terbaik
- UBAH PENGELOLA SUMBER DAYA
- MEMBUAT GRUP BEBAN KERJA
- MENGUBAH KELOMPOK BEBAN KERJA
- DROP GRUP BEBAN KERJA
- grup beban kerja sys.resource governor
- sys.dm_resource_governor_workload_groups