##SQLSatMadrid
Query Store
Enrique Catala Bañuls
MVP , Mentor at SolidQ
| ecatala@solidq.com
| enrique@enriquecatala.com
| @enriquecatala
| www.enriquecatala.com
##SQLSatMadrid
BIG Thanks to SQLSatMadrid Sponsors
##SQLSatMadrid
4 Sponsor Sessions at 11:40
Don’t miss them, they might be getting
distributing some awesome prizes!
 HPE
 SolidQ
 KABEL
 TSD Consulting
Also BIG Raffle prizes at the end of the
event provided by:
Plainconcepts, SolidQ, Kabel, TSD
Consulting, Pyramid Analytics & sqlpass.es
##SQLSatMadrid
Enrique Catalá Bañuls
 Ingeniero Informático
 Microsoft Data Platform
MVP
 Mentor en SolidQ
 Tuning y alta disponibilidad
ecatala@solidq.com | www.solidq.com
@enriquecatala | www.enriquecatala.com
##SQLSatMadrid
Contenido de la sesión
 Live Query Statistics (LQS)
 Query Store
##SQLSatMadrid
El infierno del DBA
La aplicación
no responde
Rendimiento
aleatorio
Problemas
de regresion
##SQLSatMadrid
Live Query Statistics (LQS)
 Identificación rápida
de cuellos de botella
 Ver en tiempo real
 Filas/sec
 Tiempo consumido
 Progreso de
operador
 Warnings
##SQLSatMadrid
Live Query Statistics (LQS)
 DMVs
 sys.dm_exec_requests
 sys.dm_exec_sql_text
 sys.dm_exec_query_memory_grants
 sys.dm_exec_query_plan
 sys.dm_exec_query_profiles
 Activación
 SET STATISTICS XML ON | SET STATISTICS
PROFILE ON
 Xevents capturando query_post_execution_showplan
##SQLSatMadrid
Demo
Live Query Statistics
##SQLSatMadrid
Live Query Statistics
 Limitaciones
 Tiene que ser activado previa ejecución de la
query
 No se soportan procedimientos almacenados
compilados nativos
 Requiere
 SHOWPLAN para ver la pestaña resultados
 VIEW SERVER STATE para ver estadísticas live
##SQLSatMadrid
El infierno del DBA
La aplicación
no responde
Rendimiento
aleatorio
Problemas
de regresion
##SQLSatMadrid
Regresión de rendimiento
 El optimizador utiliza dos tipos de clave
 Conforme los parámetros cambian, el plan de
ejecución óptimo puede ser otro
Y si lo estima
incorrectamente?
##SQLSatMadrid
Query Store: ¿Por qué?
Problemas
• Tiempo
detección
incidencias
• Tiempo
resolución del
problema
Soluciones
• Información de
rendimiento
historico
• Forzar plan
anterior
mediante GUI
##SQLSatMadrid
Query Store: Cómo funciona
 Texto de
consulta
 Métricas de
rendimiento
 Historificado por
tiempo
 Permite forzado
de planes
 Configuracion
