jueves, 28 de julio de 2016

Nuevo proyecto: In-Memory OLTP Utils

He liberado bajo licenciamiento GIT una serie de funciones para tratamiento de texto que se pueden usar en objetos compilados nativos con el motor In-Memory OLTP que trae SQL Server 2016. Todas tienen su equivalente en el motor OnDisk pero supongo que por razónes de timing no se han liberado en su momento.

Te animo a que añadas mas funcionalidades que puedas creer convenientes aquí: https://github.com/enriquecatala/InMemoryOLTPUtils

miércoles, 6 de julio de 2016

Disponibles las slides de mis últimas charlas!

He dejado colgadas en mi canal de SlideShare, las slides de mis sesiones en el pasado SolidQ Summit Madrid 2016. Que las disfruteis!

Query Store en SQL Server 2016

Tanto en SQL Server 2016 como en SQLAzure (PaSS), Microsoft nos proporciona nuevas herramientas para que el comportamiento de SQL Server sea más predecible. Con estas nuevas herramientas (QueryStore) como administrador de BBDD tienes nuevas posibilidades para analizar el rendimiento de consultas concretas, de patrones de consultas, y si suceden cambios importantes en su comportamiento. Venga a esta sesión para entender QueryStore y sacarle más partido a su servidor SQL Server.

Nivel: 400

Planes de ejecución 1

En esta sesión conoceremos los operadores básicos de los planes de ejecución: nested loop, merge join, hash join, aggregates) y speeling. Conocerá también cómo interpretar un plan de ejecución y cómo leerlo.

Nivel 300

Planes de ejecución 2

Esta sesión es continuación de “planes de ejecución 1″. En esta sesión no se tocará ninguna cuestión explicada en la ssión anterior. El objetivo de esta sesión es explicar el funcionamiento de operadores avanzados como los pipes, indices temporales, hash avanzados, etc

Nivel 400

Migración a SQL Server 2016

La adopción de SQL Server 2016 debe ser “tranquila” y sin problemas. En esta sesión le guiaremos en cómo hacer dicha migración/actualización y cuáles son los pasos que tomamos en SolidQ en estos proyectos de migración. Trataremos tanto migraciones side-by-side como migraciones in-place.

Nivel: 300

Datawarehouse como servicio en Azure (SQLDW)

En lugar de aprovisionar grandes recursos para tu DW, Azure ofrece una versión especial de SQL Server como DataWarehouse. Si está familiarizado con el appliance APS, SQLDW en Azure viene a ser su versión como servicio. Usted crea su DW desde el portal de Azure y ya puede empezar a cargar datos y explotarlos. En esta sesión veremos cómo habilitar el servicio y cómo empezar a explotar SQLDW como tu DW en la nube.

Nivel: 200

lunes, 20 de junio de 2016

Mejoras en AlwaysON con SQL Server 2016

Si en tu entorno dispones de algún despliegue con AlwaysON y piensas migrar a SQL Server 2016 debes saber que hay un gran numero de mejoras introducidas en esta edición de SQL Server de cara a mejorar el rendimiento y el nº de implantaciones.

Mejoras como mejorar 4x-5x el rendimiento del transporte de operaciones entre nodos secundarios, mejor uso del HW para compresion-descompresion de mensajes, soporte para DTC,…

Seguir leyendo…

martes, 3 de mayo de 2016

Auditoria de operaciones personalizada con Temporal Tables

Con SQL Server 2016 o Azure SQL Databases tenemos la nueva característica Temporal Tables, con la que podemos hacer un montón de cosas. Pese a que está destinada a mantener de forma muy facil atributos lentamente cambiantes o SCD type 2 para datawarehouse, en este caso propongo una utilización bastante interesante para implementar auditoria de operaciones personalizada, con poco esfuerzo de desarrollo.

La idea es que con esta solución podamos hacer una query a nuestra tabla para saber la vida que ha tenido una determinada Fila. Tras esto, la idea por tanto es obtener una tupla como la que veis:

Tabla resultados auditoria

  • El día 1 de Mayo Pepe, insertó el valor “Hola”
  • El día 2 de Mayo Pepe actualizó su valor a “Adiós”
  • El día 3 de Mayo, Juan atualizó su valor a “Textonuevo”
  • El día 4 de Mayo, Andres borró la fila

Continua leyendo aqui…

sábado, 27 de febrero de 2016

Resumen de la #dotNetSpain2016

El pasado 24 de Febrero tuve el placer y el honor de forma parte de los speakers del evento mas grande de .NET que se celebra en españa. Nada mas y nada menos que 1700 asistentes presenciales y 5000 siguiendolo en directo por streaming hicieron que fuera uno de los eventos de desarrollo mas importantes de nuestro pais este año. Incluso estuvo ni mas ni menos que el mismismo Satya Nadella (CEO de Microsoft).

Algunas fotos del evento para hacernos una idea del éxito de asistencia que tuvo:

1 Mainstage
WP_20160224_12_39_08_Rich_LI WP_20160224_09_08_25_Rich_LI
WP_20160224_09_43_13_Rich_LI nadella

En el evento lo pasé genial, encontrándome a viejos amigos con los que me pude reir de lo lindo y cómo no conociendo un monton de gente con la que tengo en común el tremendo interes por la innovación, la tecnologia y las ganas de aprender.

Cada uno se hacia su propio evento ya que teniendo 8 tracks llenos de rockstars de cada area, la tarea es dificil. Aun así, yo asistí a las siguientes sesiones, todas ellas una maravilla:

  1. MvvmCross, desarrollo multiplataforma mediante patrones con Xamarin y C#
  2. Tips and Tricks para el desarrollo de soluciones IoT en .Net
  3. Entity Framework Core 1.0
  4. Mejores Prácticas de conectividad, Seguridad y uso de CLR en SQL Server: Lecciones Aprendidas desde las trinchera

