Las condiciones cambiantes se traducen en cambios en el rendimiento. En sus evaluaciones, los cambios de rendimiento se aprecian a medida que el número de usuarios aumenta, los métodos de acceso y conexión de los usuarios cambian, el contenido de la base de datos crece, las aplicaciones cliente cambian, los datos de las aplicaciones cambian, las consultas son más complejas y el tráfico de red crece. Con la ayuda de las herramientas de SQL Server para supervisar el rendimiento, puede asociar algunos cambios del rendimiento con las condiciones cambiantes y las consultas complejas. A continuación se muestran algunos escenarios a modo de ejemplo:
- Mediante la supervisión de los tiempos de respuesta para las consultas utilizadas con frecuencia, puede determinar si es necesario modificar la consulta o los índices de las tablas donde es necesario ejecutar las consultas.
- Mediante la supervisión de las consultas Transact-SQL cuando se ejecutan, puede determinar si están escritas correctamente y si producen los resultados esperados.
- Mediante la supervisión de los usuarios que intentan conectarse a una instancia de SQL Server, puede determinar si la seguridad está configurada de forma correcta y probar las aplicaciones o sistemas de desarrollo.
A medida que aumenta el número de usuarios, aumenta la competencia para obtener recursos de un servidor, y esto hace que el tiempo de respuesta aumente y el rendimiento global disminuya.
Establecer una línea base para el rendimiento
Para determinar si el sistema SQL Server funciona de forma óptima, tome medidas del rendimiento a intervalos regulares, incluso cuando no existan problemas, para establecer una línea base del rendimiento del servidor. Compare cada conjunto de medidas nuevo con las medidas tomadas anteriormente.
Las áreas siguientes afectan al rendimiento de SQL Server:
- Recursos del sistema (hardware)
- Arquitectura de red
- Sistema operativo
- Aplicaciones de bases de datos
- Aplicaciones cliente
- Las horas con el máximo y el mínimo nivel de funcionamiento.
- Tiempos de respuesta de comandos de procesamiento por lotes o consultas de producción.
- Tiempos de finalización de operaciones de copias de seguridad y restauración de bases de datos
Determinar la actividad de los usuarios
Se puede supervisar la actividad de cada usuario para identificar el tipo y la ubicación de las transacciones de bloqueo o el rendimiento lento de Microsoft SQL Server.
La supervisión de la actividad de los usuarios ayuda a identificar tendencias como los tipos de transacciones ejecutadas por los usuarios, el número de consultas ineficaces y ad hoc, y los tipos de transacciones que requieren la mayor parte de los recursos. Para recopilar información estadística sobre los usuarios, utilice el SQL Server Profiler o el Monitor de sistema. Utilice el Monitor de actividad de SQL Server Management Studio para la supervisión ad hoc de SQL Server, lo que permite determinar la actividad de los usuarios en el sistema.
Aislar problemas de rendimiento
A menudo suele ser más efectivo utilizar conjuntamente varias herramientas de Microsoft SQL Server o Microsoft Windows para aislar los problemas de rendimiento de una base de datos que usar sólo una herramienta cada vez. Por ejemplo, la característica Plan de ejecución gráfico, denominada también plan de presentación, le ayuda a reconocer los interbloqueos en una sola consulta. Sin embargo, puede reconocer más fácilmente otros problemas de rendimiento si utiliza conjuntamente las características de supervisión de SQL Server y Windows.
El SQL Server Profiler puede utilizarse para supervisar y solucionar problemas de Transact-SQL o problemas relacionados con las aplicaciones. Asimismo, puede utilizar el Monitor de sistema para supervisar problemas relativos al hardware y otros problemas relacionados con el sistema.
Puede supervisar las siguientes áreas para solucionar problemas:
El SQL Server Profiler puede utilizarse para supervisar y solucionar problemas de Transact-SQL o problemas relacionados con las aplicaciones. Asimismo, puede utilizar el Monitor de sistema para supervisar problemas relativos al hardware y otros problemas relacionados con el sistema.
Puede supervisar las siguientes áreas para solucionar problemas:
- Procedimientos almacenados de SQL Server o lotes de instrucciones Transact-SQL enviadas por aplicaciones de usuarios.
- Actividad de los usuarios, como bloqueos o interbloqueos.
- Actividad del hardware, como el uso de los discos.
- Errores de programación de aplicaciones debidos a instrucciones Transact-SQL escritas incorrectamente.
- Errores de hardware, como los relativos a discos o a la red.
- Bloqueo excesivo debido a un diseño incorrecto de la base de datos.
Herramientas para solucionar problemas comunes de rendimiento
Igual de importante es la correcta selección del problema de rendimiento que desea que cada herramienta supervise u optimice. La herramienta y la utilidad dependen del tipo de problema de rendimiento que desee resolver.
En los temas siguientes se describen diversas herramientas de supervisión y optimización y los problemas que ayudan a solucionar.
Identificar cuellos de botella
Minimizar los interbloqueos
Administrar la memoria para bases de datos de gran tamaño
Supervisar el uso de la memoria
Optimizar el diseño físico de las bases de datos
En los temas siguientes se describen diversas herramientas de supervisión y optimización y los problemas que ayudan a solucionar.
Identificar cuellos de botella
Minimizar los interbloqueos
Administrar la memoria para bases de datos de gran tamaño
Supervisar el uso de la memoria
Optimizar el diseño físico de las bases de datos
Identificar cuellos de botella
El acceso simultáneo a recursos compartidos causa cuellos de botella. En general, los cuellos de botella están presentes en todos los sistemas de software y son inevitables. Sin embargo, la demanda excesiva de recursos compartidos causa un tiempo de respuesta largo, y debe identificarse y corregirse.
Entre las causas de estos cuellos de botella se incluyen:
Entre las causas de estos cuellos de botella se incluyen:
- Recursos insuficientes que requieren componentes adicionales o actualizados.
- Recursos del mismo tipo que no distribuyen de forma equilibrada las cargas de trabajo; por ejemplo, cuando un recurso monopoliza un disco.
- Recursos que funcionan incorrectamente.
- Recursos mal configurados.
La duración excesiva de varios eventos es un indicador de cuello de botella que puede corregirse.
Por ejemplo:
Por ejemplo:
- Otros componentes pueden evitar que la carga alcance este componente, lo que aumenta el tiempo que se tarda en completar la carga.
- Las solicitudes de cliente pueden tardar más tiempo debido a una congestión de la red.
| Posible área del cuello de botella | Efectos en el servidor |
|---|---|
| Uso de la memoria | Si no se asignó o no hay disponible suficiente memoria para Microsoft SQL Server, el rendimiento disminuirá. Los datos se deben leer en el disco, y no directamente en la caché de datos. Los sistemas operativos Microsoft Windows realizan una paginación excesiva intercambiando datos con el disco cuando son necesarias las páginas. |
| Uso de la CPU | Un uso excesivo continuo de la CPU puede indicar que las consultas de Transact-SQL deben optimizarse o que es necesaria una actualización de la CPU. |
| Entrada/salida (E/S) de disco | Las consultas de Transact-SQL se pueden optimizar para reducir la E/S innecesaria; por ejemplo, mediante el uso de índices. |
| Conexiones de usuario | Puede haber demasiados usuarios obteniendo acceso al servidor de forma simultánea, lo que disminuye el rendimiento. |
| Bloqueos de cierre | Las aplicaciones diseñadas incorrectamente pueden causar simultaneidad de obstáculos y bloqueos, lo que genera tiempos de respuesta más largos y un menor rendimiento de las transacciones. |
Minimizar los interbloqueos
A pesar de que los interbloqueos no se pueden evitar totalmente, si se siguen ciertas convenciones de codificación se puede reducir su generación. La minimización de los interbloqueos puede aumentar el rendimiento de las transacciones y reducir la sobrecarga del sistema, debido a que:
- Se revierten menos transacciones, al deshacer todo el trabajo que realiza la transacción.
- Las aplicaciones vuelven a enviar menos transacciones debido a que se revirtieron cuando se produjo el interbloqueo.
- Obtenga acceso a los objetos en el mismo orden.
- Evite la interacción con los usuarios en las transacciones.
- Mantenga transacciones cortas y en un proceso por lotes.
- Utilice un nivel de aislamiento inferior.
- Utilice un nivel de aislamiento basado en las versiones de las filas.
- Establezca la opción de base de datos READ_COMMITTED_SNAPSHOT en ON para que las transacciones de lectura confirmada utilicen las versiones de filas.
- Utilice el aislamiento de instantánea.
- Utilice conexiones enlazadas.
Si todas las transacciones simultáneas tienen acceso a los objetos en el mismo orden, es menos probable que se produzcan interbloqueos. Por ejemplo, si dos transacciones simultáneas obtienen un bloqueo en la tabla Supplier y, a continuación, en la tabla Part, una transacción se bloquea en la tabla Supplier hasta que finalice la otra transacción. Una vez confirmada o revertida la primera transacción, continúa la segunda, por lo que no se produce un interbloqueo. La utilización de procedimientos almacenados para todas las modificaciones de datos puede normalizar el orden de acceso a los objetos.

