INTRODUCCIÓN
Las versiones de Microsoft SQL Server posteriores a SQL Server 2000 Service Pack 3 (SP3) entregaron la mayoría de las revisiones al optimizador de consultas en un estado desactivado por defecto para evitar que los clientes de producción existentes vean los cambios de plan esperados que podrían provocar regresiones de rendimiento. Al principio, cada revisión se entregaba con una marca de seguimiento independiente. Más tarde, esta práctica se cambió para que la mayoría de las banderas se combinaran bajo una sola bandera de traza (4199). Esta nueva práctica se inició en varias versiones, a partir de las siguientes actualizaciones:
- Actualización acumulativa 6 de SQL Server 2005 Service Pack 3 (SP3)
- Paquete de actualización acumulativa 7 de SQL Server 2008 Service Pack 1 (SP1)
- SQL Server 2008 R2 (RTM)
La marca de seguimiento 4199 se usó para recopilar revisiones que estaban destinadas a activarse de forma predeterminada en una versión futura, mientras que otras marcas de seguimiento se usaron para situaciones en las que no se pretendía que una corrección se activara de forma predeterminada en la forma actual. A partir de SQL Server 2016 RTM, se usará la configuración del COMPATIBILITY_LEVEL de base de datos para habilitar las revisiones relacionadas con la marca de seguimiento 4199 de forma predeterminada. En este artículo se describe la mecánica y la directiva de cómo se entregarán las revisiones que afectan al plan para SQL Server 2016 y versiones posteriores.
Más información
En SQL Server 2016, las revisiones de la marca de seguimiento 4199 que se realizan en versiones anteriores de SQL Server se habilitarán en la COMPATIBILITY_LEVEL de base de datos 130 sin la marca de seguimiento 4199 habilitada. La marca de seguimiento 4199 se utilizará para publicar cualquier futura revisión de SQL Server 2016 para bases de datos utilizando el nivel de compatibilidad 130. Dado que la marca de seguimiento 4199 solo se recomienda a los clientes que experimenten problemas de rendimiento específicos, se recomienda quitar la marca de seguimiento 4199 después de migrar sus bases de datos al nivel de compatibilidad más reciente, ya que la marca de seguimiento 4199 se reutilizará para futuras correcciones que quizás no se apliquen a la aplicación y puedan causar cambios inesperados en el rendimiento del plan en un sistema de producción. Esto significa que se habilitan diferentes revisiones de la marca de seguimiento 4199 para cada nivel de compatibilidad compatible con una versión de producto determinada. El nivel de compatibilidad más reciente ya habilita todas las correcciones anteriores en la marca de seguimiento 4199. Esto significa que actualizar una base de datos al nivel de compatibilidad más reciente y quitar la marca de seguimiento 4199 todavía habilita todas las correcciones que una carga de trabajo estaba aprovechando antes de actualizar la base de datos, pero no nuevas correcciones. Si más adelante los clientes experimentan problemas de rendimiento en relación con las consultas, experimente habilitando la opción de ámbito de base de datos QUERY_OPTIMIZER_HOTFIXES o la sugerencia de consulta ENABLE_QUERY_OPTIMIZER_HOTFIXES en un entorno de prueba para determinar si se resuelven los problemas. Consulte la documentación sobre QUERY_OPTIMIZER_HOTFIXES.
Nota De forma predeterminada, las bases de datos que se crean en SQL Server 2016 usan el nivel de compatibilidad 130 y tienen ya habilitada la nueva lógica del optimizador.
La principal ventaja de este modelo es que reduce el riesgo para los sistemas de producción durante el proceso de actualización. Este enfoque separa la instalación de una nueva versión principal de SQL Server de la habilitación automática de todos los nuevos cambios del procesador de consultas. Dado que las actualizaciones de versión principal cambian el formato de archivo y no son reversibles, es una buena idea usar la configuración COMPATIBILITY_LEVEL, ya que esto permite a un cliente cambiar rápidamente a una versión anterior si se encuentra un problema inesperado en el rendimiento del plan durante una actualización. Si un cliente encuentra un cambio de plan inesperado que bloquea una actualización de la aplicación, el cliente puede aliviar la situación aplicando una sugerencia de plan adecuada mediante el Almacén de consultas para forzar el plan anterior, o bien ponerse en contacto con el servicio de atención al cliente de Microsoft para que le ayude con el problema y proporcionar una solución alternativa o una revisión. Cuando se reduzcan todos los problemas, la actualización puede continuar. Los clientes deben integrar esta funcionalidad en su plan de actualización para SQL Server 2016.
En la tabla siguiente se explica el modelo de funcionamiento de la marca de seguimiento 4199 a partir de SQL Server 2016.
| Configuración | Nivel de compatibilidad de SQL | Marca de seguimiento 4199 | Revisiones del optimizador anteriores a SQL Server 2016 RTM | Revisiones del optimizador tras SQL Server 2016 RTM |
|---|---|---|---|---|
| 1. | 120 | Desactivado | Deshabilitado | Deshabilitado |
| 2. | 120 | Activar | Habilitado | Deshabilitado |
| 3. | 130 | Desactivado | Habilitado por nivel de compatibilidad | Deshabilitado |
| 4. | 130 | Activar | Habilitado por nivel de compatibilidad | Habilitado por nivel de compatibilidad |
Nota La configuración n.º 3 se recomienda para los clientes que recién actualicen a SQL Server 2016.
Para las versiones principales posteriores a SQL Server 2016, Microsoft planea seguir usando este modelo de mantenimiento para las revisiones del optimizador. De forma predeterminada, o en cada versión, cualquier marca de seguimiento 4199 revisiones de la versión anterior se habilitará en el siguiente nivel de compatibilidad. Esto significa que el estado recomendado para los clientes después de migrar al último nivel de compatibilidad será tener deshabilitada la marca de seguimiento 4199. En las revisiones posteriores se usará la marca de seguimiento 4199 para habilitar correcciones para los clientes que tengan que habilitar esas revisiones específicas en una aplicación. Se recomienda a los clientes deshabilitar la marca de seguimiento 4199 después de actualizar una aplicación al último nivel de compatibilidad para evitar que se habiliten cambios inesperados en el optimizador en el futuro en una aplicación de forma inesperada. Que actualizar al último nivel de compatibilidad y quitar la marca de seguimiento 4199 todavía habilita todas las correcciones que una carga de trabajo estaba aprovechando antes de la actualización, pero no nuevas correcciones.
Nota Aunque muchas revisiones del optimizador están habilitadas en la marca de seguimiento 4199, algunas usan otras marcas de seguimiento. La marca de seguimiento 4199 ha cubierto históricamente marcas de seguimiento que son ampliamente aplicables y que es probable que se habiliten de forma predeterminada en una versión futura. Se usan marcas de seguimiento alternativas en las revisiones en las que las condiciones son muy específicas de solo unos pocos clientes, en las que la corrección puede provocar regresiones de rendimiento en otros tipos de aplicaciones o en las que la funcionalidad interna puede ver cambios antes de que esté lista para habilitarse para todos los usuarios. Microsoft seguirá usando otras marcas de seguimiento según sea necesario para dar servicio al producto.
Nota Este artículo se centra en el modelo para publicar revisiones de la marca de seguimiento 4199 en el nivel de compatibilidad más reciente del producto más reciente. (En el momento de la publicación, se trata de SQL Server 2016). Las revisiones del optimizador se pueden publicar en versiones anteriores del mercado de SQL Server o en niveles de compatibilidad más bajos (120 o anteriores) de SQL Server 2016. Microsoft evaluará cada caso y determinará si se debe usar la marca de seguimiento 4199 o una marca de seguimiento diferente. Dado que los cambios que no son de revisión también se habilitan cuando se realiza un movimiento a un nivel de compatibilidad posterior, no hay ninguna promesa específica de que no se producirán cambios en el plan durante una actualización (con o sin la marca de seguimiento 4199). Los clientes siempre deben probar cuidadosamente los cambios en el nivel de compatibilidad para las aplicaciones de producción y deben usar tecnologías de mitigación, como el Almacén de consultas, si hay un problema de rendimiento relacionado con la elección del plan.
Como referencia, se usaron las siguientes marcas de seguimiento para las revisiones del procesador de consultas antes de la introducción de la marca de seguimiento 4199:
4101, 4102, 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4115, 4116, 4117, 4119, 4120, 4121, 4122, 4124, 4125, 4126, 4127, 4128, 4129, 4131, 4133, 4135.
SQL Server 2012 y versiones posteriores
La marca de seguimiento 4199 se incluye en las versiones de lanzamiento de SQL Server 2012 y versiones posteriores.
Cómo habilitar la marca de seguimiento 4199
Puede habilitar la marca de seguimiento 4199 en el inicio o en una sesión de usuario. Esta marca de seguimiento tiene efecto a nivel global o de sesión. Para habilitar la marca de seguimiento 4199, use el comando DBCC TRACEON o use –T 4199 como parámetro de inicio.
Si se usa DBCC TRACEON\TRACEOFF, no se vuelve a generar un nuevo plan almacenado en caché para los procedimientos almacenados. Los planes que se crearon sin la marca de seguimiento podrían estar en la memoria caché.
Para obtener información detallada acerca de cómo habilitar o deshabilitar marcas de seguimiento y para obtener explicaciones sobre las marcas de seguimiento globales y de nivel de sesión, remítase a los temas siguientes en los libros en pantalla de SQL Server:
- DBCC TRACEON (Transact-SQL)
- Procedimiento: Configurar las opciones de inicio del servidor (Administrador de configuración de SQL Server)
Referencias
Para obtener más información acerca del esquema de nomenclatura de las actualizaciones de SQL Server, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
822499
Nuevo esquema de nomenclatura para los paquetes de actualizaciones de software de Microsoft SQL Server
Para obtener más información acerca de la terminología relativa a las actualizaciones de software de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684
Descripción de la terminología estándar que se usa para describir las actualizaciones de software de Microsoft