viernes, 17 de octubre de 2014

MVP 2014!

No puedo estar mas que agradecido a Microsoft por haberme concedido por segundo año consecutivo el honor de reconocerme como MVP (profesional mas valioso) en SQL Server y por supuesto a todos los que dia a dia me animais a crear nuevo contenido y realizar webcasts y conferencias. Este premio es algo de lo que estoy profundamente orgulloso y que me sigue dando todavía mas ganas de seguir compartiendo con la comunidad tecnica, tan apasionada por la tecnologia.

Solo un dato, de entre los más de 100 millones de miembros de la comunidad técnica y social de todo el mundo, solo se reconocen 3.800 MVP cada año, siendo solo 5 en españa para SQL Server (fuente original)

Este año parece que los MVP de todo el mundo vamos a tener la tremenda suerte de conocer a Satya Nadella (CEO de Microsoft) en una recepción que tendremos con el en las oficinas centrales de Microsoft en Redmon durante el MVP Summit de la primera semana de Noviembre

WP_20141013_12_30_04_Pro

 

Si te interesa conocer más sobre el programa MVP https://mvp.microsoft.com/es-es/becoming-an-mvp.aspx

Gracias!

jueves, 11 de septiembre de 2014

Deadlock en SQL Database

En SQL Databases (a.k.a SQL Azure) es posible obtener información sobre deadlocks producidos en nuestras bases de datos sin tener que crear trazas de profiler ni eventos extendidos (que como sabemos a fecha de hoy no es posible). Si quieres ver cómo,  CONTINUA LEYENDO….
image *Deadlock graph en SQL Database

SQL Saturday Barcelona 2014

Acaba de ser publicada la agenda definitiva para el primer megaevento nacional dedicado en exclusiva a SQL Server. El próximo 25 de Octubre en Barcelona, tendremos el placer de disfutar de parte de los mejores ponentes SQL nacionales e internacionales. Tendremos el honor de contar con personal de Microsoft (2) , así como ponentes Microsoft Most Valuable Professionals (17), Microsoft Certified Masters (2), Microsoft Active Professionals (1) de España, Estados Unidos, Brasil, Italia, …Vamos, un un lujazo de esos que no te puedes perder.

Recuerda que la asistencia es totalmente gratuita http://www.sqlsaturday.com/338/register.aspx y que puedes acceder a la agenda completa aqui http://www.sqlsaturday.com/338/schedule.aspx

lineup1

 

Para más información visita http://www.sqlsaturday.com/338/eventhome.aspx 

Ah y si vienes no olvides pasearte por mi sesión de planes de ejecución en SQL Server 2014!

Te esperamos!!

miércoles, 3 de septiembre de 2014

Proximos eventos en los que participo

Este final de año se me presenta movidito a nivel de eventos en los que he tenido la suerte de ser elegido como speaker. Por orden de fechas:

SQL Saturday Oporto (18 Octubre)

De nuevo vuelvo a Portugal por tercer año consecutivo a disfrutar de un buen ambiente en un evento dedicado enteramente a SQL Server. Esta vez es Oporto, la primera vez que voy y seguro que será tan interesante como las anteriores.

En este caso me han aceptado una sesión en ingles y de nivel principiante dedicada a aprender desde 0 cómo leer planes de ejecución en SQL Server.

Este es el título y abstract:

How to read execution plans

The objective of this session is very simple: To be able to read and understand the execution plans. This simple thing can enhance our productivity because it will help us to detect and potentially solve performance problems.

 

SQL Saturday Barcelona (25 Octubre)

SQL Saturday llega por primera vez a España. En este caso he tenido la suerte de que me acepten una sesión en dicho evento, que como insisto ocurre por primera vez en mi pais (y espero que no sea la última).

En este caso me han aceptado una sesión con el mismo título que la que me aceptaron en Oporto, pero en este caso he subido el nivel a intermedio y la he modificado para focalizarla en SQL Server 2014 para incluir novedades sobre el nuevo cardinality estimator.

