Planes de ejecución 3.0 sql 2016 y v next

20
SOLIDQ SUMMIT MADRID 2017 #SQSummit17 Enrique Catalá | Mentor | [email protected] | @enriquecatala Planes de Ejecución 3.0: SQL Server 2016 y 2017

Transcript of Planes de ejecución 3.0 sql 2016 y v next

Page 1: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017

#SQSummit17

Enrique Catalá | Mentor | [email protected] | @enriquecatala

Planes de Ejecución 3.0: SQL Server 2016 y 2017

Page 2: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017

Agenda

Page 3: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

• Envia datos a la CPU

• Implementado por

todos los operadores

GetNext()

• Invocaciones

GetNext() fila a fila

• El habitual en OLTP

Row Mode• Invocaciones

GetNext() por ~900

filas

• Beneficios 10x-100x

• Requiere columnstore

Batch Mode

Page 4: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

Compatibility Level Guarantees

Query Optimizer Improvements under Trace Flag 4199

New Referential Integrity Operator

Parallel Update of Sampled Statistics

Sublinear Threshold for Update of Statistics

Additions to the New Cardinality Estimator (New CE)

Misc. Enhancements

Page 5: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

Batch query processing in serial queries

Sort operators in batch mode

Window aggregates in batch mode

Distinct aggregates in batch mode

Parallel INSERT SELECT into heaps and CCI

Heap scans for memory-optimized tables

Parallel scans for memory-optimized tables

Sampled and auto-update stats for memory-optimized tables

String and Aggregate Pushdowns

Page 6: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

Trace flag “mágico” para QO

https://support.microsoft.com/en-us/kb/974006

Page 7: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

NO_PERFORMANCE_SPOOL

[MAX|MIN]_GRANT_PERCENT

'DISABLE_OPTIMIZED_NESTED_LOOP'

'FORCE_LEGACY_CARDINALITY_ESTIMATION'

'ENABLE_QUERY_OPTIMIZER_HOTFIXES'

'ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES'

'ENABLE_HIST_AMENDMENT_FOR_ASC_KEYS'

'ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS'

'FORCE_DEFAULT_CARDINALITY_ESTIMATION'

'DISABLE_PARAMETER_SNIFFING'

'DISABLE_OPTIMIZER_ROWGOAL'

ENABLE_PARALLEL_PLAN_PREFERENCE

Page 8: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017

Page 9: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

Adaptative Query Processing

Plan regression prevention

WAITSTATS en QueryStore

Page 10: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

Adaptative Joins

• Detectar un mal

operador en

ejecución y

cambiarlo por otro

• Parameter sniffing

bye bye!

Interleaved execution

• MultiStatementTVF

con estimacion de

filas ajustadas al

vuelo

Batch mode memory

grant

• Actualización de

reservas de

memoria para

siguientes

ejecuciones

Page 11: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

Page 12: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

COMPATIBILITY LEVEL 140

JOIN eligible para NESTED LOOPS y HASH JOIN

HASH JOIN en batch mode (columnstore)

Alternativas con MERGE JOIN con el mismo outer

reference

Page 13: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

Ejecutar plan

nuevo

Resumir

optimizacion

usando

cardinalidades

del subarbol

materializado

Materializar

subarbol

Identificar

candidatos para

ejecucion

entrelazada

Comienzo

optimización

Page 14: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

COMPATIBILITY LEVEL 140

Solo queries (no DML)

Solo para MSTVFs

No usadas en CROSS APPLY

Page 15: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017

Page 16: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

AUTOMATIC_TUNING

FLAG a nivel de

BBDD

ON-OFF

DBA útil

No afecta a

nuestras

decisiones

Compatible con

sp_query_store_force_plan

ADMINISTRABLE

Sys.dm_db_tuning_recommendations

Page 17: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017SOLIDQ SUMMIT MADRID 2017

Enterprise Edition

Compatibility_level = 140

Query Store Activado

AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON )

Page 18: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017

Page 19: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMIT MADRID 2017

Agenda

Page 20: Planes de ejecución 3.0 sql 2016 y v next

SOLIDQ SUMMITMADRID 2017

Gracias!