10 problemas de rendimiento de SQL Server 2005 en aplicaciones de datos e informes.

Publicado: noviembre 30, 2007 en Categoria All

Los 10 principales problemas de rendimiento de SQL Server 2005 para las aplicaciones de almacenamiento de datos e informes

El almacenamiento de datos relacionales o las cargas de trabajo de informes se caracterizan por volúmenes bajos de transacciones a gran escala. Estas aplicaciones a menudo se caracterizan por tener, predominantemente, cargas de trabajo de lectura (por ejemplo, ayuda a la toma de decisiones, análisis e informes) con cargas periódicas de fuentes y lotes. Es importante tener en cuenta estas características a medida que examinamos el significado del diseño de las bases de datos, la utilización de recursos y el rendimiento del sistema. A continuación se detallan los principales cuellos de botella del rendimiento o trampas que se deben evitar en las aplicaciones de almacenamiento de datos o de informes.

1

Se generará un problema de diseño en la base de datos si….

 

  • Se llevan a cabo numerosas operaciones de clasificación. Si realiza, una y otra vez, las mismas operaciones de clasificación, podrá evitarlas llevando a cabo una indización apropiada.
  • Las búsquedas de RID excesivas se realizan en tablas de montones. Las búsquedas de RID implican la necesidad de E/S adicional para recuperar las columnas que no están en el índice utilizado. Esto puede evitarse con índices no agrupados cubiertos.
  • Las búsquedas de clave en comparación con las claves de clústeres son como combinaciones, sin embargo éstas se marcan como “búsquedas” sólo en el plan de presentación XML. Éstas pueden evitarse con índices no agrupados cubiertos.
  • Un índice potencialmente beneficioso se ha perdido en las columnas combinadas lo cual ha provocado combinaciones HASH. Los índices en columnas combinadas pueden evitar el hash.

2

Se generarán trampas de CPU….

 

  • Si las esperas de señal > 25% de las esperas totales, se produce un cuello de botella de CPU. Consulte sys.dm_os_wait_stats para obtener más información sobre las esperas de señal y las esperas totales. Las esperas de señal miden el tiempo empleado en la cola ejecutable esperando CPU. Las esperas de señal alta indican un cuello de botella de CPU.
  • Evite la reutilización inadecuada del plan. Si la consulta es idéntica, la reutilización del plan será positiva. Sin embargo, la parametrización de la consulta que admite la reutilización del plan es únicamente apropiada cuando el conjunto de resultados (y tablas intermedias de trabajo) es de tamaño semejante al plan original. La reutilización del plan puede ser perjudicial si los tamaños del conjunto de resultados varían significativamente debido a los valores de parámetros diferentes, comunes en escenarios de almacenamiento de datos. Los planes incorrectos pueden llevar también a consultas de ejecución más largas y E/S o demanda intensiva de memoria. Por lo tanto, es preferible el costo de la generación del plan en dichos casos a la reutilización del plan. A diferencia de OLTP, las consultas de almacenamiento de datos no son siempre idénticas en términos de conjuntos de resultado ni planes óptimos de consulta.

3

Se generará un cuello de botella de la memoria si….

 

  • Se produce una caída grande y repentina en la duración prevista de la página. Las aplicaciones DW (por ejemplo, grandes transacciones) podrían experimentar grandes caídas en la duración prevista de la página. Esto se debe a un vaciado de caché en una lectura grande. Consulte el objeto de monitor de rendimiento del administrador de búfer de SQL Server.
  • Concesiones de memoria pendiente. Consulte el contador de concesiones de memoria pendiente en el objeto de monitor de rendimiento del administrador de memoria de SQL Server. Las concesiones de memoria grandes pueden ser habituales en las aplicaciones de almacenamiento de datos. El tener más memoria puede ayudar, de lo contrario el usuario no podrá ejecutar hasta que se produzca la concesión de memoria.
  • Caídas repentinas o frecuencia de aciertos de caché de SQL consistentemente baja. Las caídas o una frecuencia de aciertos de caché baja pueden indicar demandas intensivas de la memoria o índices perdidos.

