sql >> Base de Datos >  >> RDS >> Database

Seminario web Plan Explorer 3.0:ejemplos y preguntas y respuestas

El viernes pasado, di un seminario web sobre Plan Explorer 3.0, las nuevas funciones y por qué decidimos eliminar la edición PRO y regalar todas las funciones gratis . Si te lo perdiste, puedes ver el seminario web aquí:

    Seminario web Plan Explorer 3.0

Se presentaron muchas preguntas excelentes, y trataré de abordarlas aquí. También hicimos algunas de nuestras propias preguntas en diferentes puntos durante la presentación, y los usuarios pidieron detalles de ellas, así que comenzaré con las preguntas de la encuesta. Tuvimos un máximo de 502 asistentes, e indicaré en los gráficos a continuación cuántas personas respondieron cada pregunta. Dado que la primera pregunta se hizo antes de que técnicamente comenzara el seminario web, una cantidad menor de personas respondió esa.

Preguntas de la audiencia

P:¿Están disponibles los ejemplos de código?

R: Sí, los tres archivos de sesión que utilicé para mis demostraciones están disponibles aquí:

    Demostraciones de seminarios web de Plan Explorer 3.0

Puede abrirlos en la versión más reciente de Plan Explorer, pero si desea volver a ejecutar cualquiera de las consultas localmente, necesitará AdventureWorks2014 (con el script ampliado de Jonathan Kehayias) y/o la nueva base de datos de muestra de Wide World Importers.

P:Entonces, ¿todo lo que se muestra hoy está en el Plan Explorer nuevo, unificado y gratuito? Si es así, ¿cuál es el nuevo modelo de ingresos de su empresa?

R: Siempre me sorprende cuando me encuentro con personas que piensan que todo lo que ofrecemos es Plan Explorer (los veo en persona, y también hubo varios comentarios similares en la publicación del blog de Greg). Nuestro verdadero pan y manteca está en nuestra plataforma de monitoreo, y esperamos que su experiencia positiva con Plan Explorer lo lleve a probar nuestras otras soluciones también.

P:Todavía usamos SQL Server 2008. ¿Hay ventajas en usar PE frente a SSMS?

R: Sí, aunque se perderá algunas de las funciones (como el perfil de consulta en vivo), hay mucha más información disponible en comparación con SSMS, y hacemos todo lo posible para que los problemas específicos sean mucho más fáciles de detectar.

P:¿Funcionará Live Query Profile para SQL Server 2014?

R: Sí, siempre que se aplique el Service Pack 1, ya que la función se basa en un DMV que se agregó en SQL Server 2014 SP1.

P:¿Cuáles son las limitaciones con respecto a SQL Server 2012? ¿Puedo usar esta herramienta?

R: Absolutamente. La limitación que mencioné durante el seminario web sobre SQL Server 2012 y versiones anteriores es que no pueden capturar datos de Live Query Profile.

P:¿Los datos solo se recopilan para SQL Server 2014 y versiones posteriores? ¿Qué pasa si SQL Server 2014 está instalado pero la compatibilidad está establecida en 2012?

R: Sí, Live Query Profile (y los gráficos de recursos) funciona en SQL Server 2014 (con al menos SP1), SQL Server 2016 y Azure SQL Database. No se ve afectado por el nivel de compatibilidad.

P:¿Qué versión de SQL Server se necesita para recuperar la información de las estadísticas de espera?

R: La recopilación de estadísticas de espera se basa en una sesión de eventos extendidos, por lo que debe ejecutarse en SQL Server 2008 o superior y ejecutarse en el contexto de un usuario o iniciar sesión con suficientes permisos para crear y eliminar una sesión de eventos extendidos (CONTROL SERVER en SQL Server 2008 y 2008 R2, y ALTER ANY EVENT SESSION en SQL Server 2012 y superior).

P:¿Cómo puedo mostrar los gráficos de análisis de índice o de perfil de consulta en vivo?