de recolecciónDurability latency controlled by DB
option
DATA_FLUSH_INTERNAL_SECONDS
Query Store
Async write-
back
Compile
Execute
SQL
Plan store
Runtime
stats
Query
Store
schema
Compile
MSG
Execute
MSG
Async write-back
Query
Store
##SQLSatMadrid
Query Store: Cómo funciona
Existe en
plan caché?
Compilar y optimizar
query
Ejecucion query
Fin de ejecución
NO
Ejecutar query
Necesario
recompilar?
NO
Query Store
Obtener plan de caché
SI
SI
Enviar texto y plan
Nuevo plan forzado
Obtener plan forzado
##SQLSatMadrid
Query Store: Almacenamiento
Captura de datos en memoria para minimizar E/S
Persistencia de datos asíncrona en background
Query execution Query Store
async
Compile
Execute
Query Store
plan store
Runtime
stats store
Internal
tables
Query text and plan
Query execute stats
##SQLSatMadrid
Query Store: Lectura
Vistas de mezcla entre datos in-memory y on-disk
Los usuarios siempre ven el “ultimo” dato
Query execution Query Store
async
Compile
Execute
Query Store
plan store
Runtime
stats store
Internal
tables
Query text and plan
Query execute stats
Query Store views (TVF)
##SQLSatMadrid
Query Store: Tracking
Tablas internas
Query
text
Query Plan
Runtime
stats
1 -n1 -n
Context
settings
sys.
Compile stats
query_store_query_text
query_context_settings
query_store_query
query_store_plan
Runtime stats
query_store_runtime_stats_inter
val
query_store_runtime_stats
Vistas expuestas
One row per query text, per
plan affecting option
(example: ANSI NULLS
on/off)
One row per
plan (for each
query)
Runtim
e stats
interval
One row per
plan, per time
interval
(example: 5 min)
##SQLSatMadrid
Query Store: configuraciones
 Operation mode [OFF | READ_ONLY | READ_WRITE]
 Actual | Requested (status)
 Data flush interval (minutes)
 Statistics Collection Interval (minutes)
 Max Size (MB)
 Capture Mode [None | ALL | AUTO]
 Stale Query Threshold (Days)
 Purge Query Data
##SQLSatMadrid
Demo
Query Store
##SQLSatMadrid
Query Store: Uso típico
Activar Query
Store
(ALTER DB)
Captura de
datos por
Query Store
Buscar
“patrónes
problemático
s”
Aplicar
FORCE
PLAN
##SQLSatMadrid
Query Store: Uso típico
 Queries con regresión de rendimiento
 Queries con regresión de rendimiento en
período de tiempo
 Queries con mayor coste en un período de
tiempo
 Coste de compilación de queries
 Forzar plan de ejecución
##SQLSatMadrid
Encontrar y
arreglar
problemas de
regresión
Identificar
queries
“pesadas”
Realizar
análisis en
profundidad
de cargas de
trabajo
Reducir
riesgos ante
migraciones
Largo plazo/estratégicoCorto plazo/táctico
Query Store: Repaso
##SQLSatMadrid
GRACIAS!
ecatala@solidq.com
www.solidq.com
@enriquecatala
www.enriquecatala.com

