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

Reseña del libro:Benjamin Nevarez:Ajuste y optimización de consultas

Mi copia de Microsoft SQL Server 2014 Query Tuning &Optimization (también disponible en Kindle), de Benjamin Nevarez, llegó la semana pasada. No pude llegar a él de inmediato, pero durante el fin de semana finalmente pude navegar entre cambios de pañales y un viaje al zoológico.

TL;DR:Vale la pena

Benjamin presenta una explicación detallada de todo el proceso de optimización de consultas y muchos de los antecedentes que necesitará para darle sentido a todo. Trata los índices, las estadísticas y el almacenamiento en caché del plan, así como también cómo lidiar con problemas comunes, como la detección de parámetros. Explica opciones populares como Optimize for Ad Hoc Workloads y Forced Parametrization, y cómo cambian la forma en que los planes se almacenan en caché y se reutilizan. También analiza muchas características no documentadas y marcas de rastreo que pueden ayudarlo a comprender mejor (o forzar) el enfoque de SQL Server para su consulta y cómo usar los comandos Trace, Extended Events y DBCC para revisar las decisiones que tomó el optimizador y el impacto que tuvieron. he tenido.

También hay una buena parte del contenido dedicado a muchas funciones nuevas de SQL Server 2014, incluido In-Memory OLTP ("Hekaton"), índices de almacén de columnas agrupados, estadísticas incrementales y el nuevo estimador de cardinalidad. Mientras se escribía el libro, las bases de datos de muestra de AdventureWorks para SQL Server 2014 aún no se habían publicado, pero ya están disponibles.

El libro finaliza con un capítulo complejo pero informativo sobre las limitaciones del optimizador de consultas que conducen a planes subóptimos y cómo usar sugerencias y guías de planes para solucionarlos.

Algunas limitaciones

Si bien es una referencia general bastante completa sobre el ajuste de consultas, hubo un par de cosas que pensé que podrían haber sido mejores:

  • Benjamin habla sobre la recopilación de información de ShowPlan de Trace y Extended Events, y señala correctamente que Profiler no es la forma en que desea ejecutar seguimientos, debido a la sobrecarga de rendimiento horrenda y bien documentada. Esto es algo bueno, ya que el seguimiento está en desuso y Profiler es lo que la gente suele usar por defecto. Hay una advertencia menor sobre la sobrecarga del query_post_execution_showplan evento, que creo que podría haber recibido un poco más de énfasis, con recordatorios de que esto solo debe usarse para ajustes y solución de problemas muy específicos. Es probable que recopilar esto para cada consulta en su carga de trabajo haga más daño que bien.
  • Habla sobre índices y estadísticas filtrados, pero pasa por alto el hecho de que son problemáticos cuando se trata de actualizaciones automáticas, ya que no se usa ningún algoritmo especial, aunque el índice solo representa un subconjunto de la tabla. Microsoft ha confirmado que se trata de un problema, pero en este momento no tienen planes de solucionarlo. Para obtener más información, consulte Conexión n.º 509638 y Conexión n.º 333532. Consulte también esta publicación de blog para conocer muchas otras limitaciones del índice filtrado.
  • Si bien la cobertura de las funciones de 2014 fue bastante completa, me sorprendió no encontrar ninguna mención de sys.dm_exec_query_profiles , un nuevo DMV para rastrear el progreso de las consultas en tiempo real, hasta el operador individual. Sin embargo, no es información esencial para todos, ya que no es un caso de uso extremadamente amplio (en mi humilde opinión, solo es realmente útil para consultas particularmente largas).
  • Esta es una tontería total, pero es común entre los títulos técnicos:el índice es ligeramente inexacto. Por ejemplo, la referencia a SQL Sentry Plan Explorer apunta a la página 13, pero el contenido relevante en realidad está en la página 14. Como dije, un detalle muy pequeño, me llamó la atención porque eso fue lo primero que busqué. arriba en el índice. :-)

No consideraría estas quejas per se. Ningún libro puede contener hasta el último detalle de todo. Así que por favor considérenlos apéndices. :-)

Resumen

Esto se ha convertido rápidamente en una referencia conveniente para mí; las orejas de perro ya están reemplazando varios de mis marcadores por publicaciones de blog que mencionan algún detalle oscuro o señal de seguimiento, y en muchos casos Benjamin lo ha descrito con más detalle y/o lo ha enmarcado con un mejor contexto. Entre este libro y un par de títulos a los que se hace referencia a continuación, creo que cualquiera que esté familiarizado con T-SQL podría ponerse al día con bastante rapidez, incluso sin tener ningún conocimiento del optimizador antes de sumergirse.

Materiales complementarios

Otros libros que recomendaría para complementar este título:

  • Ajuste del rendimiento de consultas de SQL Server de Grant Fritchey
  • Indización de rendimiento experto de Jason Strate para SQL Server 2012
  • Planes de ejecución de SQL Server de Grant Fritchey

Y, por supuesto, hay un suministro interminable de publicaciones de blog y otros artículos para ayudarlo a comprender el ajuste y la optimización. Soy un poco partidario del material de Paul White:son tan profundos como los mortales querrían llegar, pero también puedes sacarles una tonelada simplemente hojeándolos. Grant y Gail Shaw también tienen contenido valioso sobre consultas y planes de ejecución, y Kimberly Tripp y Erin Stellato son excelentes recursos para todo lo relacionado con índices o estadísticas.

  • Paul White:SQLPerformance.com | sql.kiwi
  • Grant Fritchey (y recursos)
  • Gail Shaw
  • Kimberly Tripp
  • Erin Stellato

Puede encontrar cierta superposición, pero creo firmemente en consumir información de múltiples fuentes. A veces presentan la misma información, pero la bombilla se enciende según la forma en que una persona lo dijo o el contexto que dio. Probablemente también extrañé a otras 50 personas con un gran material.

Ah, ¿y mencioné que nuestra herramienta gratuita, Plan Explorer, también puede ayudar con esto? Mi kit de demostración actualizado muestra varios ejemplos.