R: Hubo muchas variaciones en estas dos preguntas y, por lo que parece, las personas jugaron activamente con la nueva versión durante el seminario web y no vieron ni los datos de Index Analysis ni los datos de Live Query Profile. Si tiene un plan existente capturado de SSMS o una versión anterior de Plan Explorer, no habrá información para mostrar.

Para recopilar Análisis de índice datos, debe generar un plan estimado o real desde Plan Explorer. Para ver una cuadrícula de columnas e índices, debe elegir una Operación seleccionada:en el menú desplegable en la parte superior de la pestaña Análisis de índice.

Para recopilar Perfil de consulta en vivo datos, debe generar un plan real desde dentro de Plan Explorer, y ejecutarse contra 2014 SP1 o superior. También debe asegurarse de haber seleccionado la opción "Con perfil de consulta en vivo" (ver imagen a la derecha) y esperar a que finalice la ejecución de la consulta antes de que se representen los gráficos. En una versión futura, los gráficos se mostrarán en tiempo real, pero en esta versión lo hacemos después de que se hayan recopilado todos los datos.

P:¿Funciona Live Query Profile en bases de datos clonadas en SQL Server 2014 SP2?

R: Sí, esto funcionará, sin embargo, no proporcionará mucha información ya que una base de datos clonada está vacía:verá las estimaciones correctas en el plan, pero los valores reales serán todos 0, por lo que las métricas de tiempo de ejecución no representarán nada realista. o cuellos de botella significativos. A menos que esté completando el clon con datos alternativos, como promueve Erin Stellato en una publicación anterior. También tenga en cuenta que si desea que los planes de consulta reflejen los tamaños de datos de producción reales, querrá asegurarse de que todas las formas de estadísticas automáticas estén desactivadas; de lo contrario, se actualizarán a medida que ejecute las consultas, y luego todas las estimaciones serán 0.

P:¿La nueva versión de Plan Explorer funciona con SQL Server 2016?

R: Sí. Admitimos todos los nuevos operadores de planes de SQL Server 2016 y otros cambios en el plan de presentación (consulte mi publicación, "Compatibilidad con Plan Explorer para SQL Server 2016"), y el complemento también funciona con la última versión de SSMS (consulte mi publicación, "Anuncio de la compatibilidad con complementos de Plan Explorer para SSMS 2016").

P:Incluso un plan de ejecución real en SSMS está etiquetado como estimado costos?

R: Sí, eso es correcto. Cuando captura los datos del perfil de consulta en vivo, podemos cambiar los porcentajes de costo para todos los operadores, porque sabemos con un grado significativo de precisión cuánto trabajo real realizó cada operación (sin embargo, la consulta debe ejecutarse más allá de un umbral). Esto puede ser especialmente útil si está solucionando un problema de E/S, porque las estimaciones nunca parecen tener en cuenta los cuellos de botella de E/S. El siguiente gráfico recorre las estimaciones originales (siempre podemos mostrarle lo que SSMS le habría dicho), los valores reales después de volver a calcular los costos y los valores reales después de volver a calcular los costos y cambiar los costos a "por E/S" y los anchos de línea a "por tamaño de datos":

P:Solía ​​abrir mi plan producido por SSMS en Plan Explorer, pero por lo que acaba de mostrar Aaron, ¿entendí correctamente que debo ejecutar mis consultas (mientras ajustaba) desde Plan Explorer?

R: Abordé esta pregunta en el seminario web, pero para ser claros, creo que hay dos pasos en la evolución de una consulta:(1) garantizar resultados correctos y (2) optimizar el rendimiento. Creo firmemente que actualmente debería usar SSMS para (1) y Plan Explorer para (2). Durante mucho tiempo he promovido que una vez que las personas están seguras de que tienen resultados correctos, deben ajustar generando resultados reales. planes de ejecución desde Plan Explorer, porque recopilamos mucha más información de tiempo de ejecución para usted. Esta información de tiempo de ejecución es especialmente útil si comparte sus planes en nuestro sitio de preguntas y respuestas, ya que hace que todas las métricas y posibles cuellos de botella sean mucho más evidentes.

