Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)

En esta sesión hablaremos de tecnicas de profiling avanzado de aplicaciones .NET. Usaremos interceptores, compilaremos nuestra modificación de EntityFramework, usaremos ANTS profiler, analizaremos con PowerPivot, usaremos SQL Server Profiler, revisaremos cómo trabajamos nativamente con los datos ya capturados en la capa DAL de nuestra arquitectura,...Preparate para optimizar de verdad!

  • Login to see the comments

Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)

  1. 1. #dotNetSpain2016 Enrique Catalá Mentor SolidQ (www.solidq.com) ecatala@solidq.com | @enriquecatala www.sqlpass.es Como hacer tuning a capas de acceso a datos en .NET
  2. 2. Patrocinadores Colaboradores #dotNetSpain2016
  3. 3. Comunidad PASS Spain: Próximos eventos http://www.sqlpass.es/
  4. 4. #dotNetSpain2016 1. Introducción 2. Demo time! Agenda
  5. 5. #dotNetSpain2016  Ingeniero Informático  Microsoft Data Platform MVP  Mentor en SolidQ ecatala@solidq.com www.solidq.com @enriquecatala enrique@enriquecatala.com www.enriquecatala.com
  6. 6. #dotNetSpain2016 Capas de acceso a datos
  7. 7. #dotNetSpain2016 Hardware Tuning HW (cabina, red,..) ServiciosTuning SQL, IIS Aplicación Tuning aplicaciones
  8. 8. #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
  9. 9. #dotNetSpain2016 Fundamentos • 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ásmotivos • 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”
  10. 10. #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
  11. 11. #dotNetSpain2016 Deja rodar tu app un tiempo y mira qué mejorar
  12. 12. #dotNetSpain2016 • List<T> -> O(n) • Dictionary<T,U> -> O(1)
  13. 13. #dotNetSpain2016 Generalmente es preferible hacer menos operaciones a la BBDD con mas conjuntos de filas
  14. 14. #dotNetSpain2016 • Evita procesados fila a fila Capas 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
  15. 15. No olvides realizar la encuesta ¡Gracias! #dotNetSpain2016 Enrique Catalá Bañuls Mentor SolidQ (www.solidq.com) ecatala@solidq.com | @enriquecatala http://aka.ms/DOTNETT6S4

×