Actividades de computación para alumnos de preescolar
Sql tips 07_resource governor
1. GPI.- Confidencial
El Resource Governor
Es una nueva funcionalidad del Sql Server 2008 Enterprise Edition.
La idea del Resource Governor es la de controlar las consultas que llegan desde una aplicación X
con el fin de que podamos asignarle algunos recursos (En este primer release de Sql Server 2008
podemos asignar recursos de procesador y memoria únicamente, no se descarta que
posteriormente se puedan asignar recursos de disco, entre otros.)
El funcionamiento del Resource Governor es relativamente sencillo, toda consulta que ingresa al
Sql Server es analizada por una función que se encarga de Clasificar dicha sentencia e indicarle a
qué grupo pertenece para su procesamiento, a dicho grupo se le asigna un pool de recursos para
su procesamiento.
Partes que componen el Resource Governor
Resource Pools: Son contenedores de los recursos de memoria y procesador que pueden ser
asignados a un grupo. Como se mencionó anteriormente es factible que más adelante se
incorporen nuevos recursos para el control. Cada Pool tiene dos partes, una parte no se traslapa
con otros pools lo que le permite indicarle un valor mínimo al recurso. La otra parte del Pool si es
compartida con otros Pools, esto permite definir un valor máximo de consumo para los recursos.
MIN o MAX para el CPU
MIN o MAX en porcentajes de memoria.
MIN representa la mínima disponibilidad de recursos garantizados para el CPU y la memoria, el MX
representa el tamaño máximo del Pool.
Existen dos Pool predefinidos
• Internal Pool: Representa los recursos consumidos por Sql Server, no puede ser
modificado, pero si puede ser monitoreado.
• Default Pool: Incialmente solo contiene el default workload group, este pool no puede ser
borrado pero si puede ser modificado y múltiples grupos pueden pertenecer a él. El
default group no puede ser trasladado a ningún otro Pool.
Workload Groups: Son simples nombres que el DBA define para permitir que múltiples conexiones
compartan recursos definidos en un pool.
Al igual que los pools existen dos grupos predefinidos en Sql Server.
• Internal Gruop: Utilizado por Sql Server a un novel interno, los usuarios no pueden agregar
sesiones al grupo interno ni afectar la utilización de recursos. Al igual que el Internal Pool
solamente puede ser monitoreado.
• Default Group: Las sesiones que ingresen y que no tengan especificado un grupo son
remitidas a este grupo, ya sea por un fallo en la función de clasificación o porque el grupo
especificado en la función no exista.
Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
2. GPI.- Confidencial
Función de Clasificación: Es la que se encarga de destinar las aplicaciones a su respectivo
Workload Group, dicha función es aplicada a cada nueva sesión. La sesión se mantiene en el grupo
hasta que la misma termine su ejecución. Solamente puede existir una función de clasificación
activa en un determinado momento en el tiempo. Si no se define función de clasificación todas las
nuevas sesiones son asignadas al grupo DEFAULT. Las funciones son básicamente lo mismo que
una función definida por el usuario, utilizando funciones del sistema para determinar el grupo al
que pertenecen, hablamos de funciones de sistema como las siguientes SUSER_NAME(),
SUSER_SNAME(), IS_SRVROLEMEMBER(), LOGINPROPERTY, CONNECTIONPROPERTY, recordemos
que todas estas funciones pueden ser aplicadas a una sesión que es el verdadero objetivo del
resource governor.
Diagrama del Resource Governor
Sesiones
Clasificación
Internal Group Grupo 1 Default Group
Internal Pool Pool 1 Default Pool
Grupo 2 Grupo 3 Grupo 4
Aplicación 1 Aplicación 2 Aplicación 3
Pool 2
Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
3. GPI.- Confidencial
Interesante la teoría, ahora hagamos la práctica. Les recomiendo ir ejecutando los scripts uno a la
vez, no lo ejecuten en un solo batch.
El ejemplo lo que hace es crear un pool y un workload group para todas aquellas tareas que
ejecutaría un DBA desde el Managment Studio, puede utilizarse también para querys que vaya a
ejecutar un desarrollador y que nosotros no deseamos darle mas recursos de los necesarios para
que no consuma recursos del servidor de base de datos de forma innecesaria.
--Activa el resource governor si no está activo
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
/****** Object: ResourcePool [DBA] Script Date: 04/17/2009 15:45:47
Crea el pool de recursos******/
CREATE RESOURCE POOL [DBA] WITH
(min_cpu_percent=0,
max_cpu_percent=55,
min_memory_percent=1,
max_memory_percent=25)
GO
/****** Object: WorkloadGroup [TUNNING] Script Date: 04/17/2009 15:46:19
Crea el grupo al que va a pertenecer las sesiones******/
CREATE WORKLOAD GROUP [TUNNING] WITH(group_max_requests=50,
importance=Medium,
request_max_cpu_time_sec=20,
request_max_memory_grant_percent=25,
request_memory_grant_timeout_sec=0,
max_dop=0) USING [DBA];
GO
--Se crea la funcion de clasificacion para determinar la aplicacion cliente.
CREATE FUNCTION UfnClasificador() RETURNS SYSNAME
WITH SCHEMABINDING AS
BEGIN
DECLARE @grupo SYSNAME
IF (APP_NAME() LIKE 'Microsoft SQL Server Management Studio - Query')
SET @grupo= 'TUNNING'
ELSE
SET @grupo= 'default' RETURN @grupo
END;
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = [dbo].[UfnClasificador]);
Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
4. GPI.- Confidencial
GO
Una vez ejecutados los scripts y si abrimos el Managment Studio de Sql Server 2008 podemos
ejecutar sentencias y vamos a notar como realmente el consumo de recursos no sobrepasa los
límites establecidos por el resource governor. Desde el Performance Monitor seleccionamos el
contador SQLSERVER:Resource Pool Stats y luego seleccionamos el pool que deseamos monitorear
y presionamos el botón add. Una vez que presionamos el botón Ok iniciamos el proceso de
monitoreo que se presenta en las siguientes pantallas.
Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
5. GPI.- Confidencial
Pongamos atención a la línea de color verde que presenta un consumo de alrededor de 35% de
consumo de CPU, con algunos altos y bajos, si recordamos los parámetros definidos podemos
constatar que lo definimos con un valor máximo de 35% lo que obliga a la consulta a respetar ese
consumo de recursos. Vean que al final de la pantalla se muestra un incremento en el consumo,
esto se debe a que se modificó dentro de la pantalla de propiedades el valor máximo de consumo,
siendo ahora de un 55%.
Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica
6. GPI.- Confidencial
Vista completa del monitoreo ya con el aumento de los recursos de procesador en un 55%.
Espero que les haya sido de utilidad dicho artículo.
Atte: Adrián Miranda Cordero, DBA, Gpi Consultores.
Tel: (506) 297 8132 – 244-5849 | De la Basílica de Santo Domingo, Heredia; 200 mts norte y 900 mts este. Apto 103-1100, Costa Rica