Cuando QueryStore no sirve
¿qué opciones tenemos?
 Ingeniero Informático
 Microsoft Data Platform MVP
 Mentor en SolidQ
 Tuning y alta disponibilidad
Enrique Catalá Bañuls
ecatala@solidq.com
@enriquecatala
El infierno del DBA
La
aplicación
no responde
Rendimiento
aleatorio
Problemas
de regresion
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?
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
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
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
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
Query Store: explotación de datos
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: 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
Demo
Query store
Query Analytics: ¿por qué?
¿Todos los problemas son por planes de ejecución?
¿quién ejecuta cada petición? (login)
¿desde qué equipo?
¿qué aplicación?
¿Ha variado su frecuencia?
¿El peso de cada petición respecto de las demás BBDD?
¿El peso de cada petición respecto de las demás instancias?
http://www.solidq.com/tsql-query-analytics/
Query Analytics: ¿por qué?
QueryStore
Only SQL Server 2016+
No data about who
executed the query
No data about from where
was executed the query
Manual T-SQL or static
SSMS reports
Single database analysis Stored in host database
Full detail without
aggregation only 1 day
QueryAnalytics
All SQL Server
editions
Rich connection
information
Rich PowerBI
Dashboard
Cloud storage
Detection of
query regressions
between
environments
Detection of top
queries per
instance
Full trazability of
a query since
beginning of time
BI user does not
needs host
database Access
Proactive
alerting system
for performance
degradation
Daily/weekly
e-mail reports
http://www.solidq.com/tsql-query-analytics/
Demo
Query analytics
Query Analytics : Cómo funciona
Query
execution
Staging area (disk)
async
Execution
completed
Memory
Internal
tables
CONNECTION INFO
Query execution details
ExtendedEvents.xel
DW
QueryAnalytics.exe
PaaS
Datos capturados mediante extended events (profiler siSQL2008r2 o inferior)
Pequeño desfase temporal entre ejecución y persistencia en DW
Query Analytics : Despliegue PaaS
http://www.solidq.com/tsql-query-analytics/
SolidQ Azure Subscription
FTPs Storage
PUSH
QueryAnalytics
Parser QueryAnalytics DW
PUSH
Trace files
cleaner
ML
Regressions
Detector
Billing, and
Diagnostics
PULL
Client Azure Subscription
Azure Storage
Azure DB1
Azure DB n
Client CPD
PULL
SQL 1
SQL n
PULL
Trace files provider
Client Azure
Subscription
Query Analytics : Despliegue On Premises
Client CPD
QueryAnalytics DW
SolidQ Azure Subscription
ML
Regressions
Detector
QueryAnalytics
Parser
SQL 1
SQL 2
SQL n
TSQL Query
Analytics VM
Client Azure
Subscription
http://www.solidq.com/tsql-query-analytics/
Query Analytics : explotación de datos
 PowerBi con decenas de KPIs,
Charts, filters!
Filtros
complejos por
día, horas,
bbdd, logins,
hosts…
Query Analytics : Sistema proactivo de alertas
 Consultas con Rendimiento degradado
 TOP 10 por diferentes kpi…
 Todo configurable
Query Analytics: configuración de captura
 Se puede modificar a
voluntad y en caliente para
hacer cambios
Query Analytics: configuración de parsing
Métricas de Query Analytics
Historico
Clientes con más
de 6 meses de
eventos
Eventos
Clientes con +6.5
Billones
Patrones
Clientes con +9M
patrones
Users
Clientes con +6000
usuarios agregados
AplicacionesClientes con +1700
Eventos/seg
Clientes con +20k/seg
de media
Preguntas

Cuando QueryStore no sirve, ¿qué opciones tenemos?

  • 1.
    Cuando QueryStore nosirve ¿qué opciones tenemos?
  • 2.
     Ingeniero Informático Microsoft Data Platform MVP  Mentor en SolidQ  Tuning y alta disponibilidad Enrique Catalá Bañuls [email protected] @enriquecatala
  • 3.
    El infierno delDBA La aplicación no responde Rendimiento aleatorio Problemas de regresion
  • 4.
    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?
  • 5.
    Query Store: ¿porqué? Problemas • Tiempo detección incidencias • Tiempo resolución del problema Soluciones • Información de rendimiento historico • Forzar plan anterior mediante GUI
  • 6.
    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
  • 7.
    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
  • 8.
    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
  • 9.
    Query Store: explotaciónde datos 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
  • 10.
    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
  • 11.
  • 12.
    Query Analytics: ¿porqué? ¿Todos los problemas son por planes de ejecución? ¿quién ejecuta cada petición? (login) ¿desde qué equipo? ¿qué aplicación? ¿Ha variado su frecuencia? ¿El peso de cada petición respecto de las demás BBDD? ¿El peso de cada petición respecto de las demás instancias? http://www.solidq.com/tsql-query-analytics/
  • 13.
    Query Analytics: ¿porqué? QueryStore Only SQL Server 2016+ No data about who executed the query No data about from where was executed the query Manual T-SQL or static SSMS reports Single database analysis Stored in host database Full detail without aggregation only 1 day QueryAnalytics All SQL Server editions Rich connection information Rich PowerBI Dashboard Cloud storage Detection of query regressions between environments Detection of top queries per instance Full trazability of a query since beginning of time BI user does not needs host database Access Proactive alerting system for performance degradation Daily/weekly e-mail reports http://www.solidq.com/tsql-query-analytics/
  • 14.
  • 15.
    Query Analytics :Cómo funciona Query execution Staging area (disk) async Execution completed Memory Internal tables CONNECTION INFO Query execution details ExtendedEvents.xel DW QueryAnalytics.exe PaaS Datos capturados mediante extended events (profiler siSQL2008r2 o inferior) Pequeño desfase temporal entre ejecución y persistencia en DW
  • 16.
    Query Analytics :Despliegue PaaS http://www.solidq.com/tsql-query-analytics/ SolidQ Azure Subscription FTPs Storage PUSH QueryAnalytics Parser QueryAnalytics DW PUSH Trace files cleaner ML Regressions Detector Billing, and Diagnostics PULL Client Azure Subscription Azure Storage Azure DB1 Azure DB n Client CPD PULL SQL 1 SQL n PULL Trace files provider Client Azure Subscription
  • 17.
    Query Analytics :Despliegue On Premises Client CPD QueryAnalytics DW SolidQ Azure Subscription ML Regressions Detector QueryAnalytics Parser SQL 1 SQL 2 SQL n TSQL Query Analytics VM Client Azure Subscription http://www.solidq.com/tsql-query-analytics/
  • 18.
    Query Analytics :explotación de datos  PowerBi con decenas de KPIs, Charts, filters! Filtros complejos por día, horas, bbdd, logins, hosts…
  • 19.
    Query Analytics :Sistema proactivo de alertas  Consultas con Rendimiento degradado  TOP 10 por diferentes kpi…  Todo configurable
  • 20.
    Query Analytics: configuraciónde captura  Se puede modificar a voluntad y en caliente para hacer cambios
  • 21.
  • 22.
    Métricas de QueryAnalytics Historico Clientes con más de 6 meses de eventos Eventos Clientes con +6.5 Billones Patrones Clientes con +9M patrones Users Clientes con +6000 usuarios agregados AplicacionesClientes con +1700 Eventos/seg Clientes con +20k/seg de media
  • 23.