<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Batch Import Performance with Grails and MySQL</title>
	<atom:link href="http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/</link>
	<description>Groovy, Grails and OS X tips and tricks</description>
	<lastBuildDate>Thu, 17 May 2012 00:35:22 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: gaurav</title>
		<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/comment-page-1/#comment-3520</link>
		<dc:creator>gaurav</dc:creator>
		<pubDate>Sat, 03 Mar 2012 16:19:49 +0000</pubDate>
		<guid isPermaLink="false">http://naleid.com/blog/?p=66#comment-3520</guid>
		<description>wow man..................... The most difficult thing explained in most simple way</description>
		<content:encoded><![CDATA[<p>wow man&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230; The most difficult thing explained in most simple way</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Better Grails Batch Import Performance with Redis and Jesque - Ted Naleid</title>
		<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/comment-page-1/#comment-3138</link>
		<dc:creator>Better Grails Batch Import Performance with Redis and Jesque - Ted Naleid</dc:creator>
		<pubDate>Fri, 14 Oct 2011 04:31:59 +0000</pubDate>
		<guid isPermaLink="false">http://naleid.com/blog/?p=66#comment-3138</guid>
		<description>[...] A couple of years ago, I put up a well-received blog post on tuning Batch Import Performance with Grails an MySQL. [...]</description>
		<content:encoded><![CDATA[<p>[...] A couple of years ago, I put up a well-received blog post on tuning Batch Import Performance with Grails an MySQL. [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bulk data loading into MySQL &#124; Vijay Kandy</title>
		<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/comment-page-1/#comment-3096</link>
		<dc:creator>Bulk data loading into MySQL &#124; Vijay Kandy</dc:creator>
		<pubDate>Sat, 24 Sep 2011 05:48:00 +0000</pubDate>
		<guid isPermaLink="false">http://naleid.com/blog/?p=66#comment-3096</guid>
		<description>[...] information on improving batch import performance, read Ted Naleid&#8217;s post on that topic.   September 23rd, 2011 &#124;  &#124; 2 views &#124;  Category: Groovy &#124;  Leave a [...]</description>
		<content:encoded><![CDATA[<p>[...] information on improving batch import performance, read Ted Naleid&#8217;s post on that topic.   September 23rd, 2011 |  | 2 views |  Category: Groovy |  Leave a [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jordan Howe</title>
		<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/comment-page-1/#comment-3030</link>
		<dc:creator>Jordan Howe</dc:creator>
		<pubDate>Tue, 31 May 2011 17:53:34 +0000</pubDate>
		<guid isPermaLink="false">http://naleid.com/blog/?p=66#comment-3030</guid>
		<description>Thanks for this post! I ran across it quite a while ago, and filed it away for future use. I just remembered it and used it to reduce a batch job I occasionally have to run from 2+hours to &lt; 4 minutes. This makes life easier.</description>
		<content:encoded><![CDATA[<p>Thanks for this post! I ran across it quite a while ago, and filed it away for future use. I just remembered it and used it to reduce a batch job I occasionally have to run from 2+hours to &lt; 4 minutes. This makes life easier.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Leo Sambayan</title>
		<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/comment-page-1/#comment-2981</link>
		<dc:creator>Leo Sambayan</dc:creator>
		<pubDate>Wed, 16 Mar 2011 02:44:47 +0000</pubDate>
		<guid isPermaLink="false">http://naleid.com/blog/?p=66#comment-2981</guid>
		<description>Thanks for this article. It really helped!</description>
		<content:encoded><![CDATA[<p>Thanks for this article. It really helped!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ravi</title>
		<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/comment-page-1/#comment-2980</link>
		<dc:creator>Ravi</dc:creator>
		<pubDate>Tue, 15 Mar 2011 17:46:28 +0000</pubDate>
		<guid isPermaLink="false">http://naleid.com/blog/?p=66#comment-2980</guid>
		<description>Thanks! Very comprehensive ... 
Small correction:  if ((index+1) % 100 == 0) cleanUpGorm()....to avoid unnecessary commit at 1st record</description>
		<content:encoded><![CDATA[<p>Thanks! Very comprehensive &#8230;<br />
Small correction:  if ((index+1) % 100 == 0) cleanUpGorm()&#8230;.to avoid unnecessary commit at 1st record</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Enrique Medina Montenegro</title>
		<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/comment-page-1/#comment-2885</link>
		<dc:creator>Enrique Medina Montenegro</dc:creator>
		<pubDate>Thu, 09 Dec 2010 17:03:42 +0000</pubDate>
		<guid isPermaLink="false">http://naleid.com/blog/?p=66#comment-2885</guid>
		<description>I wonder how GC gets impacted by massive creating of objects in Eden segment. Has anyone run into long GC process that blocks application for some seconds?

If so, can you please share GC configuration? Parallel? Old parallel? New concurrent mark sweep? Size for Eden and Mature segments?

Thanks.</description>
		<content:encoded><![CDATA[<p>I wonder how GC gets impacted by massive creating of objects in Eden segment. Has anyone run into long GC process that blocks application for some seconds?</p>
<p>If so, can you please share GC configuration? Parallel? Old parallel? New concurrent mark sweep? Size for Eden and Mature segments?</p>
<p>Thanks.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: berlinguyinca</title>
		<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/comment-page-1/#comment-2666</link>
		<dc:creator>berlinguyinca</dc:creator>
		<pubDate>Sat, 08 May 2010 01:18:05 +0000</pubDate>
		<guid isPermaLink="false">http://naleid.com/blog/?p=66#comment-2666</guid>
		<description>thanks,

still debugging it. It&#039;s getting better, but not perfect yet. One days I will have it perfect.</description>
		<content:encoded><![CDATA[<p>thanks,</p>
<p>still debugging it. It&#8217;s getting better, but not perfect yet. One days I will have it perfect.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jaromir D.B. Nemec</title>
		<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/comment-page-1/#comment-2663</link>
		<dc:creator>Jaromir D.B. Nemec</dc:creator>
		<pubDate>Wed, 05 May 2010 20:58:20 +0000</pubDate>
		<guid isPermaLink="false">http://naleid.com/blog/?p=66#comment-2663</guid>
		<description>Loading mass data in the database using Hibernate is something like transporting people on the highway using motorcycles (one record a time). Of course it is possible to scale between a low class bike and a Fat Boy, but this doesn’t mean this is the right way. The argument about validation of te data with the domain class is valid, but this is neither argument for Grails nor for Hibernate. It should be possible to reuse the validation closure from an external loading process as well. 
But anyway this is a great tuning result that many will find useful.</description>
		<content:encoded><![CDATA[<p>Loading mass data in the database using Hibernate is something like transporting people on the highway using motorcycles (one record a time). Of course it is possible to scale between a low class bike and a Fat Boy, but this doesn’t mean this is the right way. The argument about validation of te data with the domain class is valid, but this is neither argument for Grails nor for Hibernate. It should be possible to reuse the validation closure from an external loading process as well.<br />
But anyway this is a great tuning result that many will find useful.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tednaleid</title>
		<link>http://naleid.com/blog/2009/10/01/batch-import-performance-with-grails-and-mysql/comment-page-1/#comment-2598</link>
		<dc:creator>tednaleid</dc:creator>
		<pubDate>Thu, 18 Mar 2010 00:13:14 +0000</pubDate>
		<guid isPermaLink="false">http://naleid.com/blog/?p=66#comment-2598</guid>
		<description>@berlinguyinca I could be wrong, but I think you need to take a look at the queries that are getting generated by your code.  See how many times for each insert each query is getting called.  There might be situations where you could use an executeQuery rather than pulling back and hydrating entire database objects.  

You&#039;ll want to beware of the &lt;a href=&quot;http://www.pbell.com/index.cfm/2006/9/17/Understanding-the-n1-query-problem&quot; rel=&quot;nofollow&quot;&gt;n + 1 problem&lt;/a&gt; too, and might be better off doing eager loads of objects rather than lazy loads.  It&#039;s hard to get into much more detail without actually seeing code.

If you&#039;re doing hundreds of queries for every insert (even if they&#039;re all really quick to start), that&#039;s going to bog down over time.  Looking at (and minimizing) the number of queries might be your best bet.

I&#039;d also look at connecting jconsole to see if memory is going up and then not being released too.  That could point to a memory leak on the grails side.

Good luck.</description>
		<content:encoded><![CDATA[<p>@berlinguyinca I could be wrong, but I think you need to take a look at the queries that are getting generated by your code.  See how many times for each insert each query is getting called.  There might be situations where you could use an executeQuery rather than pulling back and hydrating entire database objects.  </p>
<p>You&#8217;ll want to beware of the <a href="http://www.pbell.com/index.cfm/2006/9/17/Understanding-the-n1-query-problem" rel="nofollow" onclick="pageTracker._trackPageview('/outgoing/www.pbell.com/index.cfm/2006/9/17/Understanding-the-n1-query-problem?referer=');">n + 1 problem</a> too, and might be better off doing eager loads of objects rather than lazy loads.  It&#8217;s hard to get into much more detail without actually seeing code.</p>
<p>If you&#8217;re doing hundreds of queries for every insert (even if they&#8217;re all really quick to start), that&#8217;s going to bog down over time.  Looking at (and minimizing) the number of queries might be your best bet.</p>
<p>I&#8217;d also look at connecting jconsole to see if memory is going up and then not being released too.  That could point to a memory leak on the grails side.</p>
<p>Good luck.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