Query store

  • 1.
    ##SQLSatMadrid Query Store Enrique CatalaBañuls MVP , Mentor at SolidQ | ecatala@solidq.com | enrique@enriquecatala.com | @enriquecatala | www.enriquecatala.com
  • 2.
    ##SQLSatMadrid BIG Thanks toSQLSatMadrid Sponsors
  • 3.
    ##SQLSatMadrid 4 Sponsor Sessionsat 11:40 Don’t miss them, they might be getting distributing some awesome prizes!  HPE  SolidQ  KABEL  TSD Consulting Also BIG Raffle prizes at the end of the event provided by: Plainconcepts, SolidQ, Kabel, TSD Consulting, Pyramid Analytics & sqlpass.es
  • 4.
    ##SQLSatMadrid Enrique Catalá Bañuls Ingeniero Informático  Microsoft Data Platform MVP  Mentor en SolidQ  Tuning y alta disponibilidad ecatala@solidq.com | www.solidq.com @enriquecatala | www.enriquecatala.com
  • 5.
    ##SQLSatMadrid Contenido de lasesión  Live Query Statistics (LQS)  Query Store
  • 6.
    ##SQLSatMadrid El infierno delDBA La aplicación no responde Rendimiento aleatorio Problemas de regresion
  • 7.
    ##SQLSatMadrid Live Query Statistics(LQS)  Identificación rápida de cuellos de botella  Ver en tiempo real  Filas/sec  Tiempo consumido  Progreso de operador  Warnings
  • 8.
    ##SQLSatMadrid Live Query Statistics(LQS)  DMVs  sys.dm_exec_requests  sys.dm_exec_sql_text  sys.dm_exec_query_memory_grants  sys.dm_exec_query_plan  sys.dm_exec_query_profiles  Activación  SET STATISTICS XML ON | SET STATISTICS PROFILE ON  Xevents capturando query_post_execution_showplan
  • 9.
  • 10.
    ##SQLSatMadrid Live Query Statistics Limitaciones  Tiene que ser activado previa ejecución de la query  No se soportan procedimientos almacenados compilados nativos  Requiere  SHOWPLAN para ver la pestaña resultados  VIEW SERVER STATE para ver estadísticas live
  • 11.
    ##SQLSatMadrid El infierno delDBA La aplicación no responde Rendimiento aleatorio Problemas de regresion
  • 12.
    ##SQLSatMadrid Regresión de rendimiento El optimizador utiliza dos tipos de clave  Conforme los parámetros cambian, el plan de ejecución óptimo puede ser otro Y si lo estima incorrectamente?
  • 13.
    ##SQLSatMadrid Query Store: ¿Porqué? Problemas • Tiempo detección incidencias • Tiempo resolución del problema Soluciones • Información de rendimiento historico • Forzar plan anterior mediante GUI
  • 14.
    ##SQLSatMadrid Query Store: Cómofunciona  Texto de consulta  Métricas de rendimiento  Historificado por tiempo  Permite forzado de planes  Configuracion de recolecciónDurability latency controlled by DB option DATA_FLUSH_INTERNAL_SECONDS Query Store Async write- back Compile Execute SQL Plan store Runtime stats Query Store schema Compile MSG Execute MSG Async write-back Query Store
  • 15.
    ##SQLSatMadrid Query Store: Cómofunciona Existe en plan caché? Compilar y optimizar query Ejecucion query Fin de ejecución NO Ejecutar query Necesario recompilar? NO Query Store Obtener plan de caché SI SI Enviar texto y plan Nuevo plan forzado Obtener plan forzado
  • 16.
    ##SQLSatMadrid Query Store: Almacenamiento Capturade datos en memoria para minimizar E/S Persistencia de datos asíncrona en background Query execution Query Store async Compile Execute Query Store plan store Runtime stats store Internal tables Query text and plan Query execute stats
  • 17.
    ##SQLSatMadrid Query Store: Lectura Vistasde mezcla entre datos in-memory y on-disk Los usuarios siempre ven el “ultimo” dato Query execution Query Store async Compile Execute Query Store plan store Runtime stats store Internal tables Query text and plan Query execute stats Query Store views (TVF)
  • 18.
    ##SQLSatMadrid Query Store: Tracking Tablasinternas Query text Query Plan Runtime stats 1 -n1 -n Context settings sys. Compile stats query_store_query_text query_context_settings query_store_query query_store_plan Runtime stats query_store_runtime_stats_inter val query_store_runtime_stats Vistas expuestas One row per query text, per plan affecting option (example: ANSI NULLS on/off) One row per plan (for each query) Runtim e stats interval One row per plan, per time interval (example: 5 min)
  • 19.
    ##SQLSatMadrid Query Store: configuraciones Operation mode [OFF | READ_ONLY | READ_WRITE]  Actual | Requested (status)  Data flush interval (minutes)  Statistics Collection Interval (minutes)  Max Size (MB)  Capture Mode [None | ALL | AUTO]  Stale Query Threshold (Days)  Purge Query Data
  • 20.
  • 21.
    ##SQLSatMadrid Query Store: Usotípico Activar Query Store (ALTER DB) Captura de datos por Query Store Buscar “patrónes problemático s” Aplicar FORCE PLAN
  • 22.
    ##SQLSatMadrid Query Store: Usotípico  Queries con regresión de rendimiento  Queries con regresión de rendimiento en período de tiempo  Queries con mayor coste en un período de tiempo  Coste de compilación de queries  Forzar plan de ejecución
  • 23.
    ##SQLSatMadrid Encontrar y arreglar problemas de regresión Identificar queries “pesadas” Realizar análisisen profundidad de cargas de trabajo Reducir riesgos ante migraciones Largo plazo/estratégicoCorto plazo/táctico Query Store: Repaso
  • 24.