4

Se generará un cuello de botella de E/S si…

 

  • La mejor métrica para el rendimiento de escritura la constituyen los segundos de disco por lectura o los segundos de disco por escritura. Cuando el sistema de E/S NO se encuentra bajo una carga considerable, no habrá cola de disco, por lo que el índice de segundos de disco por lectura o escritura será inmejorable Normalmente, se tarda 4-8 milisegundos en completar una lectura cuando no hay la presión de E/S. Los factores de rendimiento de E/S son el número de ejes y el rendimiento de la unidad, así como la E/S secuencial y aleatoria por segundo (según el proveedor). A medida que las solicitudes de E/S aumentan, puede advertir la cola de disco. Los efectos de la puesta en cola se reflejan en segundos de disco altos por lectura o escritura. Los valores periódicos más altos para los segundos/lectura de disco pueden ser aceptables para muchas aplicaciones. Para aplicaciones OLTP de alto rendimiento, los sofisticados subsistemas SAN ofrecen mayor escalabilidad de E/S y resistencia en el tratamiento de los picos de actividad de E/S. Los valores altos continuos de los segundos/lectura de disco (>15 ms) indican un cuello de botella de disco.
  • Media alta de segundos de disco por escritura. Consulte el valor lógico del monitor de rendimiento o disco físico. Las cargas de almacenamiento de datos pueden registrarse con inserciones, actualizaciones o eliminaciones o pueden no registrarse mediante copia masiva. Las operaciones registradas requieren escritura de registro de transacciones. Una escritura de registro de transacciones puede tardar tan solo 1 ms (o menos) contribuyendo al alto rendimiento de entornos SAN. Para muchas aplicaciones, un pico periódico en la media de segundos de disco por escritura es aceptable, considerando el alto costo de los sofisticados subsistemas SAN. Sin embargo, los valores altos continuos de la media de segundos/escritura de disco constituyen un indicador seguro de un cuello de botella de disco.
  • E/S de gran tamaño como los recorridos de intervalo y de tabla pueden deberse a índices perdidos.

5

No admitir el cuello de botella si….

 

  • Si hay contención del índice. Busque esperas de bloqueo alto y de seguro en sys.dm_db_index_operational_stats. Compare con las solicitudes de bloqueo y de seguro.
  • Media alta de la espera de bloqueo de fila o de seguro. La media de espera de bloqueo de fila y de seguro se calcula dividiendo los milisegundos (ms) de espera de bloqueo y de seguro entre las esperas de bloqueo y seguro. La media de milisegundos de espera de bloqueo calculada a partir de sys.dm_db_index_operational_stats representa el tiempo medio para cada bloque.
  • El informe del proceso de bloques muestra bloques largos. Consulte sp_configure “umbral del proceso bloqueado” y el analizador “Informe del proceso de bloques” en el evento Errores y advertencias.
  • Alto número de bloqueos. Consulte el analizador “Bloqueo gráfico” en el evento Bloqueos par identificar las instrucciones implicadas en el bloqueo.

6

Se generará un cuello de botella de red si….

 

  • Se produce una latencia alta de la red asociada a una aplicación que incurra en numerosas acciones de ida y vuelta a la base de datos.
  • Se ha agotado el ancho de banda de la red. Consulte los paquetes/seg. de los contadores y los contadores de ancho de banda actuales en el objeto de la interfaz de red del monitor de rendimiento. El ancho de banda real de los marcos TCP/IP se calcula como paquetes/seg. de * 1500 * 8 /1000000 Mbps .

7

