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
Azure SQL Managed Instance
Artikel ini berisi contoh langkah demi langkah yang bertujuan membantu Anda mengonfigurasi pengelola sumber daya dan memastikan konfigurasi Anda berfungsi dengan baik. Ini dimulai dengan contoh sederhana dan berkembang ke yang lebih kompleks.
Artikel ini juga menyertakan contoh kueri pemantauan gubernur sumber daya dan daftar praktik terbaik gubernur sumber daya.
Semua contoh mengasumsikan bahwa awalnya, gubernur sumber daya dinonaktifkan dan menggunakan pengaturan default, dan bahwa tidak ada kumpulan sumber daya yang ditentukan pengguna, grup beban kerja, dan fungsi pengklasifikasi.
Nota
Untuk mengubah konfigurasi gubernur sumber daya di Azure SQL Managed Instance, Anda harus berada dalam konteks master database pada replika utama.
Mengubah grup default
Contoh ini menggunakan gubernur sumber daya untuk membatasi ukuran maksimum peruntukan memori untuk semua kueri pengguna. Ini dilakukan dengan mengurangi REQUEST_MAX_MEMORY_GRANT_PERCENT pengaturan untuk default grup beban kerja dari default 25% menjadi 10%. Contoh tidak menggunakan fungsi pengklasifikasi. Ini berarti bahwa pemrosesan login tidak terpengaruh dan semua sesi pengguna terus diklasifikasikan dalam default grup beban kerja.
Anda mungkin perlu membatasi ukuran alokasi memori jika kueri menunggu memori sebab kueri lain mencadangkan terlalu banyak memori. Untuk informasi selengkapnya, lihat Memecahkan masalah performa lambat atau memori rendah yang disebabkan oleh pemberian memori di SQL Server.
Ubah grup beban kerja default.
ALTER WORKLOAD GROUP [default] WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 10);Aktifkan gubernur sumber daya untuk membuat konfigurasi kami efektif.
ALTER RESOURCE GOVERNOR RECONFIGURE;Validasi pengaturan baru, termasuk ukuran maksimum baru dari peruntukan memori.
SELECT group_id, wg.name AS workload_group_name, rp.name AS resource_pool_name, wg.request_max_memory_grant_percent_numeric AS request_max_memory_grant_percent, rp.max_memory_kb * wg.request_max_memory_grant_percent_numeric AS request_max_memory_grant_size_kb FROM sys.resource_governor_workload_groups AS wg INNER JOIN sys.dm_resource_governor_resource_pools AS rp ON wg.pool_id = rp.pool_id;Untuk kembali ke konfigurasi awal, jalankan skrip berikut:
ALTER WORKLOAD GROUP [default] WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 25); ALTER RESOURCE GOVERNOR RECONFIGURE; ALTER RESOURCE GOVERNOR DISABLE;
Menggunakan grup beban kerja yang ditentukan pengguna
Contoh ini menggunakan gubernur sumber daya untuk memastikan bahwa semua permintaan pada sesi dengan nama aplikasi tertentu tidak dijalankan dengan tingkat paralelisme (DOP) yang lebih tinggi dari empat. Ini dilakukan dengan mengklasifikasikan sesi ke dalam grup beban kerja dengan pengaturan MAX_DOP ditetapkan ke 4.
Untuk informasi selengkapnya tentang mengonfigurasi tingkat paralelisme maksimum, lihat Konfigurasi server: tingkat paralelisme maks.
Buat grup beban kerja yang membatasi DOP. Grup menggunakan kumpulan
defaultsumber daya karena kami hanya ingin membatasi DOP untuk aplikasi tertentu, tetapi tidak memesan atau membatasi sumber daya CPU, memori, atau I/O.CREATE WORKLOAD GROUP limit_dop WITH ( MAX_DOP = 4 ) USING [default];Buat fungsi pengklasifikasi. Fungsi ini menggunakan fungsi APP_NAME() bawaan untuk menentukan nama aplikasi yang ditentukan dalam string koneksi klien. Jika nama aplikasi diatur ke
limited_dop_application, fungsi mengembalikan nama grup beban kerja yang membatasi DOP. Jika tidak, fungsi akan mengembalikandefaultsebagai nama grup beban kerja.USE master; GO CREATE FUNCTION dbo.rg_classifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @WorkloadGroupName sysname = N'default'; IF APP_NAME() = N'limited_dop_application' SELECT @WorkloadGroupName = N'limit_dop'; RETURN @WorkloadGroupName; END; GOUbah konfigurasi gubernur sumber daya untuk membuat konfigurasi kami efektif, dan aktifkan gubernur sumber daya.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier); ALTER RESOURCE GOVERNOR RECONFIGURE;Kueri sys.resource_governor_configuration untuk memvalidasi bahwa gubernur sumber daya diaktifkan dan menggunakan fungsi pengklasifikasi yang kami buat.
SELECT OBJECT_SCHEMA_NAME(classifier_function_id) AS classifier_schema_name, OBJECT_NAME(classifier_function_id) AS classifier_object_name, is_enabled FROM sys.resource_governor_configuration;classifier_schema_name classifier_object_name is_enabled ---------------------- ---------------------- ---------- dbo rg_classifier 1Validasi bahwa sesi dengan nama aplikasi tertentu diklasifikasikan ke dalam
limit_dopgrup beban kerja, sementara sesi lain terus diklasifikasikan dalamdefaultgrup beban kerja. Kita akan menggunakan kueri yang menggunakan tampilan sistem sys.dm_exec_sessions dan sys.resource_governor_workload_groups untuk mengembalikan nama aplikasi dan nama grup beban kerja untuk sesi saat ini.Di SQL Server Management Studio (SSMS), pilih File pada menu utama, Baru, Kueri Mesin Database.
Dalam dialog Sambungkan ke Mesin Database , tentukan instans Mesin Database yang sama tempat Anda membuat grup beban kerja dan fungsi pengklasifikasi. Pilih tab Parameter Koneksi Tambahan , dan masukkan
App=limited_dop_application. Ini membuat SSMS digunakanlimited_dop_applicationsebagai nama aplikasi saat menyambungkan ke instans.Pilih Sambungkan untuk membuka koneksi baru.
Di jendela kueri yang sama, jalankan kueri berikut:
SELECT s.program_name AS application_name, wg.name AS workload_group_name, wg.max_dop FROM sys.dm_exec_sessions AS s INNER JOIN sys.resource_governor_workload_groups AS wg ON s.group_id = wg.group_id WHERE s.session_id = @@SPID;Anda akan melihat output berikut, menunjukkan bahwa sesi diklasifikasikan ke dalam
limit_dopgrup beban kerja dengan DOP maksimum yang diatur ke empat:application_name workload_group_name max_dop ---------------- ------------------- ------- limited_dop_application limit_dop 4Ulangi langkah-langkah di atas, tetapi jangan masukkan apa pun di kotak pada tab Parameter Koneksi Tambahan . Output berubah, memperlihatkan nama aplikasi SSMS default dan
defaultgrup beban kerja dengan nilai default0untuk DOP maksimum.application_name workload_group_name max_dop ---------------- ------------------- ------- Microsoft SQL Server Management Studio - Query default 0
Untuk kembali ke konfigurasi awal contoh ini, putuskan sambungan semua sesi menggunakan
limit_dopgrup beban kerja, dan jalankan skrip T-SQL berikut. Skrip mencakup langkah-langkah berikut:- Nonaktifkan gubernur sumber daya sehingga fungsi pengklasifikasi dapat dihilangkan.
- Hapus kelompok beban kerja. Ini mengharuskan tidak ada sesi yang menggunakan grup beban kerja ini.
- Konfigurasi ulang gubernur sumber daya untuk memuat ulang konfigurasi efektif tanpa fungsi pengklasifikasi dan grup beban kerja. Ini mengaktifkan pengelola sumber daya.
- Nonaktifkan gubernur sumber daya untuk kembali ke konfigurasi awal.
/* Disable resource governor so that the classifier function can be dropped. */ ALTER RESOURCE GOVERNOR DISABLE; ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL); DROP FUNCTION IF EXISTS dbo.rg_classifier; /* Drop the workload group. This requires that no sessions are using this workload group. */ DROP WORKLOAD GROUP limit_dop; /* Reconfigure resource governor to reload the effective configuration without the classifier function and the workload group. This enables resource governor. */ ALTER RESOURCE GOVERNOR RECONFIGURE; /* Disable resource governor to revert to the initial configuration. */ ALTER RESOURCE GOVERNOR DISABLE;
Menggunakan beberapa kumpulan sumber daya dan grup beban kerja
Contoh ini menggunakan gubernur sumber daya untuk mengklasifikasikan sesi dari aplikasi pemrosesan pesanan ke dalam grup beban kerja dan kumpulan sumber daya yang berbeda tergantung pada waktu hari. Konfigurasi ini mengalokasikan lebih banyak sumber daya ke aplikasi selama waktu pemrosesan puncak, dan membatasi sumber dayanya selama jam libur. Contoh mengasumsikan bahwa aplikasi tidak menggunakan sesi yang berjalan lama.
Buat dua kumpulan sumber daya untuk jam sibuk dan pemrosesan di luar jam kerja.
- Kumpulan
peak_hours_poolmenjamin minimal 20% bandwidth CPU rata-rata melaluiMIN_CPU_PERCENT, dan tidak membatasi bandwidth CPU dengan menetapkanMAX_CPU_PERCENTke100. - Pool
off_hours_pooltidak memesan bandwidth CPU apa pun dengan mengaturMIN_CPU_PERCENTke0, tetapi membatasi bandwidth CPU hingga 50% saat terjadi persaingan CPU dengan mengaturMAX_CPU_PERCENTke50.
CREATE RESOURCE POOL peak_hours_pool WITH ( MIN_CPU_PERCENT = 20, MAX_CPU_PERCENT = 100 ); CREATE RESOURCE POOL off_hours_pool WITH ( MIN_CPU_PERCENT = 0, MAX_CPU_PERCENT = 50 );Kumpulan sumber daya dapat memesan dan membatasi sumber daya sistem seperti CPU, memori, dan I/O. Untuk informasi selengkapnya, lihat CREATE RESOURCE POOL .
- Kumpulan
Buat dua grup beban kerja, masing-masing satu untuk setiap kumpulan sumber daya.
-
peak_hours_grouptidak membatasi jumlah permintaan bersamaan dengan mengaturGROUP_MAX_REQUESTSke nilai0default . -
off_hours_groupmembatasi jumlah permintaan bersamaan di semua sesi yang diklasifikasikan dalam grup ini, dengan menetapkanGROUP_MAX_REQUESTSke200.
CREATE WORKLOAD GROUP peak_hours_group WITH ( GROUP_MAX_REQUESTS = 0 ) USING peak_hours_pool; CREATE WORKLOAD GROUP off_hours_group WITH ( GROUP_MAX_REQUESTS = 200 ) USING off_hours_pool;Grup beban kerja menentukan kebijakan seperti jumlah maksimum permintaan, tingkat paralelisme maksimum, dan ukuran peruntukan memori maksimum. Untuk informasi selengkapnya, lihat CREATE WORKLOAD GROUP .
-
Buat dan isi tabel yang menentukan interval waktu puncak dan di luar jam kerja.
- Setiap baris dalam tabel menentukan waktu mulai dan berakhir interval, dan nama grup beban kerja yang akan digunakan selama interval.
- Waktu mulai dan berakhir dari setiap interval bersifat inklusif.
- Tabel dibuat dalam
masterdatabase sehingga dapat digunakan dalam fungsi pengklasifikasi terikat skema.
USE master; GO CREATE TABLE dbo.workload_interval ( workload_group_name sysname NOT NULL, start_time time(7) NOT NULL, end_time time(7) NOT NULL, CONSTRAINT pk_workload_interval PRIMARY KEY (start_time, workload_group_name), CONSTRAINT ak_workload_interval_1 UNIQUE (end_time, workload_group_name), CONSTRAINT ck_workload_interval_1 CHECK (start_time < end_time) ); GO INSERT INTO dbo.workload_interval VALUES (N'off_hours_group', '00:00', '06:29:59.9999999'), (N'peak_hours_group', '06:30', '18:29:59.9999999'), (N'off_hours_group', '18:30', '23:59:59.9999999');Buat fungsi pengklasifikasi.
- Data dalam tabel diharapkan memiliki satu baris yang cocok untuk waktu tertentu dalam sehari. Jika data melanggar aturan tersebut, fungsi akan kembali
defaultsebagai nama grup beban kerja. - Contoh fungsi berikut juga mengembalikan
defaultjika nama aplikasi yang dikembalikan oleh fungsi APP_NAME() bawaan adalah apa pun selainorder_processing.
USE master; GO CREATE OR ALTER FUNCTION dbo.rg_classifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @WorkloadGroupName sysname = N'default'; SELECT @WorkloadGroupName = workload_group_name FROM dbo.workload_interval WHERE APP_NAME() = N'order_processing' AND CAST(GETDATE() AS time(7)) BETWEEN start_time AND end_time; IF @@ROWCOUNT > 1 SELECT @WorkloadGroupName = N'default'; RETURN @WorkloadGroupName; END; GO- Data dalam tabel diharapkan memiliki satu baris yang cocok untuk waktu tertentu dalam sehari. Jika data melanggar aturan tersebut, fungsi akan kembali
Ini adalah langkah opsional. Alih-alih membuat tabel dalam
masterdatabase, Anda bisa menggunakan konstruktor bernilai tabel untuk menentukan interval waktu langsung dalam fungsi pengklasifikasi. Ini adalah pendekatan yang direkomendasikan ketika ukuran data kecil dan kriteria fungsi pengklasifikasi tidak sering diubah. Berikut adalah contoh pengklasifikasi yang sama yang menggunakan konstruktor dengan nilai tabel alih-alih tabel dimaster.USE master; GO CREATE OR ALTER FUNCTION dbo.rg_classifier() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @WorkloadGroupName sysname = N'default'; SELECT @WorkloadGroupName = workload_group_name FROM ( VALUES (CAST(N'off_hours_group' AS sysname), CAST('00:00' AS time(7)), CAST('06:29:59.9999999' AS time(7))), (CAST(N'peak_hours_group' AS sysname), CAST('06:30' AS time(7)), CAST('18:29:59.9999999' AS time(7))), (CAST(N'off_hours_group' AS sysname), CAST('18:30' AS time(7)), CAST('23:59:59.9999999'AS time(7))) ) AS wg (workload_group_name, start_time, end_time) WHERE APP_NAME() = N'order_processing' AND CAST(GETDATE() AS time(7)) BETWEEN start_time AND end_time; IF @@ROWCOUNT > 1 SELECT @WorkloadGroupName = N'default'; RETURN @WorkloadGroupName; END; GOUbah konfigurasi gubernur sumber daya untuk membuat konfigurasi kami efektif, dan aktifkan gubernur sumber daya.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier); ALTER RESOURCE GOVERNOR RECONFIGURE;Validasi bahwa gubernur sumber daya diaktifkan, menggunakan fungsi pengklasifikasi yang ditentukan, dan bahwa fungsi pengklasifikasi berfungsi seperti yang diharapkan menggunakan langkah-langkah serupa seperti dalam contoh sebelumnya. Kali ini, kami memasukkan
App=order_processingpada tab Parameter Koneksi Tambahan dalam dialog sambungkan SSMS agar sesuai dengan nama aplikasi di fungsi pengklasifikasi. Jalankan kueri berikut untuk menentukan nama aplikasi, grup beban kerja, kumpulan sumber daya, dan reservasi dan batas CPU untuk sesi saat ini:SELECT s.program_name AS application_name, wg.name AS workload_group_name, wg.group_max_requests, rp.name AS resource_pool_name, rp.min_cpu_percent, rp.max_cpu_percent FROM sys.dm_exec_sessions AS s INNER JOIN sys.resource_governor_workload_groups AS wg ON s.group_id = wg.group_id INNER JOIN sys.resource_governor_resource_pools AS rp ON wg.pool_id = rp.pool_id WHERE s.session_id = @@SPID;Hasilnya tergantung pada waktu hari. Misalnya, jika waktu saat ini adalah 14:30, hasilnya menunjukkan bahwa
peak_hours_groupdanpeak_hours_pooldigunakan:application_name workload_group_name group_max_requests resource_pool_name min_cpu_percent max_cpu_percent ----------------- -------------------- ------------------ ------------------- --------------- --------------- order_processing peak_hours_group 0 peak_hours_pool 20 100Untuk kembali ke konfigurasi awal contoh ini, putuskan sambungan semua sesi menggunakan
peak_hours_groupgrup beban kerja danoff_hours_group, dan jalankan skrip T-SQL berikut. Skrip mencakup langkah-langkah berikut:- Nonaktifkan gubernur sumber daya sehingga fungsi pengklasifikasi dapat dihilangkan.
- Hapus grup-grup beban kerja. Ini mengharuskan tidak ada sesi yang menggunakan grup beban kerja ini.
- Setelah grup beban kerja dihilangkan, hilangkan kumpulan sumber daya.
- Konfigurasi ulang pengelola sumber daya untuk menerapkan kembali konfigurasi yang berlaku tanpa fungsi pengklasifikasi dan tanpa grup beban kerja serta kumpulan sumber daya yang ditentukan pengguna. Ini mengaktifkan pengelola sumber daya.
- Nonaktifkan gubernur sumber daya untuk kembali ke konfigurasi awal.
/* Disable resource governor so that the classifier function can be dropped. */ ALTER RESOURCE GOVERNOR DISABLE; ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL); DROP FUNCTION IF EXISTS dbo.rg_classifier; DROP TABLE IF EXISTS dbo.workload_interval; /* Drop the workload groups. This requires that no sessions are using these workload groups. */ DROP WORKLOAD GROUP peak_hours_group; DROP WORKLOAD GROUP off_hours_group; /* Once the workload groups are dropped, drop the resource pools. */ DROP RESOURCE POOL peak_hours_pool; DROP RESOURCE POOL off_hours_pool; /* Reconfigure resource governor to reload the effective configuration without the classifier function and user-defined workload groups and resource pools. This enables resource governor. */ ALTER RESOURCE GOVERNOR RECONFIGURE; /* Disable resource governor to revert to the initial configuration. */ ALTER RESOURCE GOVERNOR DISABLE;
Memantau pengelola sumber daya menggunakan pandangan sistem
Contoh kueri di bagian ini menunjukkan bagaimana Anda dapat memantau statistik dan perilaku waktu proses pengelola sumber daya.
Statistik pengelola sumber daya bersifat kumulatif sejak server terakhir kali dimulai ulang. Jika Anda perlu mengumpulkan statistik mulai dari waktu tertentu, Anda dapat mengatur ulang statistik menggunakan pernyataan .ALTER RESOURCE GOVERNOR RESET STATISTICS
Statistik waktu proses kumpulan sumber daya
Untuk setiap kumpulan sumber daya, gubernur sumber daya melacak pemanfaatan CPU dan memori, peristiwa di luar memori, pemberian memori, I/O, dan statistik lainnya. Untuk informasi selengkapnya, lihat sys.dm_resource_governor_resource_pools.
Kueri berikut mengembalikan subset statistik yang tersedia untuk semua kumpulan sumber daya:
SELECT rp.pool_id,
rp.name AS resource_pool_name,
wg.workload_group_count,
rp.statistics_start_time,
rp.total_cpu_usage_ms,
rp.target_memory_kb,
rp.used_memory_kb,
rp.out_of_memory_count,
rp.active_memgrant_count,
rp.total_memgrant_count,
rp.total_memgrant_timeout_count,
rp.read_io_completed_total,
rp.write_io_completed_total,
rp.read_bytes_total,
rp.write_bytes_total,
rp.read_io_stall_total_ms,
rp.write_io_stall_total_ms
FROM sys.dm_resource_governor_resource_pools AS rp
OUTER APPLY (
SELECT COUNT(1) AS workload_group_count
FROM sys.dm_resource_governor_workload_groups AS wg
WHERE wg.pool_id = rp.pool_id
) AS wg;
Statistik waktu proses grup beban kerja
Untuk setiap grup beban kerja, gubernur sumber daya melacak waktu CPU, jumlah permintaan, tugas yang diblokir, waktu tunggu kunci, pengoptimalan kueri, dan statistik lainnya. Untuk informasi selengkapnya, lihat sys.resource_governor_workload_groups.
Kueri berikut mengembalikan subset statistik yang tersedia untuk semua grup beban kerja:
SELECT wg.name AS workload_group_name,
rp.name AS resource_pool_name,
wg.statistics_start_time,
wg.total_request_count,
wg.total_cpu_usage_ms,
wg.blocked_task_count,
wg.total_lock_wait_time_ms,
wg.total_query_optimization_count,
wg.max_request_grant_memory_kb,
wg.active_parallel_thread_count,
wg.effective_max_dop,
wg.request_max_memory_grant_percent_numeric
FROM sys.dm_resource_governor_workload_groups AS wg
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
Sesi agregat menurut grup beban kerja dan atribut sesi
Kueri berikut mengembalikan distribusi sesi di seluruh grup beban kerja dan statistik sesi agregat untuk setiap grup beban kerja.
Jumlah sesi yang tinggi dengan preconnect status mungkin menunjukkan kelambatan dalam eksekusi pengklasifikasi.
SELECT wg.name AS workload_group_name,
rp.name AS resource_pool_name,
s.program_name AS application_name,
s.login_name,
s.host_name,
s.status,
d.name AS database_name,
MIN(s.login_time) AS first_login_time,
MAX(s.login_time) AS last_login_time,
MAX(s.last_request_start_time) AS last_request_start_time,
COUNT(1) AS session_count
FROM sys.dm_exec_sessions AS s
INNER JOIN sys.dm_resource_governor_workload_groups AS wg
ON s.group_id = wg.group_id
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
INNER JOIN sys.databases AS d
ON s.database_id = d.database_id
GROUP BY wg.name,
rp.name,
s.program_name,
s.login_name,
s.host_name,
s.status,
d.name;
Permintaan agregat berdasarkan grup beban kerja dan atribut permintaan
Kueri berikut mengembalikan distribusi permintaan di seluruh grup beban kerja dan statistik permintaan agregat untuk setiap grup beban kerja:
SELECT wg.name AS workload_group_name,
rp.name AS resource_pool_name,
r.command,
r.status,
d.name AS database_name,
COUNT(1) AS request_count,
MIN(r.start_time) AS first_request_start_time,
MAX(r.start_time) AS last_request_start_time,
SUM(CAST(r.total_elapsed_time AS bigint)) AS total_elapsed_time_ms
FROM sys.dm_exec_requests AS r
INNER JOIN sys.dm_resource_governor_workload_groups AS wg
ON r.group_id = wg.group_id
INNER JOIN sys.dm_resource_governor_resource_pools AS rp
ON wg.pool_id = rp.pool_id
INNER JOIN sys.databases AS d
ON r.database_id = d.database_id
GROUP BY wg.name,
rp.name,
r.command,
r.status,
d.name;
Praktik terbaik pengelola sumber daya
Konfigurasikan Koneksi Administrator Khusus (DAC), dan pelajari cara menggunakannya. Untuk informasi selengkapnya, lihat Koneksi diagnostik untuk administrator database. Jika konfigurasi gubernur sumber daya Anda tidak berfungsi, Anda dapat menggunakan DAC untuk memecahkan masalahnya atau menonaktifkan gubernur sumber daya.
Saat mengonfigurasi kumpulan sumber daya, berhati-hatilah menentukan nilai besar untuk
MIN_CPU_PERCENT, ,MIN_MEMORY_PERCENTdanMIN_IOPS_PER_VOLUME. Pengaturan konfigurasiMINmencadangkan sumber daya untuk kumpulan sumber daya dan memastikan sumber daya tersebut tidak tersedia untuk kumpulan sumber daya lain, termasuk kumpulandefault. Untuk informasi selengkapnya, lihat Membuat kumpulan sumber daya.Demikian pula, berhati-hatilah menentukan nilai yang sangat kecil untuk
MAX_CPU_PERCENTdanCAP_CPU_PERCENT, atau mengaturMAX_IOPS_PER_VOLUMEke nilai yang jauh lebih kecil daripada yang dapat disediakan subsistem I/O. Beban kerja yang sangat dibatasi yang menggunakan sumber daya bersama dapat memengaruhi beban kerja lain menggunakan sumber daya yang sama. Misalnya, kueri yang dibatasi CPU dapat menahan kunci lebih lama dan menyebabkan rantai pemblokiran yang panjang. Beban kerja yang dibatasi I/O dapat menahan kait pada halaman sistem bersama lebih lama, yang mengakibatkan batas waktu kait untuk beban kerja lainnya.Fungsi pengklasifikasi memperpanjang waktu pemrosesan masuk. Hindari logika yang kompleks dan kueri yang berlangsung lama atau membutuhkan banyak sumber daya di pengklasifikasi, terutama jika kueri menggunakan tabel besar. Fungsi yang terlalu kompleks dapat menyebabkan penundaan login atau batas waktu koneksi.
Jika Anda perlu menggunakan tabel di pengklasifikasi, dan tabel kecil dan sebagian besar statis, pertimbangkan untuk menggunakan konstruktor bernilai tabel sebagai gantinya, seperti yang ditunjukkan dalam contoh sebelumnya dalam artikel ini.
Hindari menggunakan tabel yang sering dimodifikasi di pengklasifikasi. Itu meningkatkan risiko pemblokiran yang dapat menunda login dan menyebabkan batas waktu koneksi. Solusi berikut dapat mengurangi risiko, namun memiliki kelemahan, termasuk risiko klasifikasi yang salah:
- Pertimbangkan untuk menggunakan petunjuk tabel
NOLOCK, atau petunjuk yang setaraREADUNCOMMITTED. Untuk informasi selengkapnya, lihat READUNCOMMITTED. - Pertimbangkan untuk menggunakan pengaturan
LOCK_TIMEOUTdi awal fungsi pengklasifikasi, menetapkannya ke nilai kecil seperti 1.000 milidetik. Untuk informasi selengkapnya, lihat SET LOCK_TIMEOUT .
- Pertimbangkan untuk menggunakan petunjuk tabel
Jika Anda menjalankan
ALTER RESOURCE GOVERNOR RECONFIGUREsetelah menghapus kumpulan sumber daya yang tidak digunakan pada komputer dengan sejumlah besar memori, perintah mungkin memakan waktu lama. Jika fungsi pengklasifikasi berlaku sebelum konfigurasi ulang dimulai, upaya koneksi baru yang dilakukan selama waktu tersebut mungkin kehabisan waktu.Jika Anda menghapus kumpulan sumber daya yang tidak digunakan, kami sarankan Anda mengonfigurasi ulang gubernur sumber daya selama jendela pemeliharaan atau periode aktivitas rendah.
Anda tidak dapat mengubah fungsi pengklasifikasi saat dirujuk dalam konfigurasi gubernur sumber daya. Namun, Anda dapat memodifikasi konfigurasi untuk menggunakan fungsi pengklasifikasi yang berbeda. Jika Anda ingin membuat perubahan pada pengklasifikasi, pertimbangkan untuk membuat sepasang fungsi pengklasifikasi. Misalnya, Anda dapat membuat
dbo.rg_classifier_A()dandbo.rg_classifier_B(). Saat diperlukan perubahan pada logika pengklasifikasi, ikuti langkah-langkah berikut:- Gunakan pernyataan ALTER FUNCTION untuk membuat perubahan pada fungsi yang saat ini tidak digunakan dalam konfigurasi governor sumber daya.
-
ALTER RESOURCE GOVERNOR Gunakan pernyataan untuk membuat pengklasifikasi yang dimodifikasi aktif, lalu konfigurasi ulang gubernur sumber daya. Misalnya:
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier_B); ALTER RESOURCE GOVERNOR RECONFIGURE; - Jika perubahan diperlukan lagi, ikuti langkah-langkah yang sama menggunakan fungsi lain (
dbo.rg_classifier_A()).
Konfigurasi gubernur sumber daya disimpan dalam
masterdatabase. Pastikan untuk mencadangkanmastersecara berkala , dan tahu cara memulihkannya. Untuk informasi lebih lanjut, lihat Mencadangkan dan memulihkan: Database sistem. Karena ada batasan dalam proses pemulihanmaster, kami menyarankan agar Anda juga menyimpan salinan skrip konfigurasi pengelola sumber daya secara terpisah. Anda dapat membuat ulang konfigurasi gubernur sumber daya dari skrip jikamasterdatabase perlu dibangun kembali.
Konten terkait
- Pengelola Sumber Daya
- Mengaktifkan pengatur sumber daya
- kumpulan sumber daya pengelola sumber daya
- kelompok beban kerja pengatur sumber daya
- Konfigurasi pengelola sumber daya menggunakan templat
- Tinjau dan modifikasi properti pengelola sumber daya
- ALTER RESOURCE GOVERNOR (Transact-SQL)
- CREATE RESOURCE POOL (Transact-SQL)
- CREATE WORKLOAD GROUP (Transact-SQL)
- CREATE FUNCTION (Transact-SQL)