Post on 09-Jan-2017
#dotNetSpain2016
Enrique CataláMentor SolidQ (www.solidq.com)ecatala@solidq.com | @enriquecatalawww.sqlpass.es
Como hacer tuning a capas de acceso a datos en .NET
#dotNetSpain2016
Ingeniero Informático
Microsoft Data Platform MVP
Mentor en SolidQ
ecatala@solidq.com
www.solidq.com
@enriquecatala
enrique@enriquecatala.com
www.enriquecatala.com
#dotNetSpain2016
HardwareTuning HW (cabina,
red,..)
ServiciosTuning SQL, IIS
Aplicación Tuning aplicaciones
#dotNetSpain2016
Tipología de
acceso
Por conjuntos Por cursores
Patrones de
bajo nivel
Dinámico
Adhoc
Parametrizable
Estático
Stored
procedures
Arquitecturas
Modelo
conectividad
Conectada
Desconectada
Modelo de
desarrollo
Manual
ORM
#dotNetSpain2016
Fu
nd
am
en
tos • Tiempo de desarrollo
• Diferencia de roles
• Desarrollador vs. DBA
• Independencia de la
aplicación
• Uso de modelo de
datos
• Abstracción de servidor
de base de datos Más
mo
tivo
s • Rechazo a T-SQL
• Manejo de cadenas
para acceso a datos
• Errores en tiempo de
ejecución vs.
Compilación
• Uso de lenguajes más
familiares
• Es más “cool”
#dotNetSpain2016
Librería Método ¿Qué hace?
Query.PlanCompiler.Pl
anCompiler
Compile(cqt.DbCommandTree ctree, …….) Compila query hacia SQL Server. Coste de
compilación. Aquí generalmente es donde
debemos poner esfuerzos en optimizar linq
Objects.Elinq.Compile
dELinqQueryState
GetExecutionPlan(MergeOption? forMergeOption) Obtener plan de ejecución ya compilado
previamente
Objects.Elinq.ELinqQu
eryState
GetExecutionPlan(MergeOption? forMergeOption) Obtener plan de ejecución todavía no compilado
Objects.ObjectQuery
<T>
GetResults(MergeOption? forMergeOption) Obtiene datos. Incluye datos GetExecutionPlan,
Compile y el coste de materializar incluido. Es el
coste total
#dotNetSpain2016
Generalmente es preferible hacer menos operaciones a la BBDD con mas conjuntos de filas
#dotNetSpain2016
• Evita procesados fila a filaCapas de acceso
a datos
• La estructura de datos importa, no es
todo BBDD
Complejidad
algorítmica
• Centra el tiro a donde esté el
problema
Profiling de una
aplicación .NET
• Ya no estamos en los 90. Hasta tu
móvil tiene 8 núcleos
Consideraciones
de concurrencia
No olvides realizar la encuesta
¡Gracias!
#dotNetSpain2016
Enrique Catalá BañulsMentor SolidQ (www.solidq.com)ecatala@solidq.com | @enriquecatala
http://aka.ms/DOTNETT6S4