<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.ms/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Surviving the Night - Todos los comentarios</title><link>http://geeks.ms/blogs/palvarez/default.aspx</link><description>El blog de Pablo Doval sobre .NET, SQL, WinDbg... </description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP1 (Build: 31106.3070)</generator><item><title>[Windows Phone 7.5] Inserciones masivas en SQL Server CE vs SQL Server vs MongoDb</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/22/roar-inserciones-masivas-en-mongodb-vs-sql-server-iv.aspx#202086</link><pubDate>Sun, 11 Dec 2011 10:50:26 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:202086</guid><dc:creator>Josue Yeray</dc:creator><description>&lt;p&gt;Hola a todos! Desde hace unas semanas, mis compa&amp;ntilde;eros Pablo Doval y Unai Zorrilla est&amp;aacute;n&lt;/p&gt;
&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202086" width="1" height="1"&gt;</description></item><item><title>[Windows Phone 7.5] Inserciones masivas en SQL Server CE vs SQL Server vs MongoDb</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/17/hot-inserciones-masivas-en-mongodb-vs-sql-server.aspx#202043</link><pubDate>Thu, 08 Dec 2011 12:16:29 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:202043</guid><dc:creator>Josue Yeray</dc:creator><description>&lt;p&gt;Hola a todos! Desde hace unas semanas, mis compa&amp;ntilde;eros Pablo Doval y Unai Zorrilla est&amp;aacute;n&lt;/p&gt;
&lt;img src="http://geeks.ms/aggbug.aspx?PostID=202043" width="1" height="1"&gt;</description></item><item><title>re: Roar: Inserciones Masivas en MongoDB vs SQL Server (IV)</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/22/roar-inserciones-masivas-en-mongodb-vs-sql-server-iv.aspx#201850</link><pubDate>Wed, 23 Nov 2011 13:56:52 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201850</guid><dc:creator>Luis M. González</dc:creator><description>&lt;p&gt;Estoy siguiendo muy de cerca este pique y lo único que puedo decir es que ... me encanta :)&lt;/p&gt;
&lt;p&gt;Y la verdad no me imaginaba que SQL Server pudiese plantar cara a MongoDB sin los BULK INSERTS, así que con los números actuales creo que es más que suficiente.&lt;/p&gt;
&lt;p&gt;Saludos!&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201850" width="1" height="1"&gt;</description></item><item><title>re: Roar: Inserciones Masivas en MongoDB vs SQL Server (IV)</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/22/roar-inserciones-masivas-en-mongodb-vs-sql-server-iv.aspx#201848</link><pubDate>Wed, 23 Nov 2011 08:38:53 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201848</guid><dc:creator>Eduard Tomàs i Avellana</dc:creator><description>&lt;p&gt;Estoy siguiendo la serie con mucho interés. Primero he de decir que no tenía claro que Sql Server sin Bulk insert pudiese competir tan de cara con MongoDb en este escenario.&lt;/p&gt;
&lt;p&gt;Dicho esto, extraigo una conclusión: para conseguir 1,6 segundos en MongoDb Unai no ha tenido que hacer nada extraordinario, cualquiera con un poco de experiencia en MongoDb puede llegar a la solución de Unai (otra cosa es que se le ocurra :p). Por otro lado para conseguir 1,8 segundos en SQL Server se necesita... bueno, se necesita ser Pablo :P&lt;/p&gt;
&lt;p&gt;Al menos me da a mi la sensación de que Pablo está manejando temas de SQL Server realmente avanzados! :D&lt;/p&gt;
&lt;p&gt;Javier, estaría bien que publicases tus resultados así como el proceso que has seguido con Oracle, para poder comparar!&lt;/p&gt;
&lt;p&gt;A menos, a primera vista, &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201848" width="1" height="1"&gt;</description></item><item><title>re: Roar: Inserciones Masivas en MongoDB vs SQL Server (IV)</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/22/roar-inserciones-masivas-en-mongodb-vs-sql-server-iv.aspx#201846</link><pubDate>Wed, 23 Nov 2011 07:36:30 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201846</guid><dc:creator>Javier Torrecilla</dc:creator><description>&lt;p&gt;Simplemente increible los resultado que habeis obtenido con SQL y MONGO.&lt;/p&gt;
&lt;p&gt;Yo hice una pequeña prueba con Oracle, y &amp;quot;mas o menos&amp;quot; conociendo las diferencias de hardware entre vuestras maquinas y la mia. Los resultados de Oracle dejaban mucho que desear. &lt;/p&gt;
&lt;p&gt;Un saludo y a la espera de ver los últimos post!&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201846" width="1" height="1"&gt;</description></item><item><title>re: Roar: Inserciones Masivas en MongoDB vs SQL Server (IV)</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/22/roar-inserciones-masivas-en-mongodb-vs-sql-server-iv.aspx#201839</link><pubDate>Tue, 22 Nov 2011 23:11:00 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201839</guid><dc:creator>Pablo Alvarez</dc:creator><description>&lt;p&gt;¿¡Que tal Juan?! Tranquilo, yo tampoco lo hubiera pensado :) Coincidio que poco antes del reto leí un par de entradas del señor Kejser, asi como un par de videos suyos del SQLBits, y eso fue lo que me dio la idea.&lt;/p&gt;
&lt;p&gt;La verdad es que tanto los tiempos de preparacion de sentencia, como de gestion de conexiones, son aun minimos. Ahora nos encontramos con dos esperas principales del lado de SQL Server: SOS_SCHEDULER_YIELD y WRITELOG. La segunda sabeis que no puedo combatirla, ya que solo podria mejorarlo con BULK INSERTS. La primera... estate atento a la siguiente entrada, pero no vas desencaminado con el tema de la afinidad ;)&lt;/p&gt;
&lt;p&gt;Respecto al priority boost, esto solo incrementa la prioridad del proceso de SQL Server; puede ayudar a evitar que otros procesos nos &amp;#39;roben&amp;#39; memoria, etc.. pero no debiera hacer que esto fuera mas rapido.&lt;/p&gt;
&lt;p&gt;Un abrazote!!&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201839" width="1" height="1"&gt;</description></item><item><title>re: Roar: Inserciones Masivas en MongoDB vs SQL Server (IV)</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/22/roar-inserciones-masivas-en-mongodb-vs-sql-server-iv.aspx#201830</link><pubDate>Tue, 22 Nov 2011 20:41:57 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201830</guid><dc:creator>Juan Irigoyen</dc:creator><description>&lt;p&gt;Impresionante, particionar la tabla, nunca lo hubiera pensado, quizás una prueba más lógica pase por aumentar los registros 1,8 segundos es tan poco que seguramente los tiempos de conexión y desconexión sumados a los de la preparación de la sentencia se lleven la mayoría. Una opción que no has comentado y que en excenarios así puede tener sentido es la activación de boost SQL Server priority y probar a habilitar y deshabilitar processor affinity e I/O affinity, quizas nos llevemos alguna sorpresa, algunas veces los programas que hacen uso de varios hilos pueden llegar a ser mas lentos.&lt;/p&gt;
&lt;p&gt;Un saludo.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201830" width="1" height="1"&gt;</description></item><item><title>Roar: Inserciones Masivas en MongoDB vs SQL Server (IV)</title><link>http://geeks.ms/blogs/palvarez/archive/2010/07/27/da-consultas-adhoc.aspx#201828</link><pubDate>Tue, 22 Nov 2011 19:23:22 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201828</guid><dc:creator>Surviving the Night</dc:creator><description>&lt;p&gt;Me alegra comprobar que, al parecer, el pequeño reto que nos traemos Unai y yo está provocando cierto&lt;/p&gt;
&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201828" width="1" height="1"&gt;</description></item><item><title>Roar: Inserciones Masivas en MongoDB vs SQL Server (IV)</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/17/hot-inserciones-masivas-en-mongodb-vs-sql-server.aspx#201826</link><pubDate>Tue, 22 Nov 2011 19:23:20 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201826</guid><dc:creator>Surviving the Night</dc:creator><description>&lt;p&gt;Me alegra comprobar que, al parecer, el pequeño reto que nos traemos Unai y yo está provocando cierto&lt;/p&gt;
&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201826" width="1" height="1"&gt;</description></item><item><title>re: Hot: Inserciones Masivas en MongoDB vs SQL Server</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/17/hot-inserciones-masivas-en-mongodb-vs-sql-server.aspx#201760</link><pubDate>Sat, 19 Nov 2011 00:05:58 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201760</guid><dc:creator>Juan Irigoyen</dc:creator><description>&lt;p&gt;Un par de ideas para mejorar, la primera la utilización de las common table expresión para optimizar la sentencia insert y evitar bloqueos,&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_new" href="http://msdn.microsoft.com/es-es/library/ms175972"&gt;msdn.microsoft.com/.../ms175972&lt;/a&gt;(v=sql.90).aspx, otra podría ser la utilización de un store procedure en lugar de enviar la sentencia directamente, me gustaria saber la razón del porque llegasteis al acuerdo de no utilizar las bulk insert. ¿ se supone que en MongoDB tampoco se han realizado concesiones, o si... ?&lt;/p&gt;
&lt;p&gt;Un saludo.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201760" width="1" height="1"&gt;</description></item><item><title>HOT:Inserciones Masivas en MongoDB vs Sql Server (II)</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/17/hot-inserciones-masivas-en-mongodb-vs-sql-server.aspx#201751</link><pubDate>Fri, 18 Nov 2011 10:36:41 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201751</guid><dc:creator>O bruxo mobile</dc:creator><description>&lt;p&gt;DESCARGO DE RESPONSABILIDAD Antes de empezar la entrada me gustaría dejar claro que esto es un pasatiempos&lt;/p&gt;
&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201751" width="1" height="1"&gt;</description></item><item><title>re: Hot: Inserciones Masivas en MongoDB vs SQL Server</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/17/hot-inserciones-masivas-en-mongodb-vs-sql-server.aspx#201749</link><pubDate>Fri, 18 Nov 2011 08:29:43 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201749</guid><dc:creator>Juanma</dc:creator><description>&lt;p&gt;&amp;quot;- Una sentencia SQL (o un batch) es una tarea unica que, a no ser que involure paralelismo intra-query, esta atada a la CPU (scheduler) donde se inicio.&amp;quot;&lt;/p&gt;
&lt;p&gt;Vale, eso me aclara todo. Pensé que a lo mejor enviando 100 inserts del tirón en lugar de 1 insert con 100 values SQL hacía algo, pero tiene sentido que no lo haga. Analizar el batch para saber si hay dependencia en el orden de ejecución sería bastante complicado para SQL (y para cualquiera), sobre todo si tiene que tener en cuenta la posibilidad de triggers y otros efecto colaterales.&lt;/p&gt;
&lt;p&gt;Otra idea, si mantuvieras la inserción que realiza cada hebra en una misma transacción, ¿se ahorraría tiempo al acceder sólo una vez al transaction log? Entiendo que al hacer las inserciones de 1000 en 1000 se reduce mucho el acceso, pero no sé si todavía sigue pesando (lo siento pero no tengo mucha idea de esto y no sé interpretar bien las capturas de pantallas que hay en el post).&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201749" width="1" height="1"&gt;</description></item><item><title>re: Hot: Inserciones Masivas en MongoDB vs SQL Server</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/17/hot-inserciones-masivas-en-mongodb-vs-sql-server.aspx#201744</link><pubDate>Thu, 17 Nov 2011 21:22:31 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201744</guid><dc:creator>Pablo Alvarez</dc:creator><description>&lt;p&gt;¡Gracias a todos! Estos días voy a estar muy liado, pero ya estoy deseando sacar un rato para escribir la siguiente parte del artículo, en la que os voy a tratar de explicar un truco muy interesante :)&lt;/p&gt;
&lt;p&gt;@Juanma: ¡Genial tu pregunta! Voy a ver si me puedo explicar en poco espacio y en poco tiempo :) SQL Server es capaz de forzar el paralelismo intra-query (es decir, que una única consulta utilize mútliples procesadores) pero solo lo hace a partir de un coste, que podemos definir con la opcion de servidor &amp;#39;cost threshold for parallelism&amp;#39;.&lt;/p&gt;
&lt;p&gt;El asunto está en que ésta consulta es tan sencilla (una insert sin más) que por mucho que quiera, el coste es mínimo y, por tanto, no involucrará el paralelismo intra-query.&lt;/p&gt;
&lt;p&gt;En este caso concreto he usado paralelismo desde el servidor para aumentar la carga de trabajo. ¿Por que? Pues porque como habíamos visto en las esperas, el cuello de botella NO esta en la CPU. Cada conexión está lanzando un batch de unas mil filas, y vemos que las esperas están en el evento de tipo LOGWRITER (escritura en el log de transacciones) y en PAGELATCH_EX. &lt;/p&gt;
&lt;p&gt;Sabiendo que tengo mas &amp;#39;CPU&amp;#39; disponible, jugue a meterle mas sentencias... de este modo aumento el paralelismo por concurrencia (que no el paralelismo intra-query) y trato de aprovechar un poco mas los procesadores.&lt;/p&gt;
&lt;p&gt;A modo de resumen:&lt;/p&gt;
&lt;p&gt; - Una sentencia SQL (o un batch) es una tarea unica que, a no ser que involure paralelismo intra-query, esta atada a la CPU (scheduler) donde se inicio.&lt;/p&gt;
&lt;p&gt; - Estos batches empeizan a ejecutarse n el CPU pero cada poco salen de la CPU y se ponen a esperar por disco. Mientras, la CPU esta desocupada.&lt;/p&gt;
&lt;p&gt; - Si tengo 4 CPUs y solo 4 hilos, es posible que este en algun momento las CPUs paradas, mientras los hilos estan esperando por disco. Si tuviera mas hilos, seguramente podria maximizarse el uso de CPU.&lt;/p&gt;
&lt;p&gt; - Por este ultimo punto decidi ir aumentando las conexiones (Tareas en SQL Server) para que haya mas tareas en cada scheduler (CPU) y, por tanto, minimizar el tiempo ocioso de las CPUs.&lt;/p&gt;
&lt;p&gt;El como resolver la contencion de disco, o reducirla, será de lo que hablaremos en la próxima entrada :)&lt;/p&gt;
&lt;p&gt;Espero haberme explicado! un saludo!!&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201744" width="1" height="1"&gt;</description></item><item><title>re: Hot: Inserciones Masivas en MongoDB vs SQL Server</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/17/hot-inserciones-masivas-en-mongodb-vs-sql-server.aspx#201740</link><pubDate>Thu, 17 Nov 2011 19:57:31 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201740</guid><dc:creator>Juanma</dc:creator><description>&lt;p&gt;Muy bueno el artículo.&lt;/p&gt;
&lt;p&gt;Viendo que eres todo un experto en la materia, te planteo una duda, ¿hay alguna forma de que el paralelismo lo introduzca el sql server en lugar de hacerlo desde la aplicación cliente? &lt;/p&gt;
&lt;p&gt;Por ejemplo, no sé si enviando los inserts como un batch (en lugar de usar distintas conexiones) el sql es lo bastante listo como para aprovechar sus fibers y paralelizarlos.&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201740" width="1" height="1"&gt;</description></item><item><title>re: Hot: Inserciones Masivas en MongoDB vs SQL Server</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/17/hot-inserciones-masivas-en-mongodb-vs-sql-server.aspx#201738</link><pubDate>Thu, 17 Nov 2011 19:25:32 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201738</guid><dc:creator>El Bruno</dc:creator><description>&lt;p&gt;Genial !!! ^^&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201738" width="1" height="1"&gt;</description></item><item><title>re: Hot: Inserciones Masivas en MongoDB vs SQL Server</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/17/hot-inserciones-masivas-en-mongodb-vs-sql-server.aspx#201734</link><pubDate>Thu, 17 Nov 2011 13:02:50 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201734</guid><dc:creator>Juan Irigoyen</dc:creator><description>&lt;p&gt;Excelente!!!!, creo que muchos esperan que Unai muerda el polvo... :)&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201734" width="1" height="1"&gt;</description></item><item><title>re: Hot: Inserciones Masivas en MongoDB vs SQL Server</title><link>http://geeks.ms/blogs/palvarez/archive/2011/11/17/hot-inserciones-masivas-en-mongodb-vs-sql-server.aspx#201726</link><pubDate>Thu, 17 Nov 2011 06:49:55 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:201726</guid><dc:creator>Juan Carlos González Martín</dc:creator><description>&lt;p&gt;Joder,&lt;/p&gt;
&lt;p&gt;Buenísimo el post...ahora falta ver la réplica de Unai :P&lt;/p&gt;
&lt;p&gt;Un abrazo crack&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=201726" width="1" height="1"&gt;</description></item><item><title>men's style and fashion</title><link>http://geeks.ms/blogs/palvarez/archive/2010/10/31/forget-me-not-sql-server-crash-dump-analysis-at-sql-bits.aspx#196423</link><pubDate>Tue, 21 Jun 2011 13:06:12 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:196423</guid><dc:creator>eleniberdetle</dc:creator><description>&lt;p&gt;full figure fashion doll vinyl &lt;a rel="nofollow" target="_new" href="http://thefashionhouse.us/men-page30.html"&gt;thefashionhouse.us/men-page30.html&lt;/a&gt; g and tall man fashion 18972&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=196423" width="1" height="1"&gt;</description></item><item><title>re: Forget Me Not: Análisis de Volcados de Memoria en SQL Server</title><link>http://geeks.ms/blogs/palvarez/archive/2010/10/30/forget-me-not-an-225-lisis-de-volcados-de-memoria-en-sql-server.aspx#184252</link><pubDate>Tue, 02 Nov 2010 20:00:04 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:184252</guid><dc:creator>Pablo Carballude</dc:creator><description>&lt;p&gt;Oh dios, Tim Minchin que grande. Siempre se acaban las entradas antes de que logre hacerme con una :(&lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=184252" width="1" height="1"&gt;</description></item><item><title>re: Tell Me Where To Go: Estudio de Consultas AdHoc en SQL Server</title><link>http://geeks.ms/blogs/palvarez/archive/2010/07/27/da-consultas-adhoc.aspx#181118</link><pubDate>Thu, 26 Aug 2010 12:41:53 GMT</pubDate><guid isPermaLink="false">2a2e7ade-7474-448b-9de5-1515d8bb7d1b:181118</guid><dc:creator>pregunton cojonero</dc:creator><description>&lt;p&gt;un post de cómo generar un volcado programáticamente en c# estaría muy bien !!! &lt;/p&gt;
&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://geeks.ms/aggbug.aspx?PostID=181118" width="1" height="1"&gt;</description></item></channel></rss>
