Creada el: 05/09/98 - Actualizada el: 22/06/99
Para poner a punto SQL Server es necesario ajustar la configuración, opciones, y valores de setup basadas en las observaciones de las características de trabajo del servidor. Típicamente estas observaciones se hacen durante el periodo de trabajo mas critico de servidor para perfeccionar las cargas de trabajo más pesadas. Las recomendaciones de afinación siguientes son aquéllas que generalmente tienen el mayor impacto en el trabajo de Servidor. Sin embargo, la aplicación de estas recomendaciones puede producir resultados diferentes que dependen del ambiente particular del Servidor.
Memoria
La memoria de SQL Server esta dividida en dos espacios, el cache
de procedimientos, y el cache de datos. El Servidor SQL distribuye eficazmente la memoria
entre el cache de procedimiento y el cache de datos usando los parámetros de
configuración del cache de procedimiento. La distribución de la memoria restante entre
procedimientos y datos, se encarga de mantener los objetos mas usados en sus respectivos
caches de memoria. Por consiguiente, los procedimientos almacenados mayormente usados
deben estar en el cache de procedimientos, mientras que la mayoría de índices y tablas
usadas mas frecuentemente deben estar en el cache de datos.
La mejor manera de determinar cómo es usada la memoria por el Servidor de SQL es ejecutar
DBCC MEMUSAGE. Esta sentencia indica la cantidad de memoria asignada al Servidor de SQL en
el comienzo, los 12 objetos más grandes en el cache de procedimientos, y los 20 objetos
más grandes en el cache de datos. Por consiguiente, las recomendaciones son basadas en el
uso de estos datos que determinaran el tamaño óptimo para los caches.
Optimizando el Cache de Datos
El cache de datos está compuesto de la memoria sobrante del Servidor de SQL una vez que los requisitos del cache de procedimiento han sido satisfechos. Lo mejor es tener bastante espacio del cache para contener la mayoría los índices usados y un porcentaje respetable de las tablas mas accedidas frecuentemente, reduciendo las entradas/salidas físicas. Usted también puede usar la sentencia DBCC MEMUSAGE para ver los 20 objetos más grandes del cache de datos y puede determinar un tamaño considerable para el cache de datos basado en los tamaños de estos objetos. Usted también puede determinar el tamaño de las tablas e índices accedidas mas frecuentemente aplicando las fórmulas del tamaño cedidas por Appendix A of Microsoft SQL Server Administrator's Companion. Habiendo calculado estos tamaños, usted puede elegir asignar bastante memoria al Servidor de SQL y contener la íntegramente los objetos de las bases de datos en el cache.
Optimizando el Cache de Procedimientos.
Al poner a punto el cache de procedimiento, lo mejor es
determinar el tamaño óptimo para contener los procedimientos almacenados más
activos. En realidad lo que se busca es prevenir las lecturas a procedimientos almacenados
en disco porque esto es muy costoso. Es más, si el cache de procedimiento es bastante
grande , los procedimientos no se descargaran del cache por los nuevos procedimientos
cargados en el. (Recuerde que el Servidor de SQL guardará una copia duplicada de cada
procedimiento que se accede por más de un usuario.) por defecto, el Servidor de SQL
distribuye 30 por ciento de memoria disponible al cache de procedimientos después que el
kernel de SQL se ha asignado. La tarea es determinar si este 30 por ciento es poco,
suficiente, o demasiado basado en el tamaño de objetos del cache de procedimientos. Es
importante no disminuir el cache de procedimientos debajo de 5 por ciento.
Usted puede determinar si el cache de procedimientos es bastante grande ejecutando los
procedimientos almacenados mas frecuentemente usados y ejecutando la sentencia DBCC
MEMUSAGE; esto mostrara los 12 procedimientos almacenados más grandes en el cache de
procedimientos. Si usted tiene más de 12 procedimientos almacenados, puede continuar
ejecutando los demás procedimientos y ejecutar cada vez la sentencia DBCC MEMUSAGE para
ver si uno de los procedimientos previamente ejecutados ha permanecido en el cache. Usted
también puede ejecutar cada procedimiento almacenado y obtener su tamaño de ejecución
usando DBCC MEMUSAGE. Después de que usted ha ejecutado todos los procedimientos que son
llamados con mas frecuencia y ha obtenido sus tamaños, sume éstos valores y obtenga el
tamaño total necesario del cache para todos los procedimientos.
TEMPDB en RAM
Las consultas ejecutadas contra el Servidor de SQL que usan
espacio de trabajo temporal como las operaciones, GROUP BY, tablas temporales, uniones de
tablas (JOIN), son beneficiadas si la tempdb se encuentra en RAM. Sin embargo, para poner
la tempdb en RAM, usted debe tener mas memoria disponible que la asignada a Windows NT
Server y SQL Server. Por consiguiente, si la tempdb esta actualmente en 25 MB de tamaño,
entonces la memoria total requerida para el sistema es: 16 MB para el Windows NT más (XX)
la memoria para SQL Server mas 25 MB para el tempdb.
Por Luis Walter Reynoso para Ethek & Friends