Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyEste explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Se aplica a: SQL Server 2016 (13.x) y posteriores
Azure SQL Database
Azure Synapse Analytics
Analytics Platform System (PDW)
Al migrar desde una versión anterior de SQL Server a SQL Server 2014 (12.x) o posterior, y al actualizar el nivel de compatibilidad de la base de datos al más reciente disponible, una carga de trabajo podría quedar expuesta al riesgo de regresión del rendimiento. Esto es posible también en menor grado al actualizar entre SQL Server 2014 (12.x) y cualquier versión más reciente.
A partir de SQL Server 2014 (12.x), y con cada nueva versión, todos los cambios del optimizador de consultas se canalizan al nivel de compatibilidad de la base de datos más reciente, por lo que los planes de ejecución no se cambian en el momento de la actualización, sino cuando un usuario cambia la opción de base de datos COMPATIBILITY_LEVEL
a la más reciente disponible. Para obtener más información sobre los cambios del optimizador de consultas presentados en SQL Server 2014 (12.x), consulte Estimador de cardinalidad. Para obtener más información sobre los niveles de compatibilidad y cómo pueden afectar a las actualizaciones, vea Actualizaciones del motor de base de datos y niveles de compatibilidad.
Esta capacidad de canalización proporcionada por el nivel de compatibilidad de la base de datos, en combinación con el Almacén de consultas, ofrece un gran nivel de control sobre el rendimiento de las consultas durante el proceso de actualización si la actualización sigue el flujo de trabajo recomendado que se indica a continuación. Para obtener más información sobre el flujo de trabajo recomendado para actualizar el nivel de compatibilidad, vea Cambiar el nivel de compatibilidad de la base de datos y usar el almacén de consultas.
Este control sobre las actualizaciones se mejoró aún más con SQL Server 2017 (14.x), donde se incorporó el ajuste automático y permite automatizar el último paso del flujo de trabajo recomendado anteriormente.
A partir de SQL Server Management Studio v18, la nueva función del Asistente para la optimización de consultas (QTA) guiará a los usuarios a través del flujo de trabajo recomendado para mantener la estabilidad del rendimiento durante las actualizaciones a versiones más recientes de SQL Server, como se documenta en la sección Mantener la estabilidad del rendimiento durante la actualización a versiones más recientes de SQL Server de Escenarios de uso del almacén de consultas. Sin embargo, QTA no puede revertir a un buen plan conocido previamente como se muestra en el último paso del flujo de trabajo recomendado. En su lugar, QTA realizará el seguimiento de las regresiones encontradas en la vista Consultas devueltas de Query Stores y recorrerá en iteración las permutaciones posibles de variaciones de modelos de optimizador aplicables para que se genere un plan mejor.
Importante
QTA no genera carga de trabajo de usuario. Si ejecuta QTA en un entorno que no se usa en sus aplicaciones, asegúrese de que aún puede ejecutar una carga de trabajo de prueba representativa en el motor de base de datos SQL Server objetivo por otros medios.
El punto inicial de QTA supone que una base de datos de una versión anterior de SQL Server se traslada (mediante CREATE DATABASE ... FOR ATTACH o RESTORE) a una versión más reciente del motor de base de datos de SQL Server, y el nivel de compatibilidad de la base de datos anterior a la actualización no se modifica inmediatamente. QTA le guía a través de los pasos siguientes:
Para obtener más información sobre cómo asociar una base de datos, vea Adjuntar y separar bases de datos.
Vea a continuación cómo QTA solo cambia los últimos pasos del flujo de trabajo recomendado para actualizar el nivel de compatibilidad mediante el Almacén de consultas visto arriba. En lugar de dar la opción de elegir entre el plan de ejecución actualmente ineficaz y el último plan de ejecución bueno conocido, QTA presenta opciones de optimización que son específicas de las consultas con regresión seleccionadas, con el fin de crear un nuevo estado mejorado con planes de ejecución optimizados.
QTA solo se ocupa de las consultas SELECT
que se pueden ejecutar desde el Almacén de consultas. Las consultas parametrizadas son aptas si se conoce el parámetro compilado. Las consultas que dependen de construcciones en tiempo de ejecución, como tablas temporales o variables de tabla, no son aptas en este momento.
QTA tiene como destino posibles patrones conocidos de regresiones de consulta debidos a cambios en las versiones de Estimación de cardinalidad. Por ejemplo, al actualizar una base de datos de SQL Server 2012 (11.x) y nivel de compatibilidad de la base de datos 110, a SQL Server 2017 (14.x) y nivel de compatibilidad de la base de datos 140, algunas consultas pueden experimentar retrocesos porque se diseñaron específicamente para funcionar con la versión CE que existía en SQL Server 2012 (11.x) (CE 70). Esto no significa que la reversión de estimación de cardinalidad 140 a 70 sea la única opción. Si el cambio que provoca la regresión es solo uno de los cambios de la versión más reciente, se puede indicar a la consulta que use solo la parte de la versión anterior de CE que funcionaba mejor para la consulta en cuestión, sin dejar de usar el resto de mejoras de las versiones más recientes de CE. Además permite que las demás consultas de la carga de trabajo que no han sufrido regresión se beneficien de las últimas mejoras de estimación de cardinalidad.
Los patrones de estimación de cardinalidad que busca QTA son los siguientes:
USE HINT ('ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES')
hace que SQL Server genere un plan de ejecución mediante el uso de la selectividad mínima al estimar predicados AND
para filtros para tener en cuenta la correlación. Para obtener más información, vea USE HINT y Versiones de la estimación de cardinalidad.USE HINT ('ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS')
hace que SQL Server genere un plan de ejecución mediante el uso de la hipótesis de contención simple en lugar de la hipótesis de contención base predeterminada. Para obtener más información, vea USE HINT y Versiones de la estimación de cardinalidad.QUERYTRACEON 9488
para generar un plan de ejecución. Para obtener más información sobre las MSTVF, vea Creación de funciones definidas por el usuario (motor de base de datos).Nota
Como último recurso, si las sugerencias de ámbito estrecho no generan resultados lo suficientemente buenos para los patrones de consulta aptos, también se considera el uso completo de estimación de cardinalidad 70, mediante la sugerencia de consulta USE HINT ('FORCE_LEGACY_CARDINALITY_ESTIMATION')
para generar un plan de ejecución.
Importante
Cualquier sugerencia fuerza ciertos comportamientos que pueden ser abordados en futuras actualizaciones de SQL Server. Se recomienda aplicar sugerencias únicamente cuando no exista ninguna otra opción, y planee revisar el código sugerido con cada nueva actualización. Al forzar comportamientos, puede estar impidiendo que su carga de trabajo se beneficie de las mejoras incorporadas en versiones más recientes de SQL Server.
QTA es una característica basada en sesión que almacena el estado de sesión en el esquema msqta
de la base de datos de usuario donde se crea una sesión por primera vez. Se pueden crear varias sesiones de optimización en una sola base de datos con el tiempo, pero solo puede existir una sesión activa de cualquier base de datos determinada.
En SQL Server Management Studio abra el Explorador de objetos y conéctese al motor de base de datos.
Para la base de datos cuyo nivel de compatibilidad se desea actualizar, haga clic con el botón derecho del ratón en el nombre de la base de datos, seleccione Tareas, seleccione Actualización de base de datos y seleccione Nueva sesión de actualización de base de datos.
En la ventana del asistente QTA, se requieren dos pasos para configurar una sesión:
En la ventana Setup (Configuración), configure el Almacén de consultas para capturar el equivalente a un ciclo comercial completo de datos de carga de trabajo para analizar y optimizar.
En la ventana Configuración, dos columnas muestran el estado Actual del Almacén de consultas de la base de destino, así como la configuración Recomendada.
Importante
El valor Tamaño máximo propuesto es un valor arbitrario que puede ser adecuado para una carga de trabajo de breve duración. Pero tenga en cuenta que puede ser insuficiente para contener información sobre la línea de base y las cargas de trabajo de actualización posteriores a la base de datos de cargas de trabajo muy intensivas, concretamente cuando pueden generarse muchos planes diferentes. Si anticipa que este pueda ser el caso, escriba un valor más alto que sea adecuado.
La ventana Optimización concluye la configuración de la sesión e indica los pasos siguientes para abrir la sesión y continuar con ella. Cuando haya finalizado, seleccione Finalizar.
En la base de datos cuyo nivel de compatibilidad de base de datos intenta actualizar, haga clic con el botón derecho en el nombre de la base de datos, seleccione Tareas, seleccione Actualización de base de datos y seleccione Supervisar sesiones.
La página de administración de sesiones enumera las sesiones actuales y pasadas de la base de datos en cuestión. Seleccione la sesión deseada y seleccione Detalles.
Nota
Si la sesión actual no aparece, seleccione el botón Actualizar.
La lista contiene la información siguiente:
Nota
Eliminar sesión elimina todos los datos almacenados de la sesión seleccionada, aunque la eliminación de una sesión cerrada no elimina guías de plan implementadas previamente. Si elimina una sesión con guías de plan implementadas, no puede usar QTA para revertir. En su lugar, busque guías de plan mediante la tabla del sistema sys.plan_guides y elimine manualmente mediante sp_control_plan_guide.
El punto de entrada de una nueva sesión es el paso Recopilación de datos.
Nota
El botón Sesiones devuelve a la página de administración de sesiones y deja la sesión activa tal cual.
Este paso tiene tres subpasos:
Recopilación de datos de línea de base solicita al usuario que ejecute el ciclo de carga de trabajo representativo para que el Almacén de consultas pueda recopilar una línea de base. Una vez completada esa carga de trabajo, active Ejecución de la carga de trabajo finalizada y seleccione Siguiente.
Nota
La ventana de QTA se puede cerrar mientras la carga de trabajo se ejecuta. Al volver a la sesión que permanece en estado activo en un momento posterior, se reanuda desde el mismo paso donde se había quedado.
Actualizar base de datos le pide permiso para actualizar el nivel de compatibilidad de la base de datos al destino deseado. Para continuar con el siguiente subpaso, seleccione Sí.
La siguiente página confirma que el nivel de compatibilidad de la base de datos se ha actualizado correctamente.
Recopilación de datos observados solicita al usuario que vuelva a ejecutar el ciclo de carga de trabajo representativo para que el Almacén de consultas pueda recopilar una línea de base comparativa que se use para buscar oportunidades de optimización. Mientras se ejecuta la carga de trabajo, use el botón Actualizar para seguir actualizando la lista de consultas con regresión, si se ha detectado alguna. Cambie el valor Queries to show (Consultas que se van a mostrar) para limitar el número de consultas que aparecen. El orden de la lista se ve afectado por Métrica (Duración o Tiempo de CPU) y Agregación (Promedio es el valor predeterminado). Seleccione también cuántas consultas se van a mostrar. Una vez completada esa carga de trabajo, active Ejecución de la carga de trabajo finalizada y seleccione Siguiente.
La lista contiene la información siguiente:
Ver análisis permite la selección de las consultas con las que se va a experimentar y buscar oportunidades de optimización. El valor de consultas que se van a mostrar se convierte en el ámbito de las consultas aptas con las que se va a experimentar. Una vez activadas las consultas deseadas, seleccione Siguiente para iniciar la experimentación.
Nota
Las consultas con Optimizable = Falso no se pueden seleccionar para experimentación.
Importante
Un símbolo del sistema advierte de que una vez que QTA pasa a la fase de experimentación, no es posible volver a la página Ver análisis.
Si no selecciona todas las consultas aptas antes de pasar a la fase de experimentación, debe crear una nueva sesión posteriormente y repetir el flujo de trabajo. Esto requiere el restablecimiento del nivel de compatibilidad de la base de datos al valor anterior.
Visualización de resultados permite la selección de las consultas que van a implementar la optimización propuesta como guía de plan.
La lista contiene la información siguiente:
Comprobación muestra el estado de implementación de consultas previamente seleccionadas de esta sesión. La lista de esta página difiere de la página anterior al cambiar la columna Puede implementar por Puede revertir. Esta columna puede ser Verdadero o Falso en función de si se puede revertir la optimización de consultas implementada y se puede quitar su guía de plan.
Si más adelante es necesario revertir en una optimización propuesta, seleccione la consulta correspondiente y, después, Revertir. La guía de plan de consulta se quita y la lista se actualiza para quitar la consulta revertida. Tenga en cuenta que en la siguiente imagen se ha quitado la consulta 8.
Nota
La eliminación de una sesión cerrada no elimina guías de plan implementadas previamente. Si elimina una sesión con guías de plan implementadas, no puede usar QTA para revertir. En su lugar, busque guías de plan mediante la tabla del sistema sys.plan_guides y elimine manualmente mediante sp_control_plan_guide.
Requiere la pertenencia al rol db_owner.
Eventos
31 mar, 23 - 2 abr, 23
Evento de aprendizaje de SQL, Fabric y Power BI más grande. 31 de marzo – 2 de abril. Use el código FABINSIDER para ahorrar $400.
Regístrate hoyCursos
Módulo
Uso del Asistente para la optimización de consultas de SQL Server - Training
Obtenga información sobre cómo funciona el Asistente para la optimización de consultas (QTA) junto con el Almacén de consultas para comparar las estadísticas de rendimiento de las consultas y buscar aquellas con regresión debido a los cambios en los niveles de compatibilidad.
Certificación
Microsoft Certified: Azure Database Administrator Associate - Certifications
Administre una infraestructura de base de datos de SQL Server para bases de datos relacionales locales e híbridas en la nube mediante las ofertas de bases de datos relacionales PaaS de Microsoft.
Documentación
Query Store Usage Scenarios (Escenarios de uso del Almacén de consultas) - SQL Server
Obtenga información sobre cómo se puede usar el Almacén de consultas para realizar un seguimiento y garantizar un rendimiento predecible de la carga de trabajo. Considere varios ejemplos en SQL Server.
Cambio del nivel de compatibilidad de la base de datos y uso del Almacén de consultas - SQL Server
En este artículo se explica el lugar en el que se usa el almacén de consultas para establecer una línea de base y cambiar el nivel de compatibilidad de la base de datos en una actualización de SQL Server.
Ajuste automático - SQL Server
Información sobre el ajuste automático en SQL Server y Azure SQL Database.