Resource Governor
El SQL Server 2008 incluye una nueva característica llamada el gobernador de recursos, el cual ofrece varias maneras de manejar sus cargas de trabajo en SQL 2008.
Básicamente, usted puede definir o limitar los recursos que pueden utilizar sus instancias de SQL Server mediante reglas, de esta manera, usted podrá hacer cosas como:
- Especificar una cantidad máxima de solicitudes para grupos específicos
- Cantidad máxima de tiempo (segundos) que puede correr una solicitud para grupos específicos
- Asignar % de memoria a grupos específicos
- Mínimo y máximo de % de CPU y % de memoria para grupos específicos
- Grado de paralelismo (cantidad de operaciones simultáneas que pueden ser ejecutadas) para grupos específicos
Por ejemplo, digamos que tengo un servidor con SQL Server 2008 recién instalado, y quiero separar claramente grupos de trabajo según su función, es decir, yo quiero establecer claramente grupos para los siguientes tipos de solicitudes:
- Las que son hechas por mi aplicación (quiero darles un mínimo de 50% de procesador y se caracterizarán por provenir de una aplicación llamada "MiAplicación" o desde el Management Studio)
- Las que son hechas desde mi servidor de reportes (quiero darles un máximo de 50% de procesador y se caracterizarán por ser enviadas desde mi servidor de Report Server)
- Las que son hechas por los administradores (quiero darles un máximo de 10% de procesador y se caracterizarán por ser enviadas utilizando el usuario "sa")
La sintaxis para crear los grupos (sin especificar prioridades en el procesador de momento) sería la siguiente:
BEGIN TRAN
CREATE WORKLOAD GROUP groupAdhoc
CREATE WORKLOAD GROUP groupReports
CREATE WORKLOAD GROUP groupAdmin
GO
CREATE FUNCTION rgclassifier_v1() RETURNS SYSNAME
WITH SCHEMABINDING
AS
BEGIN
DECLARE @grp_name AS SYSNAME
IF (SUSER_NAME() = 'sa')
SET @grp_name = 'groupAdmin'
IF (APP_NAME() LIKE '%MANAGEMENT STUDIO%')
OR (APP_NAME() LIKE '%MiAplicacion%')
SET @grp_name = 'groupAdhoc'
IF (APP_NAME() LIKE '%REPORT SERVER%')
SET @grp_name = 'groupReports'
RETURN @grp_name
END
GO
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION= dbo.rgclassifier_v1)
COMMIT TRAN
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
En este punto, solo queda especificar las reglas de procesador para cada uno de los grupos. Para simplificar el ejemplo, solo crearemos la regla para las solicitudes de aplicación y queda a discreción del lector inferir las otras dos reglas:
BEGIN TRAN
ALTER RESOURCE POOL poolAdhoc
WITH (MIN_CPU_PERCENT = 50);
ALTER WORKLOAD GROUP groupAdhoc
USING poolAdhoc;
COMMIT TRAN
GO
ALTER RESOURCE GOVERNOR RECONFIGURE
GO
Aporte realizado por Hector Bejarano
Comments