P:¿Cuáles son los porcentajes por debajo del operador... por ejemplo, 2885 % por debajo de la función?

R: Ese porcentaje no es un costo, sino el % de filas que realmente se procesaron en comparación con la estimación. En este caso, SQL Server estimó que la función devolvería 10 000 filas, pero en tiempo de ejecución devolvió cerca de 300 000. Puede ver una información sobre herramientas si se desplaza solo sobre ese número de %, y puede ver las diferencias de estimación del recuento de filas en la información sobre herramientas para el operador, o en otras cuadrículas como Top Operations (la función devuelve un número diferente de filas ahora que lo que hizo durante la demostración):

P:¿Puedes minimizar u ocultar la parte de reproducción para tener más espacio para el plan en sí?

R: Sí, todos nuestros paneles son ajustables; muchos tienen un alfiler que alterna entre estático y ocultar automáticamente, la mayoría de los paneles se pueden arrastrar (al igual que en Visual Studio, SSMS, etc.), y el panel de reproducción en particular tiene una pequeña flecha en el centro superior que le permite para mostrar/ocultar rápidamente:

P:¿Puede ver el bloque de código ofensivo directamente desde el plan?

R: No estoy seguro de estar interpretando la pregunta correctamente, pero todos nuestros paneles son sensibles al contexto, y la declaración del plan que se está examinando actualmente se muestra tanto en la cuadrícula de Declaración como en el panel de Datos de texto:

Si el texto de la declaración no es completamente visible debido a la longitud, siempre puede hacer clic con el botón derecho en esa celda y elegir Copiar declaración a Copia de texto de comando, y luego cambiar a esa pestaña. O bien, si no desea sobrescribir el contenido actual de la pestaña Texto del comando, elija Copiar> Celda y péguelo en una nueva sesión, SSMS u otro editor.

P:¿Cómo puedo detener un "Obtener plan real" si comencé una consulta de 1 hora por error?

R: Si una consulta se está ejecutando actualmente, hay un botón Detener en la barra de estado, en la parte inferior izquierda:

P:¿No sería mejor usar DROP_EXISTING =ON en lugar de eliminar primero un índice y crear uno nuevo?

R: Definitivamente tenemos planes para hacer que las secuencias de comandos de índice sean más sólidas en el futuro, incluidas opciones como DROP_EXISTING y ONLINE.

P:¿Esto se relaciona con SentryOne?

R: Toda la funcionalidad de Plan Explorer también está disponible en SentryOne Client. Técnicamente, no necesita instalar Plan Explorer si tiene el cliente, excepto que las actualizaciones se envían en un horario diferente, por lo que en muchos casos puede tener sentido tener ambos instalados.

Tenga en cuenta que los planes que recopilamos para usted durante las actividades de monitoreo son planes estimados, debido al alto costo de recopilar planes reales para todas las consultas que se ejecutan en un servidor. Esto significa que si profundiza en un plan recopilado en el cliente, no tendrá información adicional, como análisis de índice y datos de perfil de consulta en vivo. Siempre puede volver a ejecutar la consulta, de forma interactiva, para obtener esos datos de tiempo de ejecución adicionales.

P:¿Cuál es la sobrecarga de rendimiento de estas nuevas funciones?

R: La mayor parte de la información que recopilamos no es más costosa que si ejecutara las mismas consultas y recopilara los mismos datos de tiempo de ejecución de Management Studio (por ejemplo, con SHOWPLAN, STATISTICS TIME y STATISTICS IO activados). Sin embargo, gran parte de esto se ve compensado por nuestro comportamiento predeterminado de descartar resultados, por lo que no cargamos al servidor con el esfuerzo de transmitir los resultados a nuestra aplicación.

Para planes extremadamente complejos que se ejecutan en bases de datos con esquemas muy complejos y MUCHOS índices, la recopilación de índices y estadísticas podría ser menos eficiente, pero es muy poco probable que esto cause un impacto notable en las cargas de trabajo existentes. Esto no se verá afectado por el número de filas en una tabla, que se mencionó en una variación de esta pregunta.