Este es el título y abstract:

Planes de ejecución en SQL Server 2014

Prácticamente toda aplicación utiliza por debajo un motor de base de datos para almacenar información. Entender lo que hace cuando le pedimos datos a SQL Server puede ayudar a cualquier desarrollador a entender por qué sus consultas van lentas. No se trata solo de abrir esa "caja negra" que es SQL Server, sino de entender lo que realmente tiene en su interior. En esta sesión aprenderemos a leer planes de ejecución y contaremos además, qué novedades hay en SQL Server 2014 con el nuevo cardinality estimator

 

CodeMotion (21-22 Noviembre)

Uno de los mayores eventos a nivel europeo y que por suerte se ha celebrado esta vez en Madrid

En este caso he tenido la suerte de que seleccionen una sesión que impartiré junto a Miguel Lopez (@augurarte).

Este es el título y abstract:

Aplicaciones escalables en la nube: mentiras y verdades

Desarrollar para la nube no es tan transparente como creemos. Conocer correctamente este nuevo entorno, así como sus limitaciones nos ayudarán a evitar problemas de escalabilidad. En esta sesión veremos cómo desarrollar correctamente soluciones para la nube de Microsoft que sean escalables. Veremos ejemplos de lo que no es escalable y también veremos cómo podemos solucionarlo y evitarlo. Hablaremos de patrones de arquitectura, Unity, Entity Framework, capas de acceso a datos, worker roles, web roles,...escalabilidad!

martes, 1 de julio de 2014

Replicación híbrida y escalabilidad con SQL Server OnPremise y Azure (1/4)

Este es el primero de una serie de artículos relativos a enseñar las posibilidades de nube híbrida conjugando SQL Server OnPremise y Cloud. Si tuviera que definir una palabra para describir la tecnología del momento, la palabra sería “Cloud”. Cada vez más aparece “la nube” en cualquier discusión tecnológica y/o proyecto en el que me encuentro. Sea para alabarla o para criticarla, la nube parece que siempre está presente en todo proyecto que se precie últimamente.
Imaginemos que nuestro negocio tiene una clara vertiente estacional y necesitamos dar solución a la creciente demanda que está generando en la que, por ejemplo solo en los meses de verano el uso de nuestra plataforma aumenta un 600%. Tradicionalmente nos encontramos en un escenario en el que nosotros tenemos compradas las máquinas, tenemos compradas las licencias, montada la infraestructura IT, contratada luz, contratado un buen sistema de comunicaciones,…Ante este escenario, si la demanda de nuestro servicio aumenta drásticamente en determinadas épocas del año, nos encontraremos ante la problemática de qué hacer…¿compramos más máquinas, licencias,…o probamos con la nube?
Obviamente este post va de encajar en un escenario típico y cada vez más común, aplicación global con uso estacionalmente dispar. ¿Por qué nos decantaríamos por Azure en un escenario como el planteado en el ejemplo?, Se me ocurren bastantes cosas pero hay dos bastante importantes en el caso planteado:
· Necesitamos elasticidad en la plataforma
o Azure te ofrece poder añadir-quitar recursos a tu infraestructura en un abrir y cerrar de ojos. Ya no hablo solo de tener worker roles con escalabilidad automática, hablo de disponer en minutos de una máquina funcional completa con SQL Server 2012 SP2 y empezar a dar servicio, por ponerte un ejemplo.
o Además, una vez los recursos no te son necesarios los puedes desasignar directamente y dejar de pagar por ellos (aunque estén ahí configurados a la espera de que se vuelvan a levantar llegado el momento)
· Necesitamos que la plataforma Cloud tenga buenos tiempos de respuesta al rededor del globo
o Una de las ventajas de Azure es que tus servicios cloud pueden estar alojados en los CPD que MS proporciona…y eso implica que puedes tener una zona dando soporte en la región de Este USA, Oeste USA, Oeste Europa, Este Asia,…mejorando los tiempos de respuesta para los usuarios independientemente de la parte del globo en que se encuentren.