*Tanto estas como el resto de sesiones están publicadas aqui: https://github.com/esmsdn/dotNetSpain2016/wiki/Recursos

Además de como digo de contar con nada mas y nada menos que el CEO de Microsoft, tuvimos otras sorpresas interesantes como que se conectó en directo con Scott Hanselman, Scott Hunter y David Carmona, los cuáles nos contaron en directo que Microsoft había alcanzado un acuerdo con Xamarin para iniciar el proceso de compra y resolvieron las preguntas de los asistentes. Con esta gran noticia se cerraba esta edición de .NET Conference 2016 Spain.

Como digo, tuve el honor de impartir una sesión titulada “Como hacer tuning a capas de acceso a datos en .NET” cuyo briefing decía:

"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! "

La verdad que el escenario era brutal. Ese pequeñajo que sale a la derecha con la mano levantada soy yo Smile (gracias a mi amigo Sergio Sisternes @sesispla por la foto)

Presentando

La verdad que el feedback que me dieron los asistentes fué bastante bueno y tras la sesión nos quedamos un buen rato discutiendo sobre diversos temas relacionados con la sesión…tanto que empezó la siguiente sesión y tuvimos que cortar Surprised smile. De hecho mucha gente se ha interesado bastante por el material y me ha expresado su interes en colaborar en futuros proyectos con nosotros (SolidQ) a raiz de esta sesión, por lo que estoy bastante contento ya que es mejor indicativo de que realmente gustó Smile

Y por último, solo me falta dirigirte a las slides de mi sesión y al código fuente de la app de ejemplo que hice para la ocasión:

El código fuente de la app de ejemplo que hice: https://github.com/enriquecatala/ProfilingDotNetExample

Y las slides de la sesión:

Espero que el año que viene, si puedo mandar sesión interesante me la acepten como este año y lo disfrute tanto como este año lo he disfrutado.

Gracias a todo el equipo de @msdev_es y en especial a Jose Bonnin por hacerlo posible

jueves, 28 de enero de 2016

Mejora el rendimiento de like con SQLCLR

SQLCLR es una de las características que mas me gustan de SQL Server. Aunque puede ser un desastre utilizarla si no se tienen los conceptos claros, se pueden hacer cosas muy interesantes como esta que vamos a ver ahora.

La idea es optimizar allí donde SQLCLR es mas eficiente y esto es, optimizando operaciones de búsqueda de texto, sobre columnas varchar(max) y nvarchar(max)

Sigue leyendo…

miércoles, 28 de octubre de 2015

Pre-conferencia planes de ejecución en SQL Server #SQLSatMadrid

En el próximo #SqlSatMadrid que se celebrará el próximo día 20 de Noviembre en las instalaciones de Microsoft Ibérica, voy a impartir una pre conferencia de 6h (con descansos) dedicada exclusivamente a cómo leer planes de ejecución con SQL Server. A diferencia del resto de actividades del evento, esta va a ser la única actividad no gratuita y además se realizará el Viernes, para que su asistencia no te impida asistir al resto de sesiones que habrán en el #SQLSatMadrid

Para apuntarte, puedes hacerlo a través del siguiente link de registro:

https://www.eventbrite.com/e/entradas-sqlsaturday-madrid-workshop-como-leer-planes-de-ejecucion-en-sql-server-19204087944

¿Por qué puede interesarte asistir?

Como sabrás, T-SQL es un lenguaje de especificación, por lo que escribiendo una query lo que hacemos es pedir qué es lo que necesitamos, pero no el algoritmo que se debe utilizar para conseguirlo. Aprender a leer planes de ejecución de SQL Server te ayudará a entender el algoritmo de recuperación de datos que implementa SQL Server para resolver tu consulta y con ello a entender si es posible mejorarlo de alguna manera.

El workshop durará 6 horas con descansos incluidos. Comienza desde las 9:30 hasta las 15:30.

 

Prerrequisitos

- Más de 1 año de experiencia con SQL Server
- Conocer el modelo relacional
- Conocimiento del lenguaje T-SQL
- Necesidad de comprender por qué algunas consultas van lentas

 

Temario

1. Estadísticas

  • Qué son, su importancia y cómo leerlas
  • Conceptos clave
    • Selectividad, densidad, cardinalidad

2. Operadores

  • Table Scan
  • NonClustered Index Scan
  • Clustered Index Scan
  • Index Seek
  • Merge Interval
  • Key Lookup
  • Rid Lookup
  • Spools Eager/Lazy Spool
  • Row Count Spool
  • Table Spool
  • Nonclustered Index Spool
  • Stream aggregate
  • Assert
  • Concatenation
  • Compute scalar
  • Segment
  • Sort
  • Operadores paralelos
    • Distributed streams
    • Repartition streams
    • Gather streams
  • Operadores de Join

3. Avanzado

  • Uso de caché de planes de ejecución Examinar y manipular
  • Parametrización forzada
  • Optimize adhoc for workloads
  • Parameter Sniffing
  • Optimize for
  • Planes guiados
  • Patronización y bifurcación
  • Recompilaciones automáticas

Recuerda que esto es una conferencia de 6h con descansos el resto de actividades del evento #SQLSatMadrid son gratuitas y tendrán lugar el sábado (pulsa en la imagen para ver la agenda del sábado)

c05c98fb-3445-4f91-a10a-d5f959ec81c5[1]