Evite escribir transacciones que incluyan la intervención del usuario, ya que la velocidad de ejecución de los lotes que no requieren esta intervención es mucho mayor que la velocidad con la que el usuario debe responder manualmente a las consultas como, por ejemplo, contestar a la petición de un parámetro por parte de una aplicación. Por ejemplo, si una transacción espera una entrada del usuario y éste sale a comer o no vuelve hasta pasado el fin de semana, dicho usuario retrasa la finalización de la transacción. De esta forma, se degrada el rendimiento del sistema, ya que los bloqueos que mantiene la transacción sólo se liberan cuando se confirma o se revierte la transacción. Aunque no surja una situación de interbloqueo, las demás transacciones que obtienen acceso a los mismos recursos se bloquean mientras esperan a que la transacción finalice.
Mantener transacciones cortas y en un proceso por lotes
Normalmente, los interbloqueos se producen cuando varias transacciones de larga duración se ejecutan simultáneamente en la misma base de datos. Cuanto más dure la transacción, más tiempo se mantendrán los bloqueos exclusivos o de actualización, con lo cual se bloquean otras actividades y se originan posibles situaciones de interbloqueo.
Al mantener las transacciones en un proceso por lotes, se minimizan los viajes de ida y vuelta en la red durante una transacción y se reducen los posibles retrasos al completar la transacción y liberar los bloqueos.
Al mantener las transacciones en un proceso por lotes, se minimizan los viajes de ida y vuelta en la red durante una transacción y se reducen los posibles retrasos al completar la transacción y liberar los bloqueos.
Utilizar un nivel de aislamiento inferior
Determine si una transacción se puede ejecutar con un nivel de aislamiento inferior. Al implementar la lectura confirmada, se permite a una transacción leer los datos previamente leídos (no modificados) por otra transacción, sin tener que esperar a que la primera transacción finalice. Utilizar un nivel inferior de aislamiento, como la lectura confirmada, mantiene los bloqueos compartidos durante menos tiempo que un nivel superior de aislamiento, como el nivel serializable. De esta forma, se reduce la contención de bloqueos.
Utilizar un nivel de aislamiento basado en las versiones de las filas
Administrar la memoria para bases de datos de gran tamaño
SQL Server utiliza la API de las Extensiones de ventana de dirección (AWE) para admitir los tamaños de memoria física muy grandes. SQL Server admite hasta un máximo de 64 GB de memoria física en sistemas operativos Microsoft Windows de 32 bits: Microsoft Windows XP Professional; Windows 2000 Standar Edition; Windows 2000 Advanced Server; Windows 2000 Datacenter Server; Windows Server 2003 Enterprise Edition; o Windows Server 2003 Datacenter Edition.
SQL Server asigna de forma dinámica memoria AWE asignada cuando se ejecuta con cualquiera de las ediciones del sistema operativo Windows Server 2003. En otras palabras, el grupo de búferes puede administrar dinámicamente memoria AWE asignada para equilibrar el uso de memoria de SQL Server con los requisitos globales del sistema.
AWE soluciona una limitación inherente a las aplicaciones de 32 bits: éstas no pueden tener acceso a más de 4 gigabytes (GB) de espacio de direcciones del proceso. (Un puntero de 32 bits no puede mantener una dirección de memoria mayor que 4 GB).
Con AWE, las aplicaciones pueden reservar directamente memoria física hasta la cantidad máxima permitida por el sistema operativo como memoria no paginada. El uso de AWE permite a SQL Server copiar en caché más información, en vez de leerla desde los archivos de paginación del sistema en el disco. A su vez, esto proporciona beneficios de rendimiento con un acceso a datos más rápido y reduce la frecuencia de acceso al disco.
SQL Server asigna de forma dinámica memoria AWE asignada cuando se ejecuta con cualquiera de las ediciones del sistema operativo Windows Server 2003. En otras palabras, el grupo de búferes puede administrar dinámicamente memoria AWE asignada para equilibrar el uso de memoria de SQL Server con los requisitos globales del sistema.
AWE soluciona una limitación inherente a las aplicaciones de 32 bits: éstas no pueden tener acceso a más de 4 gigabytes (GB) de espacio de direcciones del proceso. (Un puntero de 32 bits no puede mantener una dirección de memoria mayor que 4 GB).
Con AWE, las aplicaciones pueden reservar directamente memoria física hasta la cantidad máxima permitida por el sistema operativo como memoria no paginada. El uso de AWE permite a SQL Server copiar en caché más información, en vez de leerla desde los archivos de paginación del sistema en el disco. A su vez, esto proporciona beneficios de rendimiento con un acceso a datos más rápido y reduce la frecuencia de acceso al disco.
Supervisar el uso de la memoria
Supervise una instancia de SQL Server periódicamente para confirmar que la utilización de la memoria se encuentra dentro de los intervalos normales.
Para supervisar las condiciones de memoria insuficiente, utilice los contadores de objetos siguientes:
Un valor bajo en el contador Bytes disponibles puede indicar una escasez general de memoria en el equipo o que un programa no está liberando memoria. Un valor alto en el contador Páginas/seg puede indicar una paginación excesiva. Supervise el contador Memoria: Errores de página/s. para asegurarse de que la actividad del disco no está causada por la paginación.
Una tasa baja de paginación (y por tanto, de errores de página) es normal, incluso si el equipo tiene mucha memoria disponible. El Administrador de memoria virtual (VMM) de Microsoft Windows sustrae páginas de SQL Server y otros procesos a medida que recorta los tamaños del espacio de trabajo para estos procesos, lo que suele provocar errores de página. Para determinar si SQL Server u otro proceso, está causando una paginación excesiva, supervise el contador Proceso: Errores de página/s. de la instancia del proceso de SQL Server.
Para obtener más información acerca de cómo solucionar la paginación excesiva, vea la documentación del sistema operativo Windows.
Para supervisar las condiciones de memoria insuficiente, utilice los contadores de objetos siguientes:
- Memoria: Bytes disponibles
- Memoria: Páginas/seg
Un valor bajo en el contador Bytes disponibles puede indicar una escasez general de memoria en el equipo o que un programa no está liberando memoria. Un valor alto en el contador Páginas/seg puede indicar una paginación excesiva. Supervise el contador Memoria: Errores de página/s. para asegurarse de que la actividad del disco no está causada por la paginación.
Una tasa baja de paginación (y por tanto, de errores de página) es normal, incluso si el equipo tiene mucha memoria disponible. El Administrador de memoria virtual (VMM) de Microsoft Windows sustrae páginas de SQL Server y otros procesos a medida que recorta los tamaños del espacio de trabajo para estos procesos, lo que suele provocar errores de página. Para determinar si SQL Server u otro proceso, está causando una paginación excesiva, supervise el contador Proceso: Errores de página/s. de la instancia del proceso de SQL Server.
Para obtener más información acerca de cómo solucionar la paginación excesiva, vea la documentación del sistema operativo Windows.
Aislar la memoria que utiliza SQL Server
De forma predeterminada, SQL Server cambia dinámicamente sus necesidades de memoria según los recursos del sistema disponibles. Si SQL Server necesita más memoria, consulta el sistema operativo para determinar si hay memoria física disponible y la utiliza. Si SQL Server no necesita la memoria que tiene asignada actualmente, la libera para el sistema operativo. Sin embargo, el uso dinámico de la memoria puede anularse mediante las opciones de configuración de servidor min server memory y max server memory . Para obtener más información, vea el documento sobre las opciones de memoria del servidor.
Para supervisar la cantidad de memoria que utiliza SQL Server, examine los siguientes contadores de rendimiento:
El contador Frecuencia de aciertos de caché del búfer es específico de la aplicación. Sin embargo, es preferible un porcentaje del 90% o superior. Agregue más memoria hasta que el valor sea superior al 90%, lo que indica que se ha atendido más del 90% de todas las peticiones de información de la caché de datos.
Si el valor del contador Memoria total del servidor (KB) es constantemente alto en comparación con la cantidad de memoria física del equipo, puede que indique que se necesita más memoria.
Para supervisar la cantidad de memoria que utiliza SQL Server, examine los siguientes contadores de rendimiento:
- Proceso: Espacio de trabajo
- SQL Server: Buffer Manager: Frecuencia de aciertos de caché del búfer
- SQL Server: Buffer Manager: Total de páginas
- SQL Server: Memory Manager: Memoria total del servidor (KB)
El contador Frecuencia de aciertos de caché del búfer es específico de la aplicación. Sin embargo, es preferible un porcentaje del 90% o superior. Agregue más memoria hasta que el valor sea superior al 90%, lo que indica que se ha atendido más del 90% de todas las peticiones de información de la caché de datos.
Si el valor del contador Memoria total del servidor (KB) es constantemente alto en comparación con la cantidad de memoria física del equipo, puede que indique que se necesita más memoria.
Optimizar el diseño físico de las bases de datos
El rendimiento de los sistemas de bases de datos empresariales depende de una configuración eficaz de las estructuras de diseño físico de las bases de datos que componen dichos sistemas. Entre las estructuras de diseño físico se incluyen índices, clúster, vistas indizadas y particiones, cuyo objetivo es mejorar el rendimiento y la facilidad de uso de las bases de datos. SQL Server proporciona el Asistente para la optimización de motor de base de datos, una herramienta que analiza los efectos del rendimiento de las cargas de trabajo (un conjunto de instrucciones Transact-SQL que se ejecuta en las bases de datos que se desean optimizar) en una o más bases de datos.
En esta sección se presenta el Asistente para la optimización de motor de base de datos, se describe cómo utilizarlo y se proporciona información de solución de problemas.
Fuente
http://msdn.microsoft.com/es-mx/library/ms191531(v=sql.105).aspxRENDIMIENTO DE UNA BASE DE DATOS TIEMPO DE RESPUESTA
Puede experimentar los síntomas siguientes en SQL Server:- Una base de datos no se expandirá automáticamente aunque tiene la opción de crecimiento automático ..
- El archivo de registro de errores no contiene los mensajes que indican que la base de datos está lleno.
- Los equipos cliente que intentan modificar los datos de esta base de datos de un mensaje "Tiempo de espera agotado" en sus transacciones de usuario.
- El analizador de SQL muestra un evento de "Atención" en una conexión y, si el equipo está ejecutando SQL Server 7.0, el analizador de SQL también muestra un "error de excepción 822".
Puede observar estos síntomas cuando:
- Ejecutar el analizador de SQL durante mucho tiempo, capturar el evento de excepción y la columna IntegerData y, a continuación, busque una aparición de la "822" error de excepción.
- O - - Se utiliza la -y822 parámetro para iniciar SQL Server. Después de la base de datos no se expande automáticamente, compruebe el archivo de registro de errores para un volcado de pila debido a de la "822" error de excepción.
Cuando una conexión emite una instrucción de idioma de modificación de datos (DML) que requiere espacio adicional en una base de datos, SQL Server intenta expandir automáticamente la base de datos, si ha configurado la opción de crecimiento automático . El cliente que ha emitido la instrucción puede agotar el tiempo mientras se está expandiendo la base de datos, dependiendo del valor de tiempo de espera de consulta que se ha configurado en el lado del cliente. Varias aplicaciones de utilizan un valor de tiempo de espera predeterminado de 30 segundos. Este tiempo de espera finaliza la conexión del cliente y la expansión automática de la base de datos se le pida.
Para evitar este comportamiento, utilice uno de los métodos siguientes:
- Expanda la base de datos manualmente. Para expandir la base de datos manualmente, utilice la instrucción ALTER DATABASE o el Administrador corporativo de SQL Server.
- Aumentar el valor de tiempo de espera de consulta de cliente de la aplicación que solicita la DML para que el servidor tenga tiempo para expandir la base de datos. El DML solicita para expandir la base de datos.
Por ejemplo, si está utilizando el analizador de consultas SQL, el valor de tiempo de espera de consulta predeterminado es 0 (infinito). Si utiliza el valor predeterminado, no experimenta este comportamiento. Si no utiliza el valor predeterminado, aumente el valor de tiempo de espera de consulta.
Para otras aplicaciones (ya sean basadas en Web o no), puede realizar el cambio en la aplicación. Por ejemplo, si utiliza ADO, puede cambiar la propiedad CommandTimeout del objeto de conexión o comando .. - Determinar cuánto tarda la expansión de la base de datos en el servidor. Para determinar esto, ejecute la instrucción ALTER DATABASE en el analizador de consultas SQL y, a continuación, ver la barra de estado. Después de determinar esto, establezca al cliente el valor de tiempo de espera en un valor mayor que este valor.
- No cambie el valor de tiempo de espera del cliente. Realice la expansión automática de prueba para ver cuánto expansión completa en menor que el valor de tiempo de espera del cliente. Establezca la opción de crecimiento automático a este nuevo valor (menor).
http://support.microsoft.com/kb/305635/es
No hay comentarios:
Publicar un comentario