SIGUE LEYENDO

miércoles, 25 de junio de 2014

Benefits of Soft-NUMA: Don't believe everything you read

SQL Server is an application which supports NUMA. This means that it can correctly use hardware which has been designed with NUMA architecture. Additionally, you can use software configuration in order to get higher performance, as you'll see.

What is NUMA?

NUMA= Non Uniform Memory Access. NUMA architecture is characterized by a series of nodes, each one having its own CPU and local memory circuitry, which are interconnected by a bus (a token ring, shared bus,…whatever,…but they are interconnected).

This corresponds to the following diagram:

clip_image002

This post will not go into details of the benefits of NUMA hardware, but will focus rather on Soft-NUMA.

What is Soft-NUMA?

Soft-NUMA is the way you can, in SQL Server, “simulate” NUMA architecture or “trick” your SQL Server instances into believing that there is a NUMA architecture like that described above. This is not only used to configure nodes within a hardware NUMA node, but also to configure Soft-NUMA on SMP machines, where there are a series of CPUs which share ALL the same memory (there are no isolated nodes, there is just one node they can share)

This type of scenario would correspond to the following diagram:

clip_image004

And, in this case, the SQL Server would behave, to all intents and purposes, as though there were a single NUMA node, since that is how you can technically think of it.

Don't believe everything you read about Soft-NUMA

In many references in prestigious books (which I'm obviously not going to mention here, out of respect for the authors), and even in the books in official SQL Server screens, as of the date of writing this (3/5/2012), the following comment is made:

“The benefits of soft-NUMA include reducing I/O and lazy writer bottlenecks on computers with many CPUs and no hardware NUMA. There is a single I/O thread and a single lazy writer thread for each NUMA node. Depending on the usage of the database, these single threads may be a significant performance bottleneck. Configuring four soft-NUMA nodes provides four I/O threads and four lazy writer threads, which could increase performance”

Source: http://msdn.microsoft.com/en-us/library/ms178144.aspx

This is even a question in a certification exam for SQL Server clip_image006

Well, in fact, this is not correct, and it has even been reported in connect as a bug to be corrected…but was closed without corrections :( https://connect.microsoft.com/SQLServer/feedback/details/670328/books-online-incorrect-soft-numa-information

How can I reproduce it?

Very easily. Imagine you've got a machine - as I have - with 8 CPUs (Intel core i7)

Imagine that you want to create 2 Soft-NUMA nodes, so that cores from 0 to 3 are node 1 and from 4 to 7 are node 2

CPUs 0 1 2 3 4 5 6 7

Soft-NUMA <----N0----><----N1---->

You should go to regedit.exe and do the following:

In SQL Server 2012:

Open regedit.exe HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\

If not exists KEY "NodeConfiguration" (this will happen in non hardware-NUMA systems)

Create new key: "NodeConfiguration"

If not exists key "Node0"

Create new key: Node0

If not exists key "Node1"

Create key "Node1"

Remember this:

Decimal Binary Allow SQL Server threads on processors

value bit mask

15 00001111 0, 1, 2, and 3

240 11110000 4,5,6 and 7

Then, apply the following configuration:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node0]

"CPUMask"=dword:15

"Group"=dword:0

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\110\NodeConfiguration\Node1]

"CPUMask"=dword:240

"Group"=dword:0

Once you have restarted SQL Server, you will have proof that you have 2 NUMA nodes.

By looking in the SQL Server error log

clip_image008

And, of course, in the DMV which displays the NUMA nodes available

clip_image010

But, however hard you search, there are no additional LAZYWRITER processes resulting from having more Soft-NUMA nodes.

A simple sp_who2 will show you that there is only one LAZYWRITER process.

NOTE: Remember that this is only true for Soft-NUMA; if you have hardware-NUMA you will indeed have a LAZYWRITER process for each of the nodes

Therefore, this highly specific type of SQL Server configuration is not, as you might think, useful for improving disk I/O completion waits ... rather, it is useful for improving network I/O completion waits!! clip_image006[1]