Para consultas realmente prolongadas o que requieren muchos recursos, mi mayor preocupación sería nuestra colección de perfiles de consultas en vivo. Tenemos dos preferencias que pueden ayudar con esto:si incluir Live Query Profile con toda la generación de planes reales de forma predeterminada y qué intervalo para recopilar datos del DMV. Si bien sigo sintiendo que la sobrecarga de esta colección nunca debería acercarse a la sobrecarga de la consulta en sí, puede modificar esta configuración para que la colección sea menos agresiva.

Dicho todo esto, con el descargo de responsabilidad de que todo debe hacerse con moderación, no he observado ningún problema relacionado con la sobrecarga de la recopilación de datos y no dudaría en utilizar la funcionalidad completa en una instancia de producción.

P:¿Hay algo allí para ayudar a crear índices filtrados?

R: Actualmente no tenemos ninguna funcionalidad que recomiende índices filtrados, pero definitivamente está en nuestro radar.

P:¿Algún plan para agregar una función de comparación de planes de consultas al Explorador de planes?

R: Sí, esto ciertamente ha estado en nuestra hoja de ruta desde mucho antes de que se introdujera esta funcionalidad en SSMS. :-) Nos tomaremos nuestro tiempo y crearemos un conjunto de funciones que esperamos que espere de nosotros.

P:¿Podría usarlo con paquetes SSIS para averiguar el rendimiento de un paquete?

R: Supongo que podría, si invoca el paquete o el trabajo a través de T-SQL contra un servidor (Plan Explorer no tiene la capacidad de iniciar cosas como paquetes SSIS directamente). Pero la aplicación solo mostrará los aspectos de rendimiento que se hacen visibles a través de SQL Server:si hay ineficiencias dentro del paquete SSIS que no están relacionadas con la ejecución contra SQL Server (por ejemplo, un ciclo infinito en una tarea de secuencia de comandos), estamos no podremos recogerlos, porque no tenemos visibilidad y no estamos realizando ningún análisis de código.

P:¿Puede mostrar rápidamente cómo usar la función de análisis de punto muerto?

R: Me perdí esta pregunta durante el seminario web, pero hablo sobre esta funcionalidad en mi kit de demostración, Jonathan Kehayias ha publicado un blog al respecto aquí, Steve Wright tiene un video al respecto en YouTube y la documentación oficial se puede revisar en la Guía del usuario de PE.

P:¿Se puede usar como Profiler? ¿Puedo analizar una carga de trabajo completa?

R: Plan Explorer está diseñado para ayudar a analizar consultas individuales y sus planes de ejecución. Tenemos una plataforma de monitoreo con todas las funciones para esfuerzos de mayor alcance, y también existen varias herramientas de análisis de carga de trabajo de terceros.

P:Soy muy nuevo en el ajuste de consultas. ¿Podría sugerir herramientas y artículos para una comprensión más profunda?

R: Hay muchos recursos para mejorar el ajuste de consultas:

  • Cualquier libro sobre T-SQL de Itzik Ben-Gan, Grant Fritchey o Benjamin Nevarez;
  • Cualquier entrada de blog de Paul White o Rob Farley;
  • Preguntas y respuestas aquí en answers.sqlperformance.com o en dba.stackexchange.com;
  • Vídeos de ajuste de consultas en YouTube;
  • El kit de demostración (¡con una nueva versión próximamente!); y,
  • Práctica . En serio. Puede leer todos los libros y artículos que desee, pero sin la resolución de problemas prácticos y prácticos y la mejora de consultas problemáticas con problemas de rendimiento reales, será difícil convertirse en un experto. En mi humilde opinión.

Resumen

Gracias por asistir al seminario web y muchas gracias por todas las excelentes preguntas. Lamento no haber podido abordarlos a todos, pero espero que esto haya sido útil, no obstante. Si tenía alguna pregunta que no abordé anteriormente, no dude en preguntarme directamente a [email protected].