Es posible que se generen trampas de estadística…

 

  • Puesto que las cargas de trabajo de almacenamiento de datos y de informes son, en su mayor parte, lecturas compatibles con otras lecturas, las esperas de bloqueo exclusivas e incompatibles sólo entrarían en juego, comúnmente, durante las cargas de lote o fuentes periódicas. Si las estadísticas de espera superiores son LCK_x. o PAGELATCH_EX, consulte “SQL Server 2005 Performance Tuning using Waits & Queues” (en inglés) si desea una explicación de sys.dm_os_wait_stats.
  • Se generará un cuello de botella de E/S si las estadísticas de espera superiores en sys.dm_os_wait_stats están relacionadas con E/S de un modo ASYNCH_IO_la TERMINACION, IO_COMPLETION, LOGMGR, WRITELOG, o PAGEIOLATCH_x.

8

Trampas de indización.

 

  • El almacenamiento de datos a gran escala puede beneficiarse de la existencia de más índices. Los índices pueden ser utilizados para cubrir las consultas y evitar la clasificación. Para una aplicación de almacenamiento de datos, el costo de la sobrecarga de índices sólo se paga una vez que se cargan los datos.
  • Busque los índices perdidos en sys.dm_db_missing_index_group_stats, sys.dm_db_missing_index_groups y sys.dm_db_missing_index_details

9

Vigile la fragmentación.

 

  • La fragmentación excesiva es problemática para operaciones a gran escala de E/S. La función con valores de tabla Administración dinámica sys.dm_db_index_physical_stats devuelve el porcentaje de fragmentación en columna avg_fragmentation_in_percent. La fragmentación no debe exceder 25%. La reducción de la fragmentación de índice puede beneficiar a los recorridos de intervalo grandes, habituales en los escenarios de almacenamiento de datos e informes

10

Considere las particiones de tabla para unas cargas más rápidas

 

  • Para las tablas grandes habituales en los almacenamientos de datos, la partición de tabla ofrece importantes ventajas de rendimiento y de capacidad de administración. Por ejemplo, el tipo más rápido de carga es una copia masiva no registrada. Los requisitos para copias masivas no registradas son que los índices deben ser descartados. Esto no es posible en una tabla inmensa de, al menos, mil millones de filas A MENOS QUE utilice las particiones de tabla. Esto le permite crear una tabla provisional idéntica a la tabla grande (menos los índices). Se usa una copia masiva no registrada rápida para cargar los datos. En lo sucesivo, los índices se agregarán a la tabla provisional seguidos de restricciones. A continuación, una operación de ACTIVACIÓN de sólo metadatos conmuta las ubicaciones de puntero de la tabla provisional rellena y la partición objetivo vacía de la tabla con particiones, lo cual tiene como resultado una partición completamente rellena y una tabla provisional vacía. Aparte de una copia masiva rápida, la tabla provisional nos permite eliminar bloqueos en la tabla grande con particiones durante la carga. Para obtener más información, consulte ” Carga masiva de datos en tablas particionadas“. Además de las cargas rápidas, las tablas con particiones permiten las eliminaciones rápidas (para archivar o eliminar ventanas deslizantes) en las cuales las eliminaciones registradas a gran escala son reemplazadas con operaciones de DESACTIVACIÓN de particiones de sólo metadatos que conmutan las ubicaciones del puntero de la partición completa (que se “eliminará”) y de una tabla monolítica vacía. La operación de DESACTIVACIÓN tiene como resultado una partición vacía y una tabla provisional monolítica completamente rellena. A continuación, la tabla monolítica puede descartarse o agregarse a una tabla de archivos con particiones mediante una operación de ACTIVACIÓN. Las particiones ofrecen también mejoras de capacidad de administración cuando se combinan con colocaciones específicas de grupo de archivos, lo cual permite estrategias personalizadas de copia de seguridad y de restauración.
  • En comparación con OLTP, una aplicación de almacenamiento de datos o informes se caracteriza por un número pequeño de grandes transacciones de SELECCIÓN, cada una muy diferente. Las implicaciones son considerables para el diseño de la base de datos, para el uso de recursos y para el rendimiento del sistema. Estas distinciones proporcionan objetivos y perfiles de la utilización del recurso muy diferentes.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s