jueves, 12 de junio de 2014

Rendimiento tempdb mejorado en SQL Server 2014

Desde tiempos inmemoriales, hay un dicho que dice: “Usa siempre que puedas tablas temporales porque esas tablas viven en RAM”. A veces lo he oido con variables de tabla, pero la “esencia” del dicho es que puedes mejorar el rendimiento de lógica de negocio en por ejemplo procedimientos almacenados, creando objetos “temporales”. Nada mas lejos de la realidad :)
La realidad es que una tabla temporal o una variable de tabla, finalmente acaba escribiendose en disco…pero en los discos donde residen los ficheros de tempdb. Es decir, que si, que una tabla temporal o variable de tabla SI genera presión de E/S. ¡Sorpresa!
La buena noticia es que ese famoso “dicho” en SQL Server 2014 ya no es mentira del todo :).
CONTINUAR LEYENDO…

jueves, 5 de junio de 2014

Particionado de tablas en SQL Server 2014

Un nuevo post sobre SQL Server 2014, esta vez centrado en hablar sobre mejoras que aparecen sobre particionado de tablas en SQL Server 2014.
Tradicionalmente el particionado de datos no ha sido muy de mi agrado por las implicaciones de mantenimiento que se tenian asociadas. Tareas como reindexar, mover particiones entre tablas, actualizar estadísticas,…no eran tarea sencilla en entornos con carga 24x7 en el momento en el que particionabas una tabla. Ni que decir tiene que en SQL Server 2005 particionar llevaba aparejado un grave problema de rendimiento en el momento en que una query “tocaba” más de una partición…
Cada edición de SQL Server mejoraba algun aspecto (mejoras en nº de hilos entre particiones, operadores optimizados para descartar particiones,…) pero siempre quedaba en la balanza de “contras”, el mantenimiento de las tablas particionadas.
Con SQL Server 2014 la cosa ha mejorado bastante, hasta el punto de que ya no me da tanto “reparo” el promover el particionado de datos en grandes volúmenes de información, dado que ahora los inconvenientes ya están bastante diluidos como para que se puedan poner en la balanza y evitar particionar.
Continua leyendo aqui…

sábado, 19 de abril de 2014

Back to my roots, una nueva edicion del evento tecnológico de referencia nacional

De la mano de #gusenet, durante los próximos dias 25,26 y 27 de Abril en Torrevieja, Alicante, se va a llevar a cabo una vez mas uno de los eventos de mayor solera del panorama nacional. Con un montón de tracks de auténticos cracks en cada una de las materias y una posibilidad inmejorable de hacer networking con buena cantidad de referentes nacionales, este evento se está posicionando como uno de los eventos “imperdibles”. Si te gusta la tecnologia y pasartelo bien, vas a poder disfrutar a partes iguales de tracks de alto nivel y “charangas tecnológicas a discreción” mientras tomas unas buenas cañas (de eso no va a faltar :)).
El año pasado tuve el placer de hablar en dicho evento sobre “Paralelismo en SQL Server” y este año me han vuelto a hacer el honor de invitarme para hablar esta vez del nuevo motor relacional In-Memory OLTP que viene con SQL Server 2014.
No olvides apuntarte gratuitamente aqui http://www.eventbrite.es/e/entradas-back-to-my-roots-10635022639
Esta es la lista de ponentes y sus respectivas sesiones:
Marc Estrada
Pague una, llévese dos (apps para múltiples dispositivos).

Marc Rubiño
AngularJS – Poli bueno, poli malo.

Juan María Hernández
No pierdas tiempo escribiendo tests.

Alfredo Fernández
Todo un misterio (es secreto: probablemente algo cañero de JS).

Juan Quijano
Coded UI, iniciación a pruebas funcionales del interfaz gráfico. 

Quique Martínez
Video OnDemand y Live Streaming. Entrega de vídeo multiplataforma.

