Introduzione a Resource Governor
Resource Governor è una nuova tecnologia di SQL Server 2008 che consente di gestire il carico di lavoro e le risorse di SQL Server specificando limiti relativi all'utilizzo delle risorse da parte delle richieste in entrata. Nel contesto di Resource Governor il carico di lavoro è un set di richieste o query con dimensioni simili che può o deve essere considerato come singola entità. Sebbene non si tratti di un requisito obbligatorio, utilizzando in modo uniforme le risorse di un carico di lavoro è possibile sfruttare al massimo i vantaggi offerti da Resource Governor. I limiti delle risorse possono essere riconfigurati in tempo reale con un minimo impatto sui carichi di lavoro in esecuzione.
In un ambiente con più carichi di lavoro distinti nello stesso server Resource Governor consente di differenziare tali carichi di lavoro e allocare le risorse condivise in modo appropriato, in base ai limiti specificati. Tali risorse sono rappresentate da CPU e memoria.
Resource Governor è disponibile solo nelle edizioni Enterprise, Developer ed Evaluation di SQL Server.
Tipi di problemi relativi alle risorse
Resource Governor è progettato per risolvere i seguenti tipi di problemi relativi alle risorse che risultano comuni in un ambiente di database:
Query runaway nel server. In questo scenario una query a utilizzo elevato di risorse può impiegare tutte le risorse del server o la maggior parte di esse.
Esecuzione imprevista del carico di lavoro. In questo scenario le applicazioni simultanee nello stesso server hanno carichi di lavoro di dimensione e tipo diversi. Ad esempio, due applicazioni del data warehouse o una combinazione di applicazioni OLTP e del data warehouse. Queste applicazioni non sono isolate tra loro e la contesa tra risorse risultante provoca l'esecuzione imprevista del carico di lavoro.
Impostazione della priorità del carico di lavoro. In questo scenario un carico di lavoro può continuare con maggiore rapidità rispetto a un altro oppure essere completato in caso di contesa tra risorse. Resource Governor consente di assegnare una priorità relativa ai carichi di lavoro.
Tutti gli scenari precedenti richiedono la possibilità di differenziare in qualche modo i carichi di lavoro. In Resource Governor è possibile effettuare quanto segue:
Classificare le connessioni in entrata ed eseguire il routing dei relativi carichi di lavoro a un gruppo specifico.
Monitorare l'utilizzo delle risorse per ciascun carico di lavoro in un gruppo.
Creare pool di risorse e impostare limiti specifici del pool sull'utilizzo della CPU e sull'allocazione della memoria. In questo modo si evita o si riduce la possibilità che si verifichino query runaway.
Associare carichi di lavoro raggruppati a un pool specifico di risorse.
Identificare e impostare priorità per i carichi di lavoro.
Vincoli di Resource Governor
In questa versione di Resource Governor sono previsti i seguenti vincoli:
La gestione delle risorse è limitata a Motore di database di SQL Server. Non è possibile utilizzare Resource Governor per Analysis Services, Integration Services e Reporting Services.
Non è disponibile il monitoraggio o la gestione del carico di lavoro tra istanze di SQL Server.
La specifica del limite si applica alla memoria e alla larghezza di banda della CPU gestite da SQL Server.
Carichi di lavoro OLTP. Resource Governor è in grado di gestire i carichi di lavoro OLTP. Questi tipi di query, in genere con una durata molto breve, non restano tuttavia mai abbastanza a lungo nella CPU da richiedere l'applicazione dei controlli di larghezza di banda. Ciò può comportare un'asimmetria nelle statistiche restituite per la percentuale di utilizzo della CPU.