Puede experimentar una disminución del rendimiento de consulta después de realizar determinadas operaciones de transacción normal o a operaciones de mantenimiento de bases de datos en SQL Server 2005

Nº de error: 329155 (SQLBUDT)
Nº de error: 329155 (SQL BU seguimiento de defectos)BUG #: 54582 (Mantenimiento de contenido)

Síntomas

En Microsoft SQL Server 2005, puede experimentar una disminución del rendimiento de consulta después de realizar determinadas operaciones de transacción normal o a operaciones de mantenimiento de base de datos. Por ejemplo, puede observar una disminución repentina del rendimiento de consulta después de restaurar una copia de seguridad de la base de datos.

A partir de SQL Server 2005 Service Pack 2, verá mensajes como el siguiente en el registro de errores de SQL Server cuando se produce este problema:
06:03:29.330 2006-10-15 spid59 SQL Server ha encontrado 4 apariciones de vaciado cachestore para el cachestore 'Objeto planes' (parte de la memoria caché del plan) debido a algunos mantenimiento de base de datos o volver a configurar operaciones.

06:03:29.420 2006-10-15 spid59 SQL Server ha encontrado 4 apariciones de vaciado cachestore para el cachestore 'Planes SQL' (parte de la memoria caché del plan) debido a algunos mantenimiento de base de datos o volver a configurar operaciones.
06:03:29.420 2006-10-15 spid59 SQL Server ha encontrado 4 apariciones de vaciado cachestore para el cachestore 'Enlaza los árboles' (parte de la memoria caché del plan) debido a algunos mantenimiento de base de datos o volver a configurar operaciones.
Sin embargo, puede ejecutar el comando DBCC FREEPROCCACHE o el comando DBCC FREESYSTEMCACHE para vaciar la caché de procedimientos. Si al ejecutar uno de estos comandos, se vacía la caché de procedimiento, verá mensajes similares a los siguientes en el registro de errores de SQL Server:
11:37:03.57 2006-12-14 spid53 SQL Server ha encontrado 1 apariciones de cachestore vaciado para el cachestore 'Planes SQL' (parte de la memoria caché del plan) debido a operaciones 'DBCC FREEPROCCACHE' o 'DBCC FREESYSTEMCACHE'.
11:37:03.57 2006-12-14 spid53 SQL Server ha encontrado 1 apariciones de cachestore vaciado para el cachestore 'Enlaza los árboles' (parte de la memoria caché del plan) debido a operaciones 'DBCC FREEPROCCACHE' o 'DBCC FREESYSTEMCACHE'.
Por lo tanto, puede examinar el registro de errores de SQL Server para determinar si el problema es causado por el problema que se describe en este artículo.

Nota: Este comportamiento no se produce en Microsoft SQL Server 2008.

Causa

Este problema se produce porque determinadas operaciones de mantenimiento de bases de datos o las operaciones de transacción normal borrar la caché de procedimiento entero.

Estado

Este comportamiento es por diseño.

Más información

Se borra la caché de procedimiento todo cuando se realizan determinadas operaciones de nivel de base de datos en los siguientes escenarios:
  • Una base de datos tiene la opción de base de datos AUTO_CLOSE establecido en ON. Cuando no hay conexión de usuario hace referencia o utiliza la base de datos, la tarea en segundo plano intenta cerrar y apagar automáticamente la base de datos.
  • Ejecutar varias consultas contra una base de datos con las opciones predeterminadas. A continuación, se elimina la base de datos.
  • Se coloca una instantánea de base de datos para una base de datos de origen.

    Nota: Las instantáneas de base de datos sólo están disponibles en Microsoft SQL Server 2005 Enterprise Edition.
  • Cambiar el estado de la base de datos sin conexión o en línea.
  • Correctamente reconstruir el registro de transacciones para una base de datos.
  • Restaurar una copia de seguridad de la base de datos.
  • Ejecute la instrucción DBCC CHECKDB.

    Nota: Esto ocurre sólo en versiones de SQL Server 2005 que son anteriores a SQL Server 2005 SP2. Después de instalar SQL Server 2005 SP2 o versiones posteriores, no se vacía la caché de procedimiento entero al ejecutar la instrucción DBCC CHECKDB.
  • Separar una base de datos.
  • Especifique una de las siguientes opciones cuando se ejecuta la instrucción ALTER DATABASE:
    • SIN CONEXIÓN
    • EN LÍNEA
    • MODIFICAR EL GRUPO DE ARCHIVOS PREDETERMINADO
    • MODIFY_NAME
    • MODIFICAR READ_WRITE FILEGROUP
    • INTERCALAR
    • MODIFICAR ARCHIVOS READ_ONLY
    • READ_ONLY
    • READ_WRITE
  • Si se cambia una de las siguientes opciones de servidor mediante la instrucción RECONFIGURE, se borra la caché de procedimiento entero:
    • encadenamiento de propiedad de db entre
    • (KB) de memoria para creación de índices
    • tiempo de espera de consulta remota (s)
    • Opciones de usuario
    • tamaño de replicación de texto máximo (B)
    • umbral de coste para paralelismo
    • grado máximo de paralelismo
    • mínimo de memoria por consulta (KB)
    • espera de consulta (s)
    • memoria mínima del servidor (MB)
    • memoria de servidor máxima (MB)
    • límite de costo del regulador de consultas
    Nota: No se borrará la caché de procedimientos si no cambia el valor real o si el nuevo valor para la opción max server memory server se establece en 0.
Si experimenta este problema, observe los cambios en los valores siguientes cuando utiliza Monitor de rendimiento para recopilar datos de contadores de rendimiento de SQL Server 2005:
  • Objeto de rendimiento: Proceso
    Contador: % tiempo de procesador
    Instancia: sqlservr

    El valor de este contador aumentará debido a una mayor actividad de la CPU. Básicamente, la caché de procedimiento todo está desactivada si se produce este problema. Por lo tanto, las solicitudes posteriores deben generar nuevos planes en caché. Este comportamiento aumente ligeramente la actividad de la CPU.
  • Objeto de rendimiento: SQLServer: planear caché
    Contador: Recuentos de objetos de caché
    Instancia: _Total

    Objeto de rendimiento: SQLServer: planear caché
    Contador: Páginas de caché
    Instancia: _Total

    Los valores de estos contadores disminuirá repentinamente.

    Nota: Para una instancia con nombre de SQL Server 2005, el objeto de rendimiento se denomina MSSQL$InstanceName: planear caché.
  • Objeto de rendimiento: SQLServer: estadísticas
    Contador: SQLCompilations/seg.

    El valor de este contador aumentará considerablemente después de este incidente.

    Nota: Para una instancia con nombre de SQL Server 2005, el objeto de rendimiento se denomina MSSQL$InstanceName: estadísticas de SQL.
Si captura una traza del analizador de SQL mediante el evento CacheRemove , observará que este evento se genera junto con el siguiente valor de la columna TextData cuando se produce este problema:
"Vaciado de caché de procedimiento completo"
Propiedades

Id. de artículo: 917828 - Última revisión: 14 ene. 2017 - Revisión: 1

Comentarios