Luis Ruíz Pavón
CQRS – Hasta el infinito y más allá

Alberto Díaz & Adrián Díaz
Porque no veo otra cosa nada más que SharePoint

Pedro J. MolinaBackends y arquitecturas para servicios con Radarc

Alex CasqueteProgramación funcional reactiva

Eduard Tomás
Videojuegos web en tiempo real con Katana, SignalR y NancyFx

Roberto Luis Bisbé
Firefox OS: Javascript vuela en primera clase

Enrique Catalá
Nuevo motor relacional In-memory OLTP en SQL Server 2014

Bruno Capuano
Coding 4 Fun, Kinect V2, Leap Motion, Unity3D, etc …

Josue Yeray & Santiago Porras
Charla secreta

Isabel Cabezas & Toni Recio
Javascript y por qué no comparar la velocidad con el tocino

Carlos Carrillo
Windows Azure Mobile Services ahora con .NET

Juan Manuel Servera
Introducción a Roslyn

Miguel Egea
Diseñando bases de datos relacionales para mantener históricos

Eladio Rincón
Índices compuestos para desarrolladores

Fernando G. Guerrero
Reflexiones sobre el futuro, de alguien que ha peleado ya algunas recesiones

Fernando Escolar
Load Tests: ¿sobrevivirías al efecto menéame?

Pedro Hurtado, LLuis Franco y Sergio León
Dos tontos muy tontos y un tío con futuro

miércoles, 2 de abril de 2014

Solucion: Error: 17190, Severity: 16, State: 1.

Hoy ha salido la versión RTM de SQL Server 2014 y hoy he aprovechado para instalarla ya que curiosamente imparto la sesión de lanzamiento In-Memory OLTP en españa el próximo día 14 (a la que te recomiendo que asistas :)). Cual es mi sorpresa que me ha explotado diréctamente al primer intento en mi máquina :O!!!
A priori podría uno pensar que se trata de un bug en SQL Server 2014, pero parece algo que ya ocurre en versiones anteriores y tiene más que ver con un problema de seguridad en mi máquina. No voy a entrar en detalles de por qué me ha pasado, pero si que considero interesante que a cualquiera que le pase esto, pueda reaccionar y dar con una solución facil y rápida.
Continúa leyendo …

martes, 11 de marzo de 2014

Analizar perfmon con powerpivot

Una forma de analizar grándes volúmenes de información estática de forma óptima es mediante el motor PowerPivot, el famoso plugin gratuito para Microsoft Office que apareció con Office 2010.
En este post vamos a ver lo facil que resulta analizar toda la información proveniente de nuestros ficheros .blg mediante PowerPivot. Usaremos además la herramienta “Relog” para convertir nuestros ficheros
Para ello imagina que tienes una captura .blg que lleva dias funcionando y queremos analizar. Puede que conozcas la herramienta PAL, la cual es bastante interesante y automatiza muchas tareas, pero seguramente si te dedicas como yo al “grano fino” necesitas ir mas alla. Para estos casos es para los que te vendrá bien conocer la importación de datos y análisis mediante PowerPivot.
image

CONTINÚA LEYENDO AQUI

lunes, 3 de febrero de 2014

Forzar affinidad NUMA para SSIS

Es muy importante configurar correctamente la afinidad NUMA de una máquina que corre más de un servicio-aplicación intensiva. Hace algún tiempo escribí sobre paralelismo en SQL Server y debatimos entre algunas cosas sobre la importancia del afinamiento de CPU a la hora de obtener el máximo rendimiento de tu Hardware (puedes leer aqui: Paralelismo en SQL Server (I) )
El caso es que no en pocas ocasiones se me pregunta cómo puedes particionar el HW correctamente cuando usas SQL Server y otros servicios en la misma máquina. Obviamente la afinidad de procesador nativa de SQL Server nos va a servir claramente cuando tenemos por ejemplo 2 nodos numa y 2 instancias de motor relacional corriendo independientes en esa misma máquina.
CONTINUA LEYENDO…