Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
si applica a:SQL Server
Istanza gestita di SQL di Azure
Questo articolo contiene esempi di procedura dettagliata che consentono di configurare Resource Governor e verificare che la configurazione funzioni come previsto. Inizia con un semplice esempio e progredisce a quelli più complessi.
L'articolo include anche esempi di query di monitoraggio di resource governor e un elenco di migliori pratiche di resource governor .
Tutti gli esempi presuppongono che inizialmente Resource Governor sia disabilitato e usi le impostazioni predefinite e che non esistano pool di risorse definiti dall'utente, gruppi di carico di lavoro e funzioni di classificazione.
Nota
Per modificare la configurazione di Resource Governor in Istanza gestita di SQL di Azure, è necessario trovarsi nel contesto del database master
nella replica primaria.
Modificare il gruppo predefinito
Questo esempio usa Resource Governor per limitare le dimensioni massime di una concessione di memoria per tutte le query utente. Questa operazione viene eseguita riducendo l'impostazione di REQUEST_MAX_MEMORY_GRANT_PERCENT
per il gruppo di carico di lavoro default
dal valore predefinito da 25% a 10%. L'esempio non usa una funzione di classificazione . Ciò significa che l'elaborazione dell'accesso non è influenzata e tutte le sessioni utente continuano a essere classificate nel gruppo di carico di lavoro default
.
Potrebbe essere necessario limitare le dimensioni delle concessioni di memoria se le query sono in attesa di memoria perché altre query hanno riservato una quantità eccessiva di memoria. Per altre informazioni, vedere Risolvere i problemi di rallentamento delle prestazioni o di memoria insufficiente causati dalle concessioni di memoria in SQL Server.
Modificare il gruppo di carico di lavoro predefinito.
ALTER WORKLOAD GROUP [default] WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 10);
Abilitare Resource Governor per rendere effettiva la configurazione.
ALTER RESOURCE GOVERNOR RECONFIGURE;
Convalidare la nuova impostazione, inclusa la nuova dimensione massima di una concessione di memoria.
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;
Per ripristinare la configurazione iniziale, eseguire lo script seguente:
ALTER WORKLOAD GROUP [default] WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 25); ALTER RESOURCE GOVERNOR RECONFIGURE; ALTER RESOURCE GOVERNOR DISABLE;
Usare un gruppo di carico di lavoro definito dall'utente
Questo esempio usa Resource Governor per garantire che tutte le richieste nelle sessioni con un nome di applicazione specifico non vengano eseguite con il grado di parallelismo (DOP) superiore a quattro. Questa operazione viene eseguita classificando le sessioni in un gruppo di carico di lavoro con l'impostazione MAX_DOP
impostata su 4.
Per ulteriori informazioni sulla configurazione del grado massimo di parallelismo, vedere configurazione del server: massimo grado di parallelismo.
Creare un gruppo di carico di lavoro che limiti il DOP. Il gruppo usa il pool di risorse
default
perché si vuole limitare solo il DOP per un'applicazione specifica, ma non riservare o limitare cpu, memoria o risorse di I/O.CREATE WORKLOAD GROUP limit_dop WITH ( MAX_DOP = 4 ) USING [default];
Creare la funzione di classificazione. La funzione usa la funzione APP_NAME predefinita per determinare il nome dell'applicazione specificato nella stringa di connessione client. Se il nome dell'applicazione è impostato su
limited_dop_application
, la funzione restituisce il nome del gruppo di carico di lavoro che limita il valore DOP. In caso contrario, la funzione restituiscedefault
come nome del gruppo del carico di lavoro.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; GO
Modificare la configurazione di Resource Governor per rendere effettiva la configurazione e abilitare Resource Governor.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier); ALTER RESOURCE GOVERNOR RECONFIGURE;
query sys.resource_governor_configuration per verificare che Resource Governor sia abilitato e usi la funzione di classificazione creata.
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 1
Verificare che le sessioni con un nome di applicazione specifico siano classificate nel gruppo di carico di lavoro
limit_dop
, mentre le altre sessioni continuano a essere classificate nel gruppo di carico di lavorodefault
. Verrà usata una query che usa sys.dm_exec_sessions e sys.resource_governor_workload_groups viste di sistema per restituire il nome dell'applicazione e il nome del gruppo di carico di lavoro per la sessione corrente.In SQL Server Management Studio (SSMS), selezionare File nel menu principale, Nuovo, Query Motore di Database.
Nella finestra di dialogo Connetti al motore di database specificare la stessa istanza del motore di database in cui è stato creato il gruppo di carico di lavoro e la funzione di classificazione. Selezionare la scheda Parametri di connessione aggiuntivi e immettere
App=limited_dop_application
. In questo modo SSMS usalimited_dop_application
come nome dell'applicazione durante la connessione all'istanza.Selezionare Connetti per aprire una nuova connessione.
Nella stessa finestra di query eseguire la query seguente:
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;
Verrà visualizzato l'output seguente, che mostra che la sessione è stata classificata nel gruppo di carico di lavoro
limit_dop
con il valore dop massimo impostato su quattro:application_name workload_group_name max_dop ---------------- ------------------- ------- limited_dop_application limit_dop 4
Ripetere i passaggi precedenti, ma non immettere nulla nella casella nella scheda Parametri di connessione aggiuntivi. L'output cambia, che mostra il nome predefinito dell'applicazione SSMS e il gruppo di carico di lavoro
default
con il valore0
predefinito per il valore massimo di DOP.application_name workload_group_name max_dop ---------------- ------------------- ------- Microsoft SQL Server Management Studio - Query default 0
Per ripristinare la configurazione iniziale di questo esempio, disconnettere tutte le sessioni usando il gruppo di carico di lavoro
limit_dop
ed eseguire lo script T-SQL seguente. Lo script include i passaggi seguenti:- Disabilitare Resource Governor in modo che la funzione di classificazione possa essere eliminata.
- Eliminare il gruppo di carico di lavoro. Ciò richiede che nessuna sessione usi questo gruppo di carico di lavoro.
- Riconfigurare Resource Governor per ricaricare la configurazione effettiva senza la funzione di classificazione e il gruppo di carico di lavoro. Ciò abilita Resource Governor.
- Disabilitare Resource Governor per ripristinare la configurazione iniziale.
/* 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;
Usare più pool di risorse e gruppi di carico di lavoro
Questo esempio usa Resource Governor per classificare le sessioni da un'applicazione di elaborazione degli ordini in gruppi di carico di lavoro e pool di risorse diversi a seconda dell'ora del giorno. Questa configurazione alloca più risorse all'applicazione durante i periodi di picco di elaborazione e limita le risorse durante gli orari di minore attività. L'esempio presuppone che l'applicazione non usi sessioni con esecuzione prolungata.
Creare due pool di risorse per le ore di punta e le ore di minore attività di elaborazione.
- Il pool di
peak_hours_pool
garantisce (riserva) almeno 20% della larghezza di banda media della CPU tramiteMIN_CPU_PERCENT
e non limita la larghezza di banda della CPU impostandoMAX_CPU_PERCENT
su100
. - Il pool di
off_hours_pool
non riserva alcuna larghezza di banda della CPU impostandoMIN_CPU_PERCENT
su0
, ma limita la larghezza di banda della CPU a 50% quando è presente una contesa della CPU impostandoMAX_CPU_PERCENT
su50
.
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 );
I pool di risorse possono riservare e limitare le risorse di sistema, ad esempio CPU, memoria e I/O. Per altre informazioni, vedere CREATE RESOURCE POOL.
- Il pool di
Creare due gruppi di carico di lavoro, uno rispettivamente per ogni pool di risorse.
- Il
peak_hours_group
non limita il numero di richieste simultanee impostandoGROUP_MAX_REQUESTS
sul valore predefinito di0
. - Il
off_hours_group
limita il numero di richieste simultanee in tutte le sessioni classificate in questo gruppo impostandoGROUP_MAX_REQUESTS
su200
.
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;
I gruppi di carico di lavoro definiscono criteri come il numero massimo di richieste, il grado massimo di parallelismo e le dimensioni massime delle concessioni di memoria. Per altre informazioni, vedere CREATE WORKLOAD GROUP.
- Il
Creare e popolare una tabella che definisce gli intervalli di tempo di picco e di minore attività.
- Ogni riga della tabella definisce l'ora di inizio e di fine dell'intervallo e il nome del gruppo di carico di lavoro da usare durante l'intervallo.
- L'ora di inizio e di fine di ogni intervallo è inclusiva.
- La tabella viene creata nel database
master
in modo che possa essere usata in una funzione di classificazione associata a schema.
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');
Creare la funzione di classificazione.
- I dati nella tabella devono avere una singola riga corrispondente per qualsiasi ora del giorno. Se i dati violano tale regola, la funzione restituisce
default
come nome del gruppo di carico di lavoro. - La funzione di esempio seguente restituisce anche
default
se il nome dell'applicazione restituito dalla funzione APP_NAME() predefinita è diverso daorder_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
- I dati nella tabella devono avere una singola riga corrispondente per qualsiasi ora del giorno. Se i dati violano tale regola, la funzione restituisce
Questo è un passaggio facoltativo. Anziché creare una tabella nel database
master
, è possibile usare un costruttore con valori di tabella per definire gli intervalli di tempo direttamente nella funzione di classificazione. Questo è l'approccio consigliato quando le dimensioni dei dati sono ridotte e i criteri della funzione di classificazione non vengono modificati di frequente. Di seguito è riportato un esempio dello stesso classificatore che usa un costruttore con valori di tabella anziché una tabella inmaster
.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; GO
Modificare la configurazione di Resource Governor per rendere effettiva la configurazione e abilitare Resource Governor.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier); ALTER RESOURCE GOVERNOR RECONFIGURE;
Verificare che Resource Governor sia abilitato, usi la funzione di classificazione specificata e che la funzione di classificazione funzioni come previsto usando passaggi simili come nell'esempio precedente . Questa volta si immette
App=order_processing
nella scheda Parametri di connessione aggiuntivi nella finestra di dialogo di connessione di SSMS in modo che corrisponda al nome dell'applicazione nella funzione di classificazione. Eseguire la query seguente per determinare il nome dell'applicazione, il gruppo di carico di lavoro, il pool di risorse e la prenotazione della CPU e il limite per la sessione corrente: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;
I risultati dipendono dall'ora del giorno. Ad esempio, se l'ora corrente è 14:30, il risultato mostra che vengono usati
peak_hours_group
epeak_hours_pool
: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 100
Per ripristinare la configurazione iniziale di questo esempio, disconnettere tutte le sessioni usando i gruppi di carico di lavoro
peak_hours_group
eoff_hours_group
ed eseguire lo script T-SQL seguente. Lo script include i passaggi seguenti:- Disabilitare Resource Governor in modo che la funzione di classificazione possa essere eliminata.
- Eliminare i gruppi di carico di lavoro. Ciò richiede che nessuna sessione usi questi gruppi di carico di lavoro.
- Dopo aver eliminato i gruppi di carico di lavoro, eliminare i pool di risorse.
- Riconfigurare Resource Governor per ricaricare la configurazione effettiva senza la funzione di classificazione e i gruppi di carico di lavoro definiti dall'utente e i pool di risorse. Ciò abilita il Resource Governor.
- Disabilitare Resource Governor per ripristinare la configurazione iniziale.
/* 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;
Monitorare il Resource Governor usando le viste di sistema
Le query di esempio in questa sezione illustrano come monitorare le statistiche e il comportamento del runtime di Resource Governor.
Le statistiche di Resource Governor sono cumulative dopo l'ultimo riavvio del server. Se è necessario raccogliere statistiche a partire da un determinato momento, è possibile reimpostare le statistiche usando l'istruzione ALTER RESOURCE GOVERNOR RESET STATISTICS
.
Statistiche del tempo di esecuzione del pool di risorse
Per ogni pool di risorse, Resource Governor tiene traccia dell'utilizzo della CPU e della memoria, degli eventi di memoria insufficiente, delle concessioni di memoria, delle operazioni di I/O e di altre statistiche. Per altre informazioni, vedere sys.dm_resource_governor_resource_pools.
La query seguente restituisce un subset di statistiche disponibili per tutti i pool di risorse:
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;
Statistiche di runtime del gruppo di carico di lavoro
Per ogni gruppo di carico di lavoro, Resource Governor tiene traccia del tempo di CPU, del numero di richieste, delle attività bloccate, del tempo di attesa di blocco, delle ottimizzazioni delle query e di altre statistiche. Per maggiori informazioni, consultare i gruppi di lavoro di controllo delle risorse sys.resource_governor_workload_groups.
La query seguente restituisce un subset di statistiche disponibili per tutti i gruppi di carico di lavoro:
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
Aggregare le sessioni per gruppo di carico di lavoro e attributi di sessione
La query seguente restituisce una distribuzione di sessioni tra gruppi di carico di lavoro e statistiche di sessione aggregate per ogni gruppo di carico di lavoro.
Un numero elevato di sessioni con lo stato preconnect
potrebbe indicare lentezza nell'esecuzione del classificatore.
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;
Aggregare le richieste per gruppo di carico di lavoro e attributi di richiesta
La query seguente restituisce una distribuzione delle richieste tra gruppi di carico di lavoro e statistiche di richiesta aggregate per ogni gruppo di carico di lavoro:
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;
Pratiche ottimali per Resource Governor
Configurare la connessione amministrativa dedicata (DAC) e imparare a usarla. Per altre informazioni, vedere Connessione di diagnostica per gli amministratori di database. Se la configurazione di Resource Governor non funziona correttamente, è possibile usare la connessione amministrativa dedicata (DAC) per risolvere i problemi o per disabilitare Resource Governor.
Quando si configurano pool di risorse, prestare attenzione a specificare valori di grandi dimensioni per
MIN_CPU_PERCENT
,MIN_MEMORY_PERCENT
eMIN_IOPS_PER_VOLUME
. Un'impostazione di configurazioneMIN
riserva le risorse per un pool di risorse e le rende non disponibili per altri pool di risorse, incluso il pool didefault
. Per altre informazioni, vedere Creare un pool di risorse.La funzione di classificazione estende il tempo di elaborazione dell'accesso. Evitare la logica complessa e le query a esecuzione prolungata o a elevato utilizzo di risorse nel classificatore, in particolare se le query usano tabelle di grandi dimensioni. Una funzione eccessivamente complessa può causare ritardi di accesso o timeout di connessione.
Se è necessario usare una tabella nel classificatore e la tabella è piccola e per lo più statica, è consigliabile usare un costruttore con valori di tabella , come illustrato in un esempio precedente in questo articolo.
Evitare di usare una tabella modificata di frequente nel classificatore. Ciò aumenta il rischio di blocco che può ritardare gli accessi e causare timeout di connessione. Le soluzioni alternative seguenti possono attenuare il rischio, ma presentano svantaggi, incluso il rischio di classificazione errata:
- È consigliabile usare l'hint di tabella
NOLOCK
o l'hintREADUNCOMMITTED
equivalente. Per altre informazioni, vedere READUNCOMMITTED. - È consigliabile usare l'impostazione
LOCK_TIMEOUT
all'inizio della funzione di classificazione, impostandola su un valore basso, ad esempio 1.000 millisecondi. Per altre informazioni, vedere SET LOCK_TIMEOUT.
- È consigliabile usare l'hint di tabella
Se si esegue
ALTER RESOURCE GOVERNOR RECONFIGURE
dopo l'eliminazione di un pool di risorse inutilizzato in un computer con una grande quantità di memoria, il comando potrebbe richiedere molto tempo. Se una funzione di classificazione è attiva prima dell'avvio della riconfigurazione, è possibile che si verifichi un timeout dei nuovi tentativi di connessione.Se si elimina un pool di risorse inutilizzato, è consigliabile riconfigurare Resource Governor durante una finestra di manutenzione o un periodo di attività bassa.
Non è possibile modificare una funzione del classificatore mentre la configurazione di Resource Governor vi fa riferimento. Tuttavia, è possibile modificare la configurazione per usare una funzione di classificazione diversa. Se si desidera apportare modifiche al classificatore, è consigliabile creare una coppia di funzioni di classificazione. Ad esempio, è possibile creare
dbo.rg_classifier_A()
edbo.rg_classifier_B()
. Quando è necessaria una modifica alla logica del classificatore, seguire questa procedura:- Usare l'istruzione ALTER FUNCTION per apportare le modifiche nella funzione non attualmente usate nella configurazione di Resource Governor.
- Usare l'istruzione ALTER RESOURCE GOVERNOR per rendere attivo il classificatore modificato e quindi riconfigurare Resource Governor. Per esempio:
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.rg_classifier_B); ALTER RESOURCE GOVERNOR RECONFIGURE;
- Se è necessaria di nuovo una modifica, seguire la stessa procedura usando l'altra funzione (
dbo.rg_classifier_A()
).
La configurazione di Resource Governor viene archiviata nel database
master
. Assicurarsi di eseguire periodicamente il backup dimaster
e sapere come ripristinarlo. Per altre informazioni, vedere Backup e ripristino: Database di sistema. Poiché esistono limitazioni per il ripristino dimaster
, è consigliabile salvare separatamente una copia degli script di configurazione di Resource Governor. È possibile ricreare la configurazione di Resource Governor dagli script se è necessario ricompilare il databasemaster
.
Contenuto correlato
- Gestore delle risorse
- Abilitare il di Resource Governor
- pool di risorse di Resource Governor
- gruppo di lavoro del Resource Governor
- Configurare Gestore delle Risorse usando un Modello
- Visualizzare e modificare le proprietà di Resource Governor
- ALTERA RESOURCE GOVERNOR
- CREATE RESOURCE POOL
- CREA GRUPPO DI LAVORO
- CREA FUNZIONE