Cómo: Solucionar problemas de rendimiento de aplicaciones con SQL Server

Seleccione idioma Seleccione idioma
Id. de artículo: 224587 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso se describe cómo solucionar problemas de SQL Server problemas de rendimiento. Solucionar problemas de rendimiento implica el uso de una serie de pasos para aislar y determinar la causa de una ralentización de la aplicación. Las causas posibles son:
  • Bloqueo.
  • Contención de recursos del sistema.
  • Problemas de diseño de la aplicación.
  • Un conjunto determinado de consultas o procedimientos almacenados con largos tiempos de ejecución.
En este artículo se describe cómo determinar el origen de un problema de rendimiento. También hace referencia a otros artículos en Microsoft Knowledge Base que cubren los detalles de problemas de rendimiento específicos de solución de problemas adicionales.

Analizador de SQL


Analizador de SQL es una herramienta eficaz al solucionar el SQL Server 7.0 o posterior, la aplicación rendimiento. Analizador de SQL permite capturar fácilmente todos los eventos se producen en el servidor en una carga típica y proporciona información acerca de ellos. Con el Analizador de SQL junto con Monitor de sistema de Microsoft Windows y algunas consultas sencillas para identificar si el bloqueo se está produciendo le proporcionará la información debe tener que resolver la mayoría de problemas de rendimiento.

¿Qué ocurre al Monitor

1. Configurar el Analizador de SQL para capturar una traza. Para ello, siga estos pasos:
  1. Abra el Analizador de SQL.
  2. En el menú Herramientas , haga clic en Opciones .
  3. Asegúrese de que están seleccionadas las Todas clases de sucesos y las opciones Todas las columnas de datos .
  4. Haga clic en Aceptar .
  5. Cree una nueva traza.
  6. En el menú archivo , seleccione nuevo y, a continuación, haga clic en traza .
  7. En la ficha General , especificar un nombre de traza y un archivo para capturar los datos.
  8. En la ficha sucesos , agregue los siguientes tipos de eventos para el seguimiento:

    Contraer esta tablaAmpliar esta tabla
    TítuloEvento para agregarDescripción
    CursoresCursorPrepareEste evento indica que se ha preparado un cursor en una instrucción SQL mediante ODBC, OLEDB o DB-Library.
    Error y advertenciaFalta la columna de estadísticasEste evento indica que las estadísticas de columna que podrían haber sido útiles para el optimizador no estaban disponibles. La columna de texto muestra la lista de columnas con estadísticas que faltan. Este evento, junto con un varios: automática UpdateStats evento, indica que se desencadenó la opción Estadísticas de crear automáticamente .
    Gastos variosAtenciónEste evento indica que un cliente envió una señal de atención.
    Gastos variosUpdateStats automáticaEste evento indica que se desencadenó la opción Automática actualizar estadísticas .
    Gastos variosExec preparada SQLEste evento indica que ODBC, OLE DB o DB-Library, ejecutar una instrucción de Transact-SQL preparada previamente o instrucciones.
    Gastos variosPlan de ejecuciónEste evento muestra el árbol del plan de la instrucción de Transact-SQL que se ejecutó.
    Gastos variosPreparar SQLEste evento indica que una aplicación ODBC, OLEDB o DB-Library preparado un Transact-SQL, o varias instrucciones, para su uso.
    Gastos variosOperación de deshacer la preparación SQLEste evento indica que una aplicación de ODBC, OLEDB o DB-Library no preparada un Transact-SQL, o varias instrucciones, para su uso.
    SesionesConectarEste evento indica que se ha realizado una nueva conexión.
    SesionesDesconectarEste evento indica que un cliente ha desconectado.
    SesionesConexión existenteEste evento indica que una conexión existente cuando se inició la traza del Analizador SQL.
    Procedimientos almacenadosSP: completadoEste evento indica que cuando un procedimiento almacenado ha finalizado su ejecución.
    Procedimientos almacenadosSP: recompilaciónEste evento indica que se vuelve a compilar un procedimiento almacenado durante la ejecución.
    Procedimientos almacenadosSP: StartingEste evento indica que cuando un procedimiento almacenado ha iniciado la ejecución.
    Procedimientos almacenadosSP: StmtCompletedEste evento indica que cuando una instrucción en un procedimiento almacenado ha finalizado su ejecución.
    TSQL:SQL: BatchCompletedEste evento indica que ha completado un lote de Transact-SQL. La columna de texto muestra la instrucción que se ha ejecutado.
    TSQL:SQL:StmtCompletedEste suceso indica una instrucción Transact-SQL que se ha completado. La columna de texto muestra la instrucción que se ha ejecutado.
    TSQL:RPC: completadoEste evento indica que se ha completado una llamada a procedimiento remoto (RPC).
  9. Si la aplicación está recibiendo errores de tiempo de espera, deja de responder (se bloquea) o experimenta otros eventos que hacen que las instrucciones de problema no completar nunca, también incluyen los siguientes sucesos:

    Contraer esta tablaAmpliar esta tabla
    TSQL:SQL:BatchStartingEste evento indica el inicio de un lote de Transact-SQL. La columna de texto muestra la instrucción que se está ejecuta.
    TSQL:SQL: StmtStartingEste evento indica el inicio de una instrucción de Transact-SQL. La columna de texto muestra la instrucción que se está ejecuta.
    TSQL:RPC: iniciandoEste evento indica el inicio de una llamada a procedimiento remoto (RPC).
    Procedimientos almacenadosSP: StmtStartingEste evento indica cuando una instrucción en un procedimiento almacenado está iniciando la ejecución.


    Esto ayudará a asegurarse de que puede ver la instrucción que se estaba ejecutando cuando se produjo el tiempo de espera
  10. En la ficha Columnas de datos , asegúrese de que se incluyen las siguientes columnas:

    para SQL Server 2000

    Hora de inicio

    Hora de finalización

    LoginSid

    SPID

    Clase de evento

    TextData

    IntegerData

    BinaryData

    Duración

    CPU

    Lee

    Escribe

    Nombre de la aplicación

    NT nombre

    DBUserName


    para SQL Server 7.0

    Hora de inicio

    Hora de finalización

    Conexión ID

    SPID

    Clase de evento

    Texto

    Entero de datos

    Datos binarios

    Duración

    CPU

    Lee

    Escribe

    Nombre de la aplicación

    NT nombre

    Nombre de usuario SQL

Para obtener información acerca del Analizador de SQL de uso, vea SQL Server 7.0 y los libros en pantalla de SQL Server 2000.


2. Utilice Monitor de rendimiento para capturar Windows NT y SQL contadores del servidor. Para ello, siga estos pasos:
  1. Iniciar el Monitor de rendimiento de Windows NT.
  2. En el menú Ver , haga clic en registro .
  3. En el menú Opciones , haga clic en registro .
  4. Especifique un nombre de archivo y ubicación para registrar los contadores de rendimiento. Puede ajustar el intervalo de actualización según corresponda.
  5. En el menú Edición , haga clic en Agregar al registro .
  6. Agregar todos los objetos. Windows NT y SQL Server objetos.
  7. Para iniciar el registro, en el menú Opciones , haga clic en registro y, a continuación, haga clic en el botón Iniciar registro .

Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
150934Cómo crear un registro de Monitor de rendimiento para la solución de problemas de NT

3. Para bloquear la comprobación.

Para ver si el bloqueo está produciendo, ejecute el procedimiento almacenado del sistema de sp_who :
exec sp_who
Este resultado contendrá una columna blk . Examine la salida distinto de cero entradas que indican que el bloqueo se está produciendo. Ejecutar este procedimiento periódicamente durante el intervalo de tiempo cuando se está produciendo la ralentización del rendimiento.

Nota Ejecuta el sistema sp_who procedimiento almacenado es una comprobación para ver si bloqueo existe. Normalmente, no es suficiente información para solucionar completamente un problema de bloqueo. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
251004INF: Cómo supervisar el bloqueo de SQL Server 7.0

Ejecutar la aplicación carga típica

Idealmente, es mejor capturar el Analizador de SQL, el monitor y la salida bloqueo durante el mismo marco. Este período de tiempo debe abarcar una vez cuando el rendimiento de la aplicación va desde una buena idea errónea. La combinación de esta información le ayudará a obtener una imagen más clara de donde se está produciendo la ralentización del rendimiento.


Interpretar los resultados

  1. Para bloquear la comprobación.

    Si la columna blk en la salida de sp_who es distinto de cero, esto indica que se produce el bloqueo en el sistema. Si los procesos bloquean entre sí, los procesos que están bloqueados pueden experimentar mayores tiempos de ejecución. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    224453INF: Descripción y resolver problemas bloqueo de SQL Server 7.0 o 2000
  2. Examine la salida de Analizador de SQL.

    Ver datos del Analizador de SQL eficaz es muy valiosa en resolver problemas de rendimiento. El lo más importante tener en cuenta es que no tiene que mirar todo lo que capturado. Sea selectivo. Analizador de SQL proporciona funcionalidades para ayudarle con eficacia ver los datos capturados. En las fichas de Propiedades (haga clic en Propiedades en el menú archivo ), Analizador de SQL le permite limitar los datos mostrados por quitar columnas de datos o eventos, agrupar (ordenar) por columnas de datos y aplicar filtros. Puede buscar el seguimiento de todo o sólo una columna específica para los valores específicos (en el menú Edición , haga clic en Buscar ). También puede guardar los datos del Analizador de SQL a una tabla de SQL Server (en el menú archivo , elija Guardar como , haga clic en Tabla de traza ) y ejecutan consultas SQL contra él.

    Tenga cuidado de que realizar el filtrado sólo en un archivo de traza guardada anteriormente. Si realiza estos pasos en una traza activa, se arriesga a perder datos que se ha capturado desde que se inició la traza. Guardar una traza activa en un archivo o tabla primero (en el menú archivo , haga clic en Guardar como ) y, a continuación, volver a abrirlo (en el menú archivo , haga clic en Abrir ) antes de continuar. Cuando se trabaja en un archivo de traza guardada, el filtrado no permanentemente quita los datos que se está filtrando; simplemente no lo muestra. Puede agregar y quitar eventos y columnas de datos según sea necesario para centrarse las búsquedas.

    El primer paso para examinar archivos de traza de Analizador de SQL para casos de rendimiento es determinar dónde se producen los distintos tipos de eventos en el servidor.

    grupo de la traza por clase de evento :

    a. en el menú archivo , haga clic en Propiedades .

    b. en la ficha Columnas de datos , utilice el botón de arriba para mover la Clase de evento bajo el encabezado de grupos y el botón de abajo para quitar todas las demás columnas bajo el encabezado de grupos .

    c. haga clic en Aceptar .

    Agrupación por la columna de clase de evento muestra qué tipo de eventos se producen en SQL Server y con qué frecuencia. Buscar en esta columna para los eventos siguientes:

    SP:RECOMPILE

    Este evento indica que se vuelve a compilar un procedimiento almacenado durante la ejecución. Varios eventos de volver a compilar indican que SQL Server dedica recursos en la compilación de consulta en lugar de la ejecución de consulta.

    Para obtener información adicional acerca las recompilaciones de procedimiento almacenado para la solución de problemas, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    243586INF: Solucionar problemas de recompilación de procedimientos almacenados


    atención

    Una señal de atención indica que una consulta se ha cancelado por un cliente. Esto es generalmente por uno de dos causas:

    Explícitamente, el usuario canceló la consulta o finaliza la aplicación.

    -o bien -

    Se superó el tiempo de espera de consulta.

    Si ve las señales de atención, esto puede indicar que determinadas consultas se ejecutan despacio.

    Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    243589Cómo: Solucionar problemas de lenta ejecución consultas en SQL Server 7.0 o posterior
    Para ayudar a identificar la consulta que ha recibido la señal de atención, revisar el seguimiento de modo que no se agrupen por cualquier columna de datos y filtrar por el sistema de identificador de proceso (SPID) que recibido (en la ficha filtros , establezca el SPID = x ). El evento de SQL: StmtStarting , SQL:BatchStarting o SP: StmtStarting inmediatamente anterior a la señal de atención es la consulta que ha recibido el tiempo de espera o Cancelar. Puede buscar la columna Event Class para el evento de atención para localizarlo fácilmente (en el menú Edición , haga clic en Buscar ).

    PREPARE SQL y EXEC PREPARED SQL

    El evento Preparar SQL indica que una aplicación ODBC, OLEDB o DB-Library preparado una instrucción de Transact-SQL o instrucciones, para su uso. El evento Exec Prepared SQL indica que la aplicación ha realizado el uso de un existente preparado instrucción para ejecutar un comando.

    Comparar el número de veces que se produzcan estos dos eventos. Idealmente, una aplicación debe preparar una instrucción una vez y ejecutarlo varias veces. Esto le ahorra el optimizador el costo de compilar un plan de nuevo cada vez que se ejecuta la instrucción. Por lo tanto, el número de eventos Exec Prepared SQL debe ser mucho mayor que el número de eventos SQL preparar . Si el número de eventos SQL preparar es aproximadamente equivalente al número de eventos Exec Prepared SQL , esto puede indicar que la aplicación no está realizando buen uso del modelo Preparar/Ejecutar. Es mejor no preparar una instrucción sólo se va a ejecutar una sola vez. Para obtener más información sobre cómo preparar instrucciones SQL, vea el tema "Preparar instrucciones de SQL" en libros en pantalla de SQL Server 7.0.

    Si el número de eventos Exec Prepared SQL no es de tres a cinco veces mayor que el número de eventos SQL preparar , la aplicación puede no lo uso eficaz del modelo Preparar/Ejecutar. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
    243588Cómo: Solucionar problemas del rendimiento de consultas ad-Hoc

    En SQL Server 2000, las excesiva viajes de ida y vuelta por preparar/ejecutar se eliminarán, por lo que la proporción de 3-5 no es tan estrictos. Sin embargo, todavía puede ser una buena regla, probar y reutilizar el plan más de una vez preparado.

    Falta la columna estadísticas

    Este evento indica que estaba disponible información estadística que el optimizador podría haber utilizado para generar un plan de consulta mejor. Esto indica que la consulta no tiene índices útiles en al menos una tabla. Más allá de no tener un índice útil, SQL Server no tiene incluso datos estadísticos acerca de las columnas implicadas tomar una decisión informada para un plan de consulta. El resultado es que el plan de consulta generado puede no ser la óptima. Si ve estos eventos, observe la consulta y el plan de ejecución generado y, a continuación, consulte el siguiente artículo en Microsoft Knowledge Base para los pasos necesarios para mejorar el rendimiento de esta consulta:
    243589Cómo: Solucionar problemas de lenta ejecución consultas en SQL Server 7.0 o posterior

    Al ver los eventos de Missing Column Statistics , centrarse primero en aquéllas que se producen en asociación con las consultas de larga ejecución. Algunos eventos pueden generar resuelven automáticamente por SQL Server con autostats y pueden no requerir la intervención del usuario. Por lo tanto, la mejor estrategia es centrarse primero en consultas de larga duración, como se muestra más adelante en este artículo y observe si hay eventos Missing Column Statistics asociados.

    Si no ve las instancias de estas clases de evento, el siguiente paso es determinar dónde se dedica el tiempo.

    grupo de los resultados de seguimiento por duración :

    a. en el menú archivo , haga clic en Propiedades .

    En la ficha Columnas de datos , utilice el botón de arriba para mover duración bajo el encabezado de grupos y el botón de abajo para quitar todas las demás columnas bajo el encabezado de grupos .

    c. en la ficha sucesos , quitar todos los grupos excepto TSQL y almacenado procedimientos .

    d. haga clic en Aceptar .

    Los grupos de la duración, puede ver fácilmente qué instrucciones SQL, lotes o procedimientos se están ejecutando la más lenta. Es muy importante para que examine no sólo el tiempo cuando se está produciendo el problema, sino también para obtener una referencia de cuando es conveniente comparar el rendimiento. Puede filtrar por hora de inicio para dividir la traza en secciones al buen rendimiento y una sección independiente para cuando el rendimiento fue una mala. Busque las consultas con la duración más larga al rendimiento es bueno. Lo más probable es que son la raíz del problema. Si se disminuye el rendimiento general del sistema, incluso buenas consultas pueden mostrar duraciones largas como están esperando en los recursos del sistema.

    Si ve un pequeño número de consultas con duraciones altas, consulte el artículo siguiente en Microsoft Knowledge Base:
    243589Cómo: Solucionar problemas de lenta ejecución consultas en SQL Server 7.0 o posterior
    Si ve que la duración de las consultas individuales es baja, pero hay varias y el contador de compilaciones SQL por segundo en el Monitor de rendimiento es alto (descrita más adelante) de salida, consulte el siguiente artículo en Microsoft Knowledge Base:
    243588Cómo: Solucionar problemas del rendimiento de consultas ad-Hoc
    examine las columnas de datos restantes :

    Nociones adicionales sobre la naturaleza de un problema de rendimiento pueden obtenerse viendo las columnas de datos en los datos de traza. Éstos son algunos aspectos que deben tenerse en cuenta:

    Si el uso de CPU es alto, agrupar por CPU para ver qué consultas son los principales usuarios de tiempo de CPU. Busque la columna de texto de "hash" o "combinación" para buscar qué plan de ejecución de consultas utiliza estos tipos de combinación. Son más CPU y memoria intensiva que una combinación de bucle anidado, que generalmente es un uso intensivo de E/S.

    Si E/S de disco es el cuello de botella, agrupar por lecturas y escrituras. Ver los campos Nombre de la aplicación , Nombre de usuario de NT y Nombre de usuario de SQL para ayudar a aislar el origen de una consulta de larga ejecución.

    La columna de datos de entero del evento de excepción indicará los errores que se devolvieron el cliente. Puede encontrar el texto de la mensaje de error buscando en el número en los libros en pantalla de SQL Server 7.0.

    El campo ID. de conexión es útil para asegurarse de que están viendo las sesiones mismas para un cliente específico. Un SPID no puede garantizar esto, como un usuario puede haberle desconectado y un nuevo usuario conectado y recibe el mismo SPID.

    El beneficio derivado de estos campos puede variar dependiendo del escenario, pero se deben examinar si los campos obvios anteriormente en este artículo no proporcionan una respuesta.
  3. Examine la salida de Monitor.

    El Monitor de rendimiento le mostrará los general cuellos de botella del sistema. Puede ser que la aplicación y de SQL Server realizan como se esperaba, pero el equipo underpowered, falta de memoria u otros recursos. O determinados contadores pueden indicar problemas con la forma en que la aplicación y SQL Server realizan. Como mínimo, compruebe los contadores siguientes:

  • Objeto: proceso

    Contador: procesador

    Instancia: SQL Server

  • Objeto: procesador

    Contador: % Processor Time

    Instancia: Comprobación cada instancia de procesador

  • Objeto: Disco físico

    Cola de disco promedio del contador: Longitud

    Instancia: Comprobación cada instancia de disco físico

  • Objeto: Estadísticas SQL Server: SQL

    Contador: SQL compilaciones por segundo
¿Busque una tendencia sobre el marco de cuando fue el rendimiento de una buena idea errónea: lo que aumenta en primer lugar? ¿Es dependiente de la CPU del equipo o dependiente de E/S de disco? Esta información, junto con el resultado de Profiler anteriormente en este artículo le ayudará a reducir las áreas problemáticas. Problemas de CPU altas pueden indicar la gran cantidad de recompilaciones de procedimiento almacenado, las compilaciones de consulta ad hoc o uso intensivo de combinaciones hash y mezcla. Los artículos que hace referencia anteriormente en este artículo se deben seguir para determinar el curso correcto de acción. Longitudes de cola de disco elevada pueden indicar la necesidad de más memoria del sistema o un subsistema de disco mejoradas.

Propiedades

Id. de artículo: 224587 - Última revisión: viernes, 26 de octubre de 2007 - Versión: 4.3
La información de este artículo se refiere a:
  • Microsoft SQL Server 7.0 Standard Edition
Palabras clave: 
kbmt kbproductlink kbhowtomaster kbhowto kbinfo KB224587 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 224587

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com