AREAS
HABITUALES DE SUPERVISIÓN Y OPTIMIZACIÓN
Pautas
|
||
Proceso: Conjunto de trabajo/Instancia de SQL
Server
|
Supervisa la cantidad de memoria que el proceso de SQL Server emplea
en una instancia de SQL Server.
|
Este contador debe ser mayor de 5.000 KB. En caso contrario, no habrá
disponible memoria adicional para SQL Server.
|
SQL Server: Administrador de búfer: Proporción de
aciertos de caché del búfer
|
Supervisa el porcentaje de páginas de la caché del búfer sin leer en
el disco duro. No establece diferencias entre la memoria física y la memoria
de archivos de paginación utilizadas para la caché del búfer.
|
Este contador debe ser mayor del 90 por ciento, ya que indica el
número de páginas almacenadas en la caché.
|
SQL Server: Administrador de búfer: Páginas
totales
|
Supervisa el número total de páginas de la caché del búfer incluidas
las páginas de base de datos, libres y descartadas de otros procesos.
|
Un número bajo podría indicar una frecuencia elevada de E/S o
hiperpaginación en disco. Considere la posibilidad de agregar más memoria.
|
SQL Server: Administrador de memoria: Memoria
total del servidor
|
Supervisa la cantidad total de memoria dinámica que utiliza el
servidor.
|
Si este contador indica, de forma regular, una cantidad alta en
comparación con la cantidad de memoria física disponible, puede que se
necesite más memoria.
|
Supervisión del uso de procesador y
subprocesos
Para obtener un rendimiento óptimo del
procesador debe haber un equilibrio entre el rendimiento y los tiempos de
respuesta.
Rendimiento del Procesador
Al examinar el uso del procesador,
debemos tener cuenta el tipo de trabajo que realizará la instancia de SQL
Server. Si SQL Server debe realizar un gran número de cálculos, como consultas
que requieran agregados o consultas limitadas a la memoria que no requieran E/S
de disco, puede utilizarse todo el tiempo del procesador. En los sistemas
multiprocesador deberá supervisar una instancia independiente de este contador
en cada procesador. Para determinar el promedio de todos los procesadores, utilice
el contador Sistema: % de tiempo de procesador total. Una tasa de procesador
que se mantiene alta de forma continuada puede indicar que necesita realizar
una actualización de CPU o agregar más procesadores. Asimismo, una tasa de
utilización de CPU que se mantiene alta de forma continuada podría indicar un
ajuste o un diseño deficientes de la aplicación.
Subprocesos
Cada instancia de SQL Server constituye
un proceso de sistema operativo independiente. Las instancias de SQL Server
2000 emplean subprocesos de Windows y, en ocasiones, intraprocesos, para
administrar estas tareas simultáneas de forma eficaz.
- Los
procesos son instancias de una aplicación, por ejemplo, SQL Server, que
pueden tener una o varias tareas.
- Los
subprocesos son mecanismos que procesan las tareas y se utilizan para
programar el tiempo en los procesadores.
- Para
lograr la máxima utilización de los procesadores, el sistema operativo
Windows 2008 R2 cambia entre los subprocesos cuando un subproceso queda
inactivo mientras espera a que una operación se complete, como una lectura
o escritura en el disco duro. El cambio entre subprocesos se denomina
cambio de contexto. Además, cada instancia de SQL Server mantiene un grupo
de subprocesos para las conexiones del usuario.
- Los
subprocesos de este grupo se denominan subprocesos de trabajo. Los cuellos
de botella pueden identificarse cuando Procesador: % de tiempo de
procesador se aproxima de forma regular al 100 por ciento y Sistema:
Longitud de cola de procesador muestra varios procesos de la aplicación a
la espera de ser procesados, o cuando el valor de Sistema: Cambios de
contexto/Seg. es alto. Si Procesador: % de tiempo de procesador se
aproxima al 100 por ciento y Sistema: Cambios de contexto/Seg. se aproxima
a 8.000, considere la posibilidad de utilizar procesadores más rápidos,
procesadores adicionales o de comenzar a utilizar intraprocesos.
- Un
solo subproceso puede contener varios intraprocesos. Para habilitar el uso
de intraprocesos dentro de un subproceso en SQL Server en lugar de
utilizar varios subprocesos para tareas de SQL, cambie el valor de
lightweight pooling a 1. Esto se denomina programación en modo de
intraproceso.
- Al
utilizar la programación en modo de intraproceso, SQL Server: „ Asigna los
intraprocesos del sistema operativo Windows 2008 R2 desde un grupo de
intraprocesos a las tareas del usuario, en lugar de asignar los
subprocesos del sistema operativo Windows 2008 R2 a un grupo de
subprocesos. „ Realiza todos los cambios entre intraprocesos, en lugar de
permitir que el sistema operativo Windows 2008 r2 se ocupe de esta tarea.
Cuando SQL Server cambia entre
intraprocesos dentro de un subproceso, Windows 2008 ahorra recursos, ya que no
necesita cambiar entre modos. La sobrecarga asociada con la habilitación de la
programación en el modo de intraproceso suele ser mayor que cuando se permite
que Windows 2008 realice el cambio de contexto. Basándose en la referencia,
debe asegurarse de que todos los cambios se prueban y tienen un efecto
favorable.
La tabla siguiente enumera las
descripciones y pautas para los contadores útiles de los objetos Sistema y
Procesador:
Objeto: Contador
|
Descripción
|
Pautas
|
Procesador: % de tiempo de procesador
|
Supervisa el porcentaje de tiempo que el procesador emplea en procesar
subprocesos no inactivos
|
El valor de este contador debe ser inferior al 90 por ciento. Si el
valor es superior, reduzca la carga de trabajo, aumente la eficacia de la
carga de trabajo o la capacidad del procesador.
|
Sistema: Cambios de contexto/Seg.
|
Supervisa el número de veces por segundo que el procesador realiza
cambios entre subprocesos
|
En equipos con multiprocesador, si el valor de
este contador llega a 8000 y el valor del contador Procesador: % de tiempo de procesadorestá por encima
del 90 por ciento, considere la posibilidad de habilitar la programación en
modo de intraproceso de SQL Server.
|
Sistema: Longitud de cola de procesador
|
Supervisa el número de subprocesos a la espera de utilizar el tiempo
de procesador.
|
Este contador nunca debe superar de forma regular el valor de 2. Si
éste es el caso, reduzca la carga de trabajo, incremente la eficacia de la
carga de trabajo o aumente la capacidad o el número de procesadores de un
sistema multiprocesador.
|
Procesador: %Tiempo privilegiado
|
Supervisa el porcentaje de tiempo que el procesador emplea del tiempo
privilegiado en la ejecución de los comandos del núcleo del sistema operativo
Windows 2000, como el procesamiento de solicitudes de E/S de SQL Server
|
Si se emplea un porcentaje significativo de tiempo de procesador en
ejecutar comandos del núcleo del sistema y el valor de los contadores de
disco duro es alto, considere la posibilidad de mejorar el rendimiento del
subsistema de E/S del disco duro.
|
Procesador: %Tiempo del usuario
|
Supervisa el porcentaje de tiempo que el procesador emplea en ejecutar
procesos del usuario, como el propio SQL Server.
|
Puede indicar que otros procesos o aplicaciones están ejecutando e
impidiendo operaciones de SQL Server.
|
Supervisión de entrada y salida en el
disco duro.
SQL Server usa llamadas de entrada y
salida (E/S) de Windows 2008 r2 para leer y escribir en el disco, y administra
cuándo y cómo se realiza la entrada y salida en el disco pero delega en Windows
la realización de las operaciones de E/S subyacentes. El subsistema de E/S
incluye el bus del sistema, tarjetas controladoras de disco, discos, unidades
de cinta, unidades de CD-ROM y muchos otros dispositivos de E/S. Habitualmente,
los discos representan el mayor cuello de botella de un sistema.
Supervisión de E/S de disco físico.
La supervisión de la entrada y salida
en el disco duro le ayudará a determinar si la escritura y lectura de páginas
supera la capacidad del subsistema de disco duro. Un subsistema de disco duro
ocupado también puede indicar un exceso de entrada y salida de archivos de
paginación provocada por una cantidad de memoria insuficiente. La tabla
siguiente describe los contadores de rendimiento de objeto que puede usar para
supervisar el rendimiento del subsistema del disco duro.
|
Objeto: Contador
|
Descripción
|
Pautas
|
|
Disco físico: %Tiempo de disco
|
Supervisa el porcentaje de tiempo que el disco duro emplea en atender
las solicitudes de lectura y escritura.
|
El valor de este contador debe ser inferior al 90 por ciento, de forma
regular.
|
|
Disco físico: Promedio de longitud de cola de
disco
|
Supervisa el promedio de solicitudes de lectura y escritura que se
ponen en cola.
|
El valor de este contador no debe ser superior al doble del número de
discos del cilindro.
|
|
Disco físico: Lecturas de disco/seg.
|
Supervisa la tasa de operaciones de lectura
|
El valor de este contador debe ser inferior de forma regular a la
capacidad del subsistema de disco duro.
|
|
Disco físico: Escritura de disco/seg.
|
Supervisa la tasa de operaciones de escritura.
|
El valor de este contador debe ser inferior de forma regular a la
capacidad del subsistema de disco duro.
|
Si estos contadores de disco duro indican que está sobrecargando la
capacidad del subsistema de disco duro, considere la posibilidad de:
- Ajustar
la aplicación o la base de datos para reducir las operaciones de E/S en el
disco duro (como cobertura y mejora de índices, o normalización).
- Aumentar
la capacidad de E/S de disco duro del hardware mediante el uso de un disco
duro más rápido.
- Transferir
algunos archivos a un disco duro o servidor adicional.
- Agregar
una matriz de discos duros.
- Aumentar
la cantidad de memoria, lo que podría contribuir a aliviar la
hiperpaginación en el disco.
Supervisión de bloqueos.
SQL Server bloquea los recursos
mediante distintos modos de bloqueo que determinan el tipo de acceso que las
transacciones actuales tendrán a los recursos. El bloqueo de filas aumenta la
simultaneidad, pero también la sobrecarga, ya que será necesario mantener más
bloqueos en caso de que se bloquee un gran número de filas. El bloqueo de
tablas es caro en lo que respecta a la simultaneidad pero produce una
sobrecarga menor, ya que reduce el número de bloqueos que mantener.
Interbloqueos
Los interbloqueos pueden producirse
cuando dos o más procesos esperan simultáneamente a que finalicen los bloqueos
que ha establecido cada uno. Ninguno de los procesos liberará el bloqueo que
mantiene hasta que pueda obtener el recurso que permanece bloqueado por el otro
proceso. Cuando se haya identificado un interbloqueo, para finalizarlo, SQL
Server elegirá automáticamente el subproceso (la víctima del interbloqueo) que
puede romper el interbloqueo sin que se produzcan tiempos de espera. Puede
utilizar la opción prioridad para definir el intervalo de tiempo durante el que
SQL Server esperará entre la detección de un bloqueo y la declaración de que se
trata de un interbloqueo.
Bloqueos de cierre.
La mayor parte de los problemas de
bloqueo se producen debido a que un único proceso mantiene bloqueos durante un
período prolongado, lo que causa una cadena de procesos bloqueados a la espera
de que otros procesos liberen sus bloqueos. SQL Server no identifica los
bloqueos de cierre y los resuelve automáticamente, lo que deja el recurso
bloqueado. Debe supervisar la existencia de bloqueos de cierre para poder
eliminarlos manualmente. Mediante la creación de una configuración de tiempo de
espera de bloqueo en la aplicación podrá impedir que se produzcan bloqueos de
cierre. Esto permitirá a la aplicación identificar la existencia de bloqueos de
cierre y deshacer la transacción, en lugar de esperar indefinidamente o volver
a emitir la instrucción bloqueada.
Administración de bloqueos.
El Monitor de sistema de Windows
supervisa la actividad global de bloqueo del sistema mediante el Contador de
objetos de bloqueo de SQL Server. Para trazar y registrar la actividad de
bloqueo de forma detallada, usamos el Analizador de SQL. El objeto Bloqueos del
Administrador corporativo de SQL Server proporciona información acerca de los
bloqueos de SQL Server en tipos de recursos individuales. Además, puede
supervisar la actividad de SQL Server mediante los procedimientos almacenados
de sistema sp_who y sp_lock.
El procedimiento almacenado de sistema
sp_who proporciona información de instantáneas acerca de los procesos y
usuarios actuales de SQL Server, incluida la instrucción que esté ejecutándose
e independientemente de que la instrucción esté bloqueada.
El procedimiento almacenado de sistema
sp_lock proporciona información de instantáneas acerca de los bloqueos,
incluido el identificador de objeto y de índice, el tipo de bloqueo y el tipo
de recurso al que se aplica el bloqueo.
Es posible que el uso de sp_lock para
presentar información de bloqueo no resulte práctico si se aplican y liberan
varios bloqueos más rápido de lo que sp_lock puede mostrarlos. Tras usar una de
estas herramientas para identificar el tipo de bloqueo y el identificador de
proceso, o el objeto que lo causa, puede usar la ventana Actividad actual del
Administrador corporativo de SQL Server para administrar el bloqueo.
Supervisión de consultas de bajo
rendimiento.
Para solucionar un problema de
rendimiento quizás se tiente la idea de optimizar únicamente el rendimiento del
servidor en el sistema, por ejemplo, el tamaño de la memoria, ubicación, número
y tipo de procesadores. Sin embargo, normalmente no es posible solucionar los
problemas relacionados con consultas de bajo rendimiento de esta forma. Para
ello debe analizar la aplicación, las consultas y las actualizaciones que la
aplicación emite a la base de datos, y la forma en que las consultas y las
actualizaciones interactúan con el esquema de base de datos.
Identificacion del rendimiento de las
consultas.
El Analizador de SQL
puede supervisar las consultas en función del tiempo transcurrido con el fin de
identificar las consultas de bajo rendimiento del sistema. Para trazar las
consultas de peor rendimiento, cree una traza que capture sucesos relacionados
con las clases de suceso TSQL y Procedimiento almacenado, en concreto, RPC:Completed (Completo) y SQL: BatchCompleted (Proceso
por lotes completado).
causas del bajo rendimiento en las
consultas.
Las consultas y actualizaciones cuya duración se prolonga de forma
imprevista pueden deberse a:
- Comunicaciones
de red lentas.
- Consultas
de Transact-SQL que transfieren una gran cantidad de datos entre el cliente
y el servidor.
- Memoria
insuficiente para SQL Server.
- Ausencia
de estadísticas útiles.
- Estadísticas
obsoletas o ausencia de índices útiles.
- Ausencia
de creación de bandas de datos útiles.
- Bloqueos
de cierre o interbloqueos causados por transacciones de larga duración
emitidos por otros usuarios.
- Utilización
de aplicaciones de proceso de transacciones y de ayuda a la toma de
decisiones en el mismo equipo.
No hay comentarios.:
Publicar un comentario