<?xml version="1.0" encoding="iso-8859-1" ?>
<rss version="2.0"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:content="http://purl.org/rss/1.0/modules/content/">

<channel>
  <title>Planet MySQL</title>
  <link>http://www.planetmysql.org/</link>
  <pubDate>Fri, 16 May 2008 05:38:02 +0000</pubDate>
  <language>en</language>
  <description>Planet MySQL - http://www.planetmysql.org/</description>

  <item>
    <title>MySQL ALTER table Progress Bar?</title>
    <guid isPermaLink="false">http://www.rustyrazorblade.com/?p=128</guid>
    <link>http://www.rustyrazorblade.com/2008/05/15/mysql-alter-table-progress-bar/</link>
    <description>Altering a big table sucks, and to make it worse you have no idea what&amp;#8217;s happening or how long it will take.  I&amp;#8217;d like a progress bar, or some status output, or something that gives me the feeling like my server didn&amp;#8217;t die.</description>
    <content:encoded><![CDATA[<p>Altering a big table sucks, and to make it worse you have no idea what&#8217;s happening or how long it will take.  I&#8217;d like a progress bar, or some status output, or something that gives me the feeling like my server didn&#8217;t die.</p>]]></content:encoded>
    <pubDate>Fri, 16 May 2008 04:48:09 +0000</pubDate>
    <comments>http://www.rustyrazorblade.com/2008/05/15/mysql-alter-table-progress-bar/#comments</comments>
    <dc:creator>Jonathan Haddad</dc:creator>
    <category>mysql</category>
  </item>

  <item>
    <title>Speaking at the Italian Free Software Conference</title>
    <guid isPermaLink="false">http://blogs.sun.com/datacharmer/entry/speaking_at_the_italian_free</guid>
    <link>http://blogs.sun.com/datacharmer/entry/speaking_at_the_italian_free</link>
    <description>I am speaking at the Italian Free Software Conference, an event with the aim of considering the state of the art of Free Software in Italy.

The conference is held in Trento, Italy, sponsored by public institutions, the local university, and private industries.
My session is about MySQL as open database, which is a philosophical walkthrough of how MySQL has become successful, why Sun has bought it, what is in store for the future.</description>
    <content:encoded><![CDATA[<p>I am speaking at the <a href="http://www.confsl.org/index.php?option=com_content&task=view&id=59&Itemid=83">Italian Free Software Conference</a>, an event with the aim of considering the state of the art of Free Software in Italy.<br/>
<img src="http://blogs.sun.com/datacharmer/resource/confsl.png" border="0"><br/>
The conference is held in <a href="http://it.wikipedia.org/wiki/Trento">Trento</a>, Italy, sponsored by public institutions, the local university, and private industries.<br/>
My session is about MySQL as open database, which is a philosophical walkthrough of how MySQL has become successful, why Sun has bought it, what is in store for the future.</p>]]></content:encoded>
    <pubDate>Fri, 16 May 2008 04:05:07 +0000</pubDate>
    <dc:creator>Giuseppe Maxia</dc:creator>
  </item>

  <item>
    <title>Combining Sun and MySQL: Greater or Less Than the Sum of Its Parts?</title>
    <guid isPermaLink="false">http://mediaproducts.gartner.com/reprints/sunmicrosystems/article2/article2.html</guid>
    <link>http://mediaproducts.gartner.com/reprints/sunmicrosystems/article2/article2.html</link>
    <description></description>
    <pubDate>Fri, 16 May 2008 00:59:59 +0000</pubDate>
    <dc:creator>MySQL</dc:creator>
  </item>

  <item>
    <title>The tech industry's top obsessions</title>
    <guid isPermaLink="false">http://blogs.cnet.com/8301-13505_1-9945624-16.html?part=rss&amp;tag=feed&amp;subj=TheOpenRoad</guid>
    <link>http://blogs.cnet.com/8301-13505_1-9945624-16.html?part=rss&amp;tag=feed&amp;subj=TheOpenRoad</link>
    <description>Readers of this blog care deeply, madly, passionately about open source.  But if this blog's traffic data is any indication, readers of this blog care even more about Apple, Google, and Microsoft.  In fact, most of the planet, as measured by Google Trends, cares more about what Apple is doing on a given day than what business model MySQL has adopted:

Search volume for Open Source, Google, Microsoft, and Apple(Credit: Google Trends)

On this blog, MySQL and Ubuntu make an appearance in the top-25 most read stories, but Microsoft, Apple, and Google dominate the most-read stories, despite constituting a relatively small number of my total posts.

I note this data only to remind everyone, myself included, to take ourselves a little less seriously.  It's not that open source isn't critically important, because it is: It is the heart of computing going forward.  But our petty controversies are just that: Petty.  The stakes are pretty small, given that open source is being woven into the fabric of software's future, even within these giant software vendors, regardless of our squabbles.
...</description>
    <content:encoded><![CDATA[<p>Readers of this blog <a title="The community is angry! -- Wednesday, May 14, 2008" href="http://www.cnet.com/8301-13505_1-9944498-16.html" >care deeply, madly, passionately about open source</a>.  But if this blog's traffic data is any indication, readers of this blog care even more about Apple, Google, and Microsoft.  In fact, most of the planet, as measured by Google Trends, cares more about what Apple is doing on a given day than what business model MySQL has adopted:</p>

<div class="cnet-image-div float-none" style="width: 540px;" ><img class="cnet-image" src="http://i.i.com.com/cnwk.1d/i/bto/20080515/Picture_2_540x269.jpg" alt="" width="540" height="269" /><p class="image-caption">Search volume for Open Source, Google, Microsoft, and Apple</p><span class="image-credit">(Credit: <a href="http://google.com/trends?q=open+source%2CApple%2CGoogle%2CMicrosoft" >Google Trends</a>)</span></div>

<p>On this blog, MySQL and Ubuntu make an appearance in the top-25 most read stories, but Microsoft, Apple, and Google dominate the most-read stories, despite constituting a relatively small number of my total posts.</p>

<p>I note this data only to remind everyone, myself included, to take ourselves a little less seriously.  It's not that open source isn't critically important, because it is: It is the heart of computing going forward.  But our petty controversies are just that: Petty.  The stakes are pretty small, given that open source is being woven into the fabric of software's future, even within these giant software vendors, regardless of our squabbles.</p>
...]]></content:encoded>
    <pubDate>Thu, 15 May 2008 23:48:00 +0000</pubDate>
    <dc:creator>Matt Asay</dc:creator>
  </item>

  <item>
    <title>Telnet/SSH'able Power Supplies</title>
    <guid isPermaLink="false">http://krow.livejournal.com/596271.html</guid>
    <link>http://krow.livejournal.com/596271.html</link>
    <description>Dear LazyWeb,Today is &quot;green&quot; day, and for &quot;green&quot; day I want to turn on and off some computers by remote. This means I want to be able to telnet/ssh into a power supply to bring them up and down.Cheap, I want cheap. Web interface is &quot;ok&quot; assuming it works with links (aka text based browser).No cards... something I plugin. I want a very simple setup.I've got test servers I rarely use and I want them off most of the time (aka... MySQL, Memcached, Asterisk, Gearman, Drizzle... all the rest).Thanks!    -Brian</description>
    <content:encoded><![CDATA[Dear LazyWeb,<br /><br />Today is "green" day, and for "green" day I want to turn on and off some computers by remote. This means I want to be able to telnet/ssh into a power supply to bring them up and down.<br /><br />Cheap, I want cheap. Web interface is "ok" assuming it works with links (aka text based browser).<br /><br />No cards... something I plugin. I want a very simple setup.<br /><br />I've got test servers I rarely use and I want them off most of the time (aka... MySQL, Memcached, Asterisk, Gearman, Drizzle... all the rest).<br /><br />Thanks!<br />    -Brian]]></content:encoded>
    <pubDate>Thu, 15 May 2008 20:17:39 +0000</pubDate>
    <comments>http://krow.livejournal.com/596271.html</comments>
    <dc:creator>Brian Aker</dc:creator>
  </item>

  <item>
    <title>Winning with the family</title>
    <guid isPermaLink="false">http://weblog.infoworld.com/openresource/archives/2008/05/winning_with_th.html</guid>
    <link>http://weblog.infoworld.com/openresource/archives/2008/05/winning_with_th.html?source=rss</link>
    <description>Last week I learned that Sun has put its 3 database groups (Java DB, MySQL, PostgreSQL) under Marten Mickos. First off, who knew Sun had such a broad database portfolio???? Second, smart move putting them all under Marten. In speaking with Marten's Java DB team I gave them a small nugget of advice that has served us incredibly well with WebSphere Application Server Community Edition (WAS CE). Simply put win with the strengths of the family, not individual products. I've written about customers wanting choice and flexibility and the challenges of trying to position any product, OSS or not, as...  READ MORE </description>
    <content:encoded><![CDATA[Last week I learned that Sun has put its 3 database groups (Java DB, MySQL, PostgreSQL) under Marten Mickos. First off, who knew Sun had such a broad database portfolio???? Second, smart move putting them all under Marten. In speaking with Marten's Java DB team I gave them a small nugget of advice that has served us incredibly well with WebSphere Application Server Community Edition (WAS CE). Simply put win with the strengths of the family, not individual products. I've written about customers wanting choice and flexibility and the challenges of trying to position any product, OSS or not, as... <a href="http://weblog.infoworld.com/openresource/archives/2008/05/winning_with_th.html?source=rss"> READ MORE</a> </p>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 18:24:16 +0000</pubDate>
    <dc:creator>InfoWorld</dc:creator>
  </item>

  <item>
    <title>Take an Open Source Database Survey</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-7697637878864226177.post-1900563720081953929</guid>
    <link>http://feeds.feedburner.com/~r/MysqlDatabaseNews/~3/291326090/take-open-source-database-survey.html</link>
    <description>LewisC's An Expert's Guide To Oracle TechnologyDo you know which open source feature is the most important? Do you know which open source database rocks and which one sucks? Is MySQL better than Postgres? Is Ingres worth considering? How does Firebird compare? Have you used, or have you considered using, an open source database?Take a survey. It's only 15 questions so it takes just a few minutes.I'll post a link where you can get the results once they have been compiled and prepared.BTW, this isn't my survey. I'm just passing on the link.LewisC</description>
    <content:encoded><![CDATA[<p>LewisC's <a href="http://blogs.ittoolbox.com/oracle/guide">An Expert's Guide To Oracle Technology</a></p><br /><p>Do you know which open source feature is the most important? Do you know which open source database rocks and which one sucks? Is MySQL better than Postgres? Is Ingres worth considering? How does Firebird compare? Have you used, or have you considered using, an open source database?</p><br /><p><a href="http://www.surveymonkey.com/s.aspx?sm=W_2b8Dx7c8yCs6pZB1jgvQZg_3d_3d">Take a survey</a>. It's only 15 questions so it takes just a few minutes.</p><br /><p>I'll post a link where you can get the results once they have been compiled and prepared.</p><br /><p>BTW, this isn't my survey. I'm just passing on the link.</p><br /><p>LewisC</p><img src="http://feeds.feedburner.com/~r/MysqlDatabaseNews/~4/291326090" height="1" width="1"/>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 18:22:00 +0000</pubDate>
    <dc:creator>Lewis Cunningham</dc:creator>
  </item>

  <item>
    <title>What's in a name?</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-16959946.post-115919314749700835</guid>
    <link>http://datacharmer.blogspot.com/2006/09/whats-in-name.html</link>
    <description>What's in a name? That which we call a rose by any other name would smell as sweet.Good old William had his reasons to say so, but then either he was not concerned about misspellings or he didn't care. (A recent book about the Bard actually points out that all Shakespeare's known signatures are differently spelled, and none of them is spelled Shakespeare!)The problem with my name is that, for the majority of non-Italians, it does not sound familiar, and consequently it gets misspelled. As a frequent traveler, I have seen every sort of mischief done to my first name.I don't really understand why, but most English speakers write &quot;GUIseppe&quot; instead of &quot;GIUseppe.&quot; Sometimes I was called &quot;Giuseppa&quot; (which is a female name) or &quot;Giuseppi&quot; (which is a non existing plural of my name), or &quot;Jooseppai&quot; (which is how I pronounce it) and several variations with additional or missing vowels.Let me set the record straight, for anybody who cares.The right spelling is &quot;G-I-U-SEPPE&quot;.  To remember the right order, you may use what I call the selfish rule: First I, then U. Got it? :)Now, let me use this fact to compare the behavior of two companies. When I was hired by MySQL, I braced myself in wait of the misspelling, which did not come! All my official documents, personnel listings, email accounts, company badge, were produced without any mistake. I was impressed. Apparently, MySQL HR people are very attentive to these details. When I was hired by Sun, instead, well, let me say that it was not the same quality. MySQL was an international company, while Sun seems more an US company with international branches. They are learning, though. I wrote the draft for this post long ago, but I left it aside. Now, since it seems that I am not the only one with this problem, I state my point.</description>
    <content:encoded><![CDATA[<blockquote><i>What's in a name? That which we call a rose by any other name would smell as sweet.</i></blockquote><br />Good old William had his reasons to say so, but then either he was not concerned about misspellings or he didn't care. (A recent <a href="http://www.amazon.co.uk/Shakespeare-World-Stage-Eminent-Lives/dp/0007197896">book</a> about the Bard actually points out that all Shakespeare's known signatures are differently spelled, and none of them is spelled <i>Shakespeare</i>!)<br />The problem with my name is that, for the majority of non-Italians, it does not sound familiar, and consequently it gets misspelled. As a frequent traveler, I have seen every sort of mischief done to my first name.<br />I don't really understand why, but most English speakers write "G<b>UI</b>seppe" instead of "G<b>IU</b>seppe." Sometimes I was called "Giuseppa" (which is a female name) or "Giuseppi" (which is a non existing plural of my name), or "Jooseppai" (which is how I pronounce it) and several variations with additional or missing vowels.<br />Let me set the record straight, for anybody who cares.<br />The right spelling is "<span style="font-size:180%;">G-I-U-SEPPE</span>".  To remember the right order, you may use what I call the <b>selfish rule</b>: <i>First I, then U</i>. Got it? :)<br /><br />Now, let me use this fact to compare the behavior of two companies. When I was hired by MySQL, I braced myself in wait of the misspelling, which did not come! All my official documents, personnel listings, email accounts, company badge, were produced without any mistake. I was impressed. Apparently, MySQL HR people are very attentive to these details. When I was hired by Sun, instead, well, let me say that it was not the same quality. MySQL was an international company, while Sun seems more an US company with international branches. They are learning, though. <br /><br /><small>I wrote the draft for this post long ago, but I left it aside. Now, since it seems that I am not the only one with <a href="http://www.flamingspork.com/blog/2008/05/14/my-name-is/">this problem</a>, I state my point.</small>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 17:44:00 +0000</pubDate>
    <dc:creator>Giuseppe Maxia</dc:creator>
  </item>

  <item>
    <title>Monolith 1.3 soon to be released</title>
    <guid isPermaLink="false">http://themattreid.com/wordpress/?p=53</guid>
    <link>http://themattreid.com/wordpress/?p=53</link>
    <description>New features for the next release. As follows:

Status page now reports daily error code summarizations, connection failures to hosts
Talkback report page now reports on myback_talkback script version number
Talkback report page now tracks the my.cnf file during the backup process, and the cnf file contents for each host are stored as LONGTEXT in the monitor database
Multi-tier access levels, admins (rw) and general users (ro)
View tables for the status page summarizations speed up reporting
Daily summary email - similar to the status page, instead of singular emails for each backup success/fail notification

Look for 1.3 being released very soon! You&amp;#8217;ll be able to find it here: http://sourceforge.net/projects/monolith-mysql</description>
    <content:encoded><![CDATA[<p>New features for the next release. As follows:</p>
<ol>
<li>Status page now reports daily error code summarizations, connection failures to hosts</li>
<li>Talkback report page now reports on myback_talkback script version number</li>
<li>Talkback report page now tracks the my.cnf file during the backup process, and the cnf file contents for each host are stored as LONGTEXT in the monitor database</li>
<li>Multi-tier access levels, admins (rw) and general users (ro)</li>
<li>View tables for the status page summarizations speed up reporting</li>
<li>Daily summary email - similar to the status page, instead of singular emails for each backup success/fail notification</li>
</ol>
<p>Look for 1.3 being released very soon! You&#8217;ll be able to find it here: <a href="http://sourceforge.net/projects/monolith-mysql" target="_blank">http://sourceforge.net/projects/monolith-mysql</a></p>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 16:04:30 +0000</pubDate>
    <comments>http://themattreid.com/wordpress/?p=53#comments</comments>
    <dc:creator>Matt Reid</dc:creator>
    <category>Monolith</category>
  </item>

  <item>
    <title>Talkin' with Charlie and Tom, the JRuby Guys</title>
    <guid isPermaLink="false">http://blogs.sun.com/barton808/entry/talkin_with_charlie_and_tom</guid>
    <link>http://blogs.sun.com/barton808/entry/talkin_with_charlie_and_tom</link>
    <description>Last week, at the end of JavaOne day one, I was able to grab the JRuby dynamic duo for a podcast.&amp;nbsp; Tom Enebo and Charlie Nutter turned out to be really nice guys, must be their midwestern roots, and were a pleasure to talk to (I also learned a lot :).&amp;nbsp;My interview with Tom and Charlie (14:19)&amp;nbsp; Listen (Mp3)&amp;nbsp;&amp;nbsp; Listen (ogg)Charlie Nutter and Tom Enebo -- the JRuby dyanmic duo (and wearing the shirts to prove it).Some of the topics we tackle:A historical background, Ruby, then Rails, then JRuby.What the guys were doing pre-Sun and how Tim Bray lured them to the fiery orb.Three licenses is better than one (GPL, CPL, LGPL)How JRuby is working with GlassFish and NetBeans.The DaVinci machine project, jMaki and what ever happened to AJAX?Might we see a JPerl?Looking to get more involved with MySQLPau for now...&amp;nbsp;</description>
    <content:encoded><![CDATA[<p>Last week, at the end of <a href="http://java.sun.com/javaone/sf/">JavaOne</a> day one, I was able to grab the <a href="http://jruby.codehaus.org/">JRuby</a> dynamic duo for a podcast.&nbsp; Tom Enebo and Charlie Nutter turned out to be really nice guys, must be their midwestern roots, and were a pleasure to talk to (I also learned a lot :).&nbsp;</p><p><b>My interview with Tom and Charlie</b> (14:19)&nbsp; <a href="http://mediacast.sun.com/users/Barton808/media/J1_JRubyGuys_5pm_050608_LVL_MUSIC.mp3">Listen (</a><a href="http://mediacast.sun.com/users/Barton808/media/J1_JRubyGuys_5pm_050608_LVL_MUSIC.mp3">Mp3)</a>&nbsp;&nbsp; <a href="http://mediacast.sun.com/users/Barton808/media/J1_JRubyGuys_5pm_050608_LVL_MUSIC.ogg">Listen (ogg)</a></p><p><img vspace="0" hspace="0" border="0" align="bottom" src="http://blogs.sun.com/barton808/resource/J108_JRubyDudes.jpg" /><br /><i>Charlie Nutter and Tom Enebo -- the JRuby dyanmic duo (and wearing the shirts to prove it).<br /></i></p><p><b>Some of the topics we tackle:</b></p><ul><li>A historical background, <a href="http://www.ruby-lang.org/en/">Ruby</a>, then <a href="http://www.rubyonrails.org/">Rails</a>, then JRuby.</li><li>What the guys were doing pre-Sun and how <a href="http://www.tbray.org/ongoing/">Tim Bray</a> lured them to the fiery orb.</li><li>Three licenses is better than one (GPL, CPL, LGPL)<br /></li><li>How JRuby is working with GlassFish and NetBeans.</li><li>The <a href="http://openjdk.java.net/projects/mlvm/">DaVinci machine project</a>,<a href="http://jmaki.com/"> jMaki</a> and what ever happened to AJAX?<br /></li><li>Might we see a JPerl?</li><li>Looking to get more involved with <a href="http://www.mysql.com/">MySQL</a></li></ul>Pau for now...<br /><p>&nbsp;</p>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 16:00:00 +0000</pubDate>
    <dc:creator>Barton George</dc:creator>
    <category>Podcasts</category>
    <category>charlienutter</category>
    <category>glassfish</category>
    <category>java</category>
    <category>javaone2008</category>
    <category>jruby</category>
    <category>mysql</category>
    <category>netbeans</category>
    <category>opensource</category>
    <category>tomenebo</category>
  </item>

  <item>
    <title>Trouble in paradise?</title>
    <guid isPermaLink="false">http://blogs.the451group.com/opensource/?p=795</guid>
    <link>http://feeds.the451group.com/~r/451opensource/~3/290981612/</link>
    <description>Maybe it&amp;#8217;s a coincidence but this week has seen evidence of tension between commercial open source vendors and elements of the open source user community. Matt Asay stirred up something of a hornet&amp;#8217;s nest with his post questioning how open source vendors can find ways of encouraging users to contribute either code of cash in return for free software.
The question itself might be innocuous but Matt&amp;#8217;s use of the term &amp;#8220;free-riders&amp;#8221; prompted a couple of angry responses. Storm in a tea-cup stuff really. 
Meanwhile, in a unrelated post, Savio Rodrigues was wondering &amp;#8220;is the community hurting the OSS business model?&amp;#8221; The answer to that might well be &amp;#8220;it depends which OSS business model you&amp;#8217;re talking about&amp;#8221; but nevertheless Savio&amp;#8217;s point is that community reaction to MySQL&amp;#8217;s commercial plans may have undermined not MySQL&amp;#8217;s business model and development plans.
&amp;#8220;This will help proprietary vendors maintain the feature/function gap vs. OSS vendors. Recall that for the majority of single-vendor backed OSS products, there is virtually no cost savings vs. developing closed-source software. To close the feature/function gap, OSS vendors need faster revenue growth to fund this development expense,&amp;#8221; he writes.
&amp;#8220;The OSS vendor community needs leaders who will stand up to &amp;#8216;the community&amp;#8217; and make the tough business decisions needed to ensure that OSS isn?t relegated to a small revenue slice of the software industry pie.&amp;#8221;
In the light of the reaction to his post, Matt Asay responds to this suggestion: &amp;#8220;Most days I&amp;#8217;d find this simply wrong, but reading the responses to a harmless suggestion that people should contribute more to open-source projects&amp;#8230;it makes you wonder.&amp;#8221;
I have previously observed a growing animosity of some sectors of the open source software user community towards commercial software vendors and activities. Where once the commercial success of an open source vendor was to be celebrated, increasingly it seems it is treated by some as a reason for caution and doubt. 
I may be wrong, but there appears to me to be a strengthening commitment in some quarters to the ideals of the Free Software Foundation in rejection of the commercial opportunities provided by the Open Source Initiative.
What do people think? Coincidence, or are strange things afoot at the Circle K?
</description>
    <content:encoded><![CDATA[<p>Maybe it&#8217;s a coincidence but this week has seen evidence of tension between commercial open source vendors and elements of the open source user community. Matt Asay stirred up something of a hornet&#8217;s nest with <a href="http://www.cnet.com/8301-13505_1-9943809-16.html" onclick="javascript:urchinTracker ('/outbound/article/www.cnet.com');">his post</a> questioning how open source vendors can find ways of encouraging users to contribute either code of cash in return for free software.</p>
<p>The question itself might be innocuous but Matt&#8217;s use of the term &#8220;free-riders&#8221; prompted <a href="http://blogs.opennms.org/?p=202" onclick="javascript:urchinTracker ('/outbound/article/blogs.opennms.org');">a</a> <a href="http://blogs.zdnet.com/open-source/?p=2427" onclick="javascript:urchinTracker ('/outbound/article/blogs.zdnet.com');">couple</a> <a href="http://www.raccoonfink.com/2008/05/sometimes-i-cant-help-myself-rant.html" onclick="javascript:urchinTracker ('/outbound/article/www.raccoonfink.com');">of</a> angry responses. Storm in a tea-cup stuff really. </p>
<p>Meanwhile, in a unrelated <a href="http://saviorodrigues.wordpress.com/2008/05/14/is-the-community-hurting-the-oss-business-model/" onclick="javascript:urchinTracker ('/outbound/article/saviorodrigues.wordpress.com');">post</a>, Savio Rodrigues was wondering &#8220;is the community hurting the OSS business model?&#8221; The answer to that might well be &#8220;it depends <a href="http://www.talend.com/blog/2008/05/12/open-source-business-models/" onclick="javascript:urchinTracker ('/outbound/article/www.talend.com');">which OSS business model</a> you&#8217;re talking about&#8221; but nevertheless Savio&#8217;s point is that community reaction to MySQL&#8217;s commercial plans may have undermined not MySQL&#8217;s business model and development plans.</p>
<p>&#8220;This will help proprietary vendors maintain the feature/function gap vs. OSS vendors. Recall that for the majority of single-vendor backed OSS products, there is virtually no cost savings vs. developing closed-source software. To close the feature/function gap, OSS vendors need faster revenue growth to fund this development expense,&#8221; he writes.</p>
<p>&#8220;The OSS vendor community needs leaders who will stand up to &#8216;the community&#8217; and make the tough business decisions needed to ensure that OSS isn?t relegated to a small revenue slice of the software industry pie.&#8221;</p>
<p>In the light of the reaction to his post, Matt Asay <a href="http://www.cnet.com/8301-13505_1-9944498-16.html" onclick="javascript:urchinTracker ('/outbound/article/www.cnet.com');">responds</a> to this suggestion: &#8220;Most days I&#8217;d find this simply wrong, but reading the responses to a harmless suggestion that people should contribute more to open-source projects&#8230;it makes you wonder.&#8221;</p>
<p>I have <a href="http://blogs.the451group.com/opensource/2008/03/19/bruce-perens-draws-his-line-in-the-sand/" >previously</a> <a href="http://blogs.the451group.com/opensource/2008/03/12/is-foss-heading-for-an-identity-crisis/" >observed </a>a growing animosity of some sectors of the open source software user community towards commercial software vendors and activities. Where once the commercial success of an open source vendor was to be celebrated, increasingly it seems it is treated by some as a reason for caution and doubt. </p>
<p>I may be wrong, but there appears to me to be a strengthening commitment in some quarters to the ideals of the <a href="http://www.fsf.org/" onclick="javascript:urchinTracker ('/outbound/article/www.fsf.org');">Free Software Foundation</a> in rejection of the commercial opportunities provided by the <a href="http://www.opensource.org/" onclick="javascript:urchinTracker ('/outbound/article/www.opensource.org');">Open Source Initiative</a>.</p>
<p>What do people think? Coincidence, or are strange things afoot at the Circle K?</p>
<img src="http://feeds.the451group.com/~r/451opensource/~4/290981612" height="1" width="1"/>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 14:46:21 +0000</pubDate>
    <comments>http://blogs.the451group.com/opensource/2008/05/15/trouble-in-paradise/#comments</comments>
    <dc:creator>The 451 Group</dc:creator>
    <category>Software</category>
    <category>451 group</category>
    <category>451caostheory</category>
    <category>451group</category>
    <category>caostheory</category>
    <category>commercial</category>
    <category>community</category>
    <category>free-riders</category>
    <category>Linux</category>
    <category>matt asay</category>
    <category>matt aslett</category>
    <category>mattaslett</category>
    <category>matthew aslett</category>
    <category>matthewaslett</category>
    <category>open-source</category>
    <category>opensource</category>
    <category>savio rodrigues</category>
    <category>The 451 Group</category>
    <category>the451group</category>
  </item>

  <item>
    <title>Memcached, but do you need it?</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-5852997211129961388.post-1812792816511964889</guid>
    <link>http://optimmysql.blogspot.com/2008/05/memcached-but-do-you-need-it.html</link>
    <description>With all due respect to the technology and it's advocates (myself included), after a surge in articles describing the merits of using memcached I'm just pushing a thought breakpoint for developers to think whether they actually need it or not?  Recently, I ran into cases where the developers have decided to use memcached over MySQL style architecture after reading some/many good/nice articles about it without giving a damn to their requirements. I would like to list few things as a checklist for developers to decide on their architecture. There is still no precise answer but sometimes few cases can be just ruled out :).     What is the total size of your data? It might be a possibility that you can keep the data in memory in each node, or MySQL can just keep the whole thing (data+indexes) in a buffer.     How frequently your data is updated? Very frequent updates may lead to low cache hit ratio for memcached data. And refreshing memcached too many times may lead to unnecessary overhead. Remember doing [get,get,set] vs [get].     What is the peak load on your system? Consider if MySQL itself can handle the peak load or otherwise if even memcached cannot handle the peak load with given infrastructure.    I generally ask people a simple question, Why they think they should be using memcached (or something else even)? To shock them, I even ask them &amp;quot;Why they think they should be using MySQL?&amp;quot;. And believe me, this is what I believe developers should be asking themselves.  There is only one good argument against this, what if tomorrow you need to suddenly scale or what if your projections need memcached? In such cases, I suggest people to design their data layers in a flexible way, flexible enough to allow things in and out.</description>
    <content:encoded><![CDATA[<p>With all due respect to the technology and it's advocates (myself included), after a surge in articles describing the merits of using memcached I'm just pushing a thought breakpoint for developers to think whether they actually need it or not?</p>  <p>Recently, I ran into cases where the developers have decided to use memcached over MySQL style architecture after reading some/many good/nice articles about it without giving a damn to their requirements. I would like to list few things as a checklist for developers to decide on their architecture. There is still no precise answer but sometimes few cases can be just ruled out :).</p>  <ol>   <li>What is the total size of your data? <em>It might be a possibility that you can keep the data in memory in each node, or MySQL can just keep the whole thing (data+indexes) in a buffer.</em> </li>    <li>How frequently your data is updated? <em>Very frequent updates may lead to low cache hit ratio for memcached data. And refreshing memcached too many times may lead to unnecessary overhead. Remember doing [get,get,set] vs [get].</em> </li>    <li>What is the peak load on your system? <em>Consider if MySQL itself can handle the peak load or otherwise if even memcached cannot handle the peak load with given infrastructure.</em> </li> </ol>  <p>I generally ask people a simple question, Why they think they should be using memcached (or something else even)? To shock them, I even ask them &quot;Why they think they should be using MySQL?&quot;. And believe me, this is what I believe developers should be asking themselves.</p>  <p>There is only one good argument against this, what if tomorrow you need to suddenly scale or what if your projections need memcached? In such cases, I suggest people to design their data layers in a flexible way, flexible enough to allow things in and out.</p>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 13:12:00 +0000</pubDate>
    <dc:creator>Parvesh Garg</dc:creator>
  </item>

  <item>
    <title>Tungsten Scale-Out Stack Presentation from MySQL Conference</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-768233104244702633.post-3263236123883776547</guid>
    <link>http://scale-out-blog.blogspot.com/2008/05/tungsten-scale-out-stack-presentation.html</link>
    <description>There have been a number of requests for copies of the slides to the Tungsten Scale-Out Stack talk I gave at the MySQL Conference in April.   Here they are courtesy of the nice folks at O'Reilly who organized the conference.Tungsten is our codename for a set of technologies to raise database performance and availability using scale-out.   In the database world scale-out is a term of art that means spreading data across servers on multiple systems. With data in multiple places you are less subject to failures--when one copy crashes you just use the others.  Similarly, if your application runs a lot of queries, you can spread them over different machines, which makes for faster and more stable response times.So database scale-out sounds great (and is too), but getting it to work properly is harder than you would think.  Along with practical issues like management, there are theoretical barriers.  Let's say you are creating a product catalog service using database replicas on different hosts.  Applications connect to any replica to get information.  Your manager, a guy with pointed hair, tells you to make sure of the following:1. The catalog service is always available. 2. The service keeps working even if you get a network partition between hosts. 3. The copies are always consistent (e.g., you can go to any copy and get the same data).Here's an ugly surprise.  It turns out your data service can only have two of the three properties at any given time, a result that was proven only recently and is now called the CAP Principle.   If you want to be available and handle network partitions, you must accept that data will sometimes be inconsistent.  Your manager is going to be very disappointed.That's where we get back to Tungsten and the Scale-Out Stack.  We realized a while back that you can't think in terms of a single product or even family of products to solve scale-out in a general way.    It's better to design a flexible set of technologies with different strengths and weaknesses that users choose based on what's important to them.  If you need to cluster over a WAN, use master/slave replication.  If you don't want master failures, use synchronous replication in middleware.Read the slides to learn more about the thinking.   Database scale-out is a fascinating problem and we are looking forward to making it much easier to handle.  Please stay tuned!  I'll be writing more about this in the weeks and months to come.</description>
    <content:encoded><![CDATA[There have been a number of requests for copies of the slides to the Tungsten Scale-Out Stack talk I gave at the <a href="http://en.oreilly.com/mysql2008/public/content/home">MySQL Conference</a> in April.   <a href="http://assets.en.oreilly.com/1/event/2/Continuent%20Tungsten_%20Proxies%20on%20Steroids%20for%20HA%20and%20Performance%21%20Presentation.pdf">Here they are</a> courtesy of the nice folks at O'Reilly who organized the conference.<br /><br />Tungsten is our codename for a set of technologies to raise database performance and availability using scale-out.   In the database world scale-out is a term of art that means spreading data across servers on multiple systems. With data in multiple places you are less subject to failures--when one copy crashes you just use the others.  Similarly, if your application runs a lot of queries, you can spread them over different machines, which makes for faster and more stable response times.<br /><br />So database scale-out sounds great (and is too), but getting it to work properly is harder than you would think.  Along with practical issues like management, there are theoretical barriers.  Let's say you are creating a product catalog service using database replicas on different hosts.  Applications connect to any replica to get information.  Your manager, a guy with pointed hair, tells you to make sure of the following:<br /><br />1. The catalog service is always available. <br />2. The service keeps working even if you get a network partition between hosts. <br />3. The copies are always consistent (e.g., you can go to any copy and get the same data).<br /><br />Here's an ugly surprise.  It turns out your data service can only have two of the three properties at any given time, a result that was <a href="http://citeseer.ist.psu.edu/544596.html">proven</a> only recently and is now called the CAP Principle.   If you want to be available and handle network partitions, you must accept that data will sometimes be inconsistent.  Your manager is going to be very disappointed.<br /><br />That's where we get back to Tungsten and the Scale-Out Stack.  We realized a while back that you can't think in terms of a single product or even family of products to solve scale-out in a general way.    It's better to design a flexible set of technologies with different strengths and weaknesses that users choose based on what's important to them.  If you need to cluster over a WAN, use master/slave replication.  If you don't want master failures, use synchronous replication in middleware.<br /><br />Read the slides to learn more about the thinking.   Database scale-out is a fascinating problem and we are looking forward to making it much easier to handle.  Please stay tuned!  I'll be writing more about this in the weeks and months to come.]]></content:encoded>
    <pubDate>Thu, 15 May 2008 12:49:00 +0000</pubDate>
    <dc:creator>Robert Hodges</dc:creator>
  </item>

  <item>
    <title>Shameless ad</title>
    <guid isPermaLink="false">http://dammit.lt/?p=104</guid>
    <link>http://dammit.lt/2008/05/15/sun-fire-x4240/</link>
    <description>&amp;#8220;The Sun Fire X4240, powered by the AMD Opteron 2200 and 2300 processor series, is a two-socket, 8-core, 2RU system with up to twice the memory and storage capacity of any system in its class. It&amp;#8217;s the first and only two-socket AMD Opteron system with sixteen hard drive slots in a 2RU form factor.&amp;#8221;
Well, now that I work for Sun, it ends up being a shameless ad and boasting :) But back when I saw information about this product, I wasn&amp;#8217;t my first thought was &amp;#8220;wow, thats the best machine for scaling up scaled out environments!&amp;#8221;. 
In web database world people agree that number of spindles (disks!) matters - remember YouTube&amp;#8217;s &amp;#8220;think disks, not servers&amp;#8221; mantra said during the scaling panel at MySQL conference. Before, getting such number of spindles would&amp;#8217;ve required external arrays taking space and sucking power (TCO! ;-)
And for us&amp;#8230; it probably means we can finally start doing RAID10, instead of RAID0. :-)
By the way, that box even has Quad-Core service processor. Way to go! :)</description>
    <content:encoded><![CDATA[<blockquote><p>&#8220;<a href="http://www.sun.com/servers/x64/x4240/">The Sun Fire X4240</a>, powered by the AMD Opteron 2200 and 2300 processor series, is a two-socket, 8-core, 2RU system with up to twice the memory and storage capacity of any system in its class. It&#8217;s the first and only two-socket AMD Opteron system with sixteen hard drive slots in a 2RU form factor.&#8221;</p></blockquote>
<p>Well, now that I work for Sun, it ends up being a shameless ad and boasting :) But back when I saw information about this product, I wasn&#8217;t my first thought was &#8220;wow, thats the best machine for scaling up scaled out environments!&#8221;. </p>
<p>In web database world people agree that number of spindles (disks!) matters - remember YouTube&#8217;s &#8220;think disks, not servers&#8221; mantra said during the scaling panel at MySQL conference. Before, getting such number of spindles would&#8217;ve required external arrays taking space and sucking power (TCO! ;-)</p>
<p>And for us&#8230; it probably means we can finally start doing RAID10, instead of RAID0. :-)</p>
<p>By the way, that box even has Quad-Core service processor. Way to go! :)</p>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 08:30:09 +0000</pubDate>
    <comments>http://dammit.lt/2008/05/15/sun-fire-x4240/#comments</comments>
    <dc:creator>Domas Mituzas</dc:creator>
    <category>mysql</category>
    <category>server raid io x4240</category>
  </item>

  <item>
    <title>MySQL: Free Software but not Open Source</title>
    <guid isPermaLink="false">http://www.xaprb.com/blog/2008/05/14/mysql-free-software-but-not-open-source/</guid>
    <link>http://www.xaprb.com/blog/2008/05/14/mysql-free-software-but-not-open-source/</link>
    <description>The title of MySQL&amp;#8217;s website states that they are the world&amp;#8217;s most popular open-source database.  This is false; MySQL is not an open-source database.  That assertion is a fact, not an opinion.

MySQL is Free Software, licensed under the GNU GPL.  People frequently use the two phrases &amp;#8220;Free Software&amp;#8221; and &amp;#8220;Open Source Software&amp;#8221; as synonyms, but there are very large, very important differences.

The difference between Free and Open Source

Open Source is much more of a development methodology than a philosophical standpoint.  The first thing on the Open Source Initiative&amp;#8217;s website is this introduction:

Open source is a development method for software that harnesses the power of distributed peer review and transparency of process. The promise of open source is better quality, higher reliability, more flexibility, lower cost, and an end to predatory vendor lock-in.

In contrast, Free Software is not about development practices at all.  You can develop Free Software any way you like; what makes it Free is the license.  Free Software is about protection of rights and freedoms.  It is a moral and ethical platform.  The promise of Free Software is quite different from &amp;#8220;better quality, higher reliability&amp;#8230;&amp;#8221;  Free Software is not about quality or reliability.

So why is MySQL not Open Source?  Simple.  Sun/MySQL uses a closed development model.  Nobody can get code in from the outside without accepting a Contributor License Agreement (CLA) which requires surrendering important rights, including ownership of the code.  Sun/MySQL controls the code absolutely and maintains ownership of it.  And even people who have signed the CLA report their patches stagnating &amp;#8212; often for years &amp;#8212; and still not being accepted into the source.  This is not Open Source.

Open Source software is usually maintained, owned, and controlled by a decentralized network of peers.  This is exactly the opposite of MySQL.  You cannot get more opposite.  The differences are often summarized as the cathedral versus the bazaar.  I&amp;#8217;m not sure this analogy always holds or is always useful and accurate, but it&amp;#8217;s a helpful piece of common vocabulary.

Why this matters

This matters because both Freedom and an open development model are necessary to an empowered, enlightened, free society.  Licensing isn&amp;#8217;t the only thing that matters: ownership matters, too.  So does control.

Google&amp;#8217;s patches to MySQL are a good example of excellent code with many simple, highly useful features that have not been included into the official MySQL distribution.  And there are no signs of that changing, as far as I can see.

I&amp;#8217;m not the only one who notices this.  Here&amp;#8217;s another quote:


With all due respect to Marten, there is a significant difference between the captive open source development model for MySQL and the community open source development model for PostgreSQL.

If this interests you, perhaps you would like to join the discussion on the oursql-sources Google group.development, Free Software, mysql, Open Source</description>
    <content:encoded><![CDATA[<p>The title of <a href="http://www.mysql.com/" onclick="javascript:urchinTracker ('/outbound/article/www.mysql.com');">MySQL&#8217;s website</a> states that they are the world&#8217;s most popular open-source database.  This is false; MySQL is not an open-source database.  That assertion is a fact, not an opinion.</p>

<p>MySQL is <a href="http://www.fsf.org/licensing/essays/free-sw.html" onclick="javascript:urchinTracker ('/outbound/article/www.fsf.org');">Free Software</a>, licensed under the GNU GPL.  People frequently use the two phrases &#8220;Free Software&#8221; and &#8220;Open Source Software&#8221; as synonyms, but there are very large, very important differences.</p>

<h3>The difference between Free and Open Source</h3>

<p>Open Source is much more of a development methodology than a philosophical standpoint.  The first thing on the <a href="http://www.opensource.org/" onclick="javascript:urchinTracker ('/outbound/article/www.opensource.org');">Open Source Initiative&#8217;s website</a> is this introduction:</p>

<blockquote cite="http://www.opensource.org/"><p>Open source is a development method for software that harnesses the power of distributed peer review and transparency of process. The promise of open source is better quality, higher reliability, more flexibility, lower cost, and an end to predatory vendor lock-in.</p></blockquote>

<p>In contrast, Free Software is not about development practices at all.  You can develop Free Software any way you like; what makes it Free is the license.  Free Software is about protection of rights and freedoms.  It is a moral and ethical platform.  The promise of Free Software is quite different from &#8220;better quality, higher reliability&#8230;&#8221;  Free Software is not about quality or reliability.</p>

<p>So why is MySQL not Open Source?  Simple.  Sun/MySQL uses a closed development model.  Nobody can get code in from the outside without accepting a <a href="http://forge.mysql.com/contribute/cla.php" onclick="javascript:urchinTracker ('/outbound/article/forge.mysql.com');">Contributor License Agreement (CLA)</a> which requires surrendering important rights, including ownership of the code.  Sun/MySQL controls the code absolutely and maintains ownership of it.  And even people who have signed the CLA report their patches stagnating &#8212; often for years &#8212; and still not being accepted into the source.  This is not Open Source.</p>

<p>Open Source software is usually maintained, owned, and controlled by a decentralized network of peers.  This is exactly the opposite of MySQL.  You cannot get more opposite.  The differences are often summarized as <a href="http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/" onclick="javascript:urchinTracker ('/outbound/article/www.catb.org');">the cathedral versus the bazaar</a>.  I&#8217;m not sure this analogy always holds or is always useful and accurate, but it&#8217;s a helpful piece of common vocabulary.</p>

<h3>Why this matters</h3>

<p>This matters because both Freedom and an open development model are necessary to an empowered, enlightened, free society.  Licensing isn&#8217;t the only thing that matters: ownership matters, too.  So does control.</p>

<p><a href="http://code.google.com/p/google-mysql-tools/" onclick="javascript:urchinTracker ('/outbound/article/code.google.com');">Google&#8217;s patches to MySQL</a> are a good example of excellent code with many simple, highly useful features that have not been included into the official MySQL distribution.  And there are no signs of that changing, as far as I can see.</p>

<p>I&#8217;m not the only one who notices this.  Here&#8217;s <a href="http://blogs.the451group.com/opensource/2008/04/24/finding-the-right-balance-mysql%e2%80%99s-changing-development-model/" onclick="javascript:urchinTracker ('/outbound/article/blogs.the451group.com');">another quote</a>:</p>

<blockquote cite="http://blogs.the451group.com/opensource/2008/04/24/finding-the-right-balance-mysql%e2%80%99s-changing-development-model/">
<p>With all due respect to Marten, there is a significant difference between the captive open source development model for MySQL and the community open source development model for PostgreSQL.</p></blockquote>

<p>If this interests you, perhaps you would like to join the discussion on the <a href="http://groups.google.com/group/oursql-sources" onclick="javascript:urchinTracker ('/outbound/article/groups.google.com');">oursql-sources</a> Google group.</p><a href="http://www.xaprb.com/blog/tag/development/" rel="tag" >development</a>, <a href="http://www.xaprb.com/blog/tag/free-software/" rel="tag" >Free Software</a>, <a href="http://www.xaprb.com/blog/tag/mysql/" rel="tag" >mysql</a>, <a href="http://www.xaprb.com/blog/tag/open-source/" rel="tag" >Open Source</a>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 03:59:33 +0000</pubDate>
    <comments>http://www.xaprb.com/blog/2008/05/14/mysql-free-software-but-not-open-source/#comments</comments>
    <dc:creator>Baron Schwartz (xaprb)</dc:creator>
    <category>SQL</category>
    <category>Commentary</category>
    <category>development</category>
    <category>Free Software</category>
    <category>mysql</category>
    <category>Open Source</category>
  </item>

  <item>
    <title>Plaxo acquired by Comcast</title>
    <guid isPermaLink="false">http://krow.livejournal.com/596027.html</guid>
    <link>http://krow.livejournal.com/596027.html</link>
    <description>I was about to bitch about Plaxo being bought by Comcast (and therefor creating an opportunity in the market)... but twitter was down!I feel like I am slumming by blogging this, when for me this would be better off as twitter blather.Twitter is giving me deja-vu memories of Friendster.How did Friendster solve their problems?They latched on their graph engine to the internals of MySQL, and pushed joins into the database.Anybody up for writing a quick queue engine? I bet you can figure out which website really needs one about now...</description>
    <content:encoded><![CDATA[I was about to bitch about Plaxo being bought by Comcast (and therefor creating an opportunity in the market)... but twitter was down!<br /><br />I feel like I am slumming by blogging this, when for me this would be better off as twitter blather.<br /><br />Twitter is giving me deja-vu memories of Friendster.<br /><br />How did Friendster solve their problems?<br /><br />They latched on their graph engine to the internals of MySQL, and pushed joins into the database.<br /><br />Anybody up for writing a quick queue engine? I bet you can figure out which website really needs one about now...]]></content:encoded>
    <pubDate>Thu, 15 May 2008 00:36:59 +0000</pubDate>
    <comments>http://krow.livejournal.com/596027.html</comments>
    <dc:creator>Brian Aker</dc:creator>
  </item>

  <item>
    <title>Concurrent inserts on MyISAM and the binary log</title>
    <guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=397</guid>
    <link>http://www.mysqlperformanceblog.com/2008/05/14/concurrent-insert-select-myisam/</link>
    <description>Recently I had an interesting surprise with concurrent inserts into a MyISAM table.  The inserts were not happening concurrently with SELECT statements; they were blocking and the process list was filling up with queries in Locked status.
My first thought was that the customer had deleted from the table, which leaves &quot;holes&quot; in the middle of it and prevents concurrent inserts.  (You can configure the server to permit concurrent inserts even when there are holes, but it's disabled by default.)  However, that turned out not to be the cause; the table was only inserted into (and selected from). Instead, the blocked statements were because of INSERT... SELECT statements that were running against the table, selecting data from it and inserting into another table.
Let's look at what happens here: suppose you have two tables tbl1 and tbl2 and concurrent inserts into tbl2 are running fine.  If you now run the following query,
PLAIN TEXT
SQL:




INSERT INTO tbl1 SELECT * FROM tbl2 






The concurrent inserts into tbl2 can block.  This happens if you have the binary log enabled.  If you think about it, this makes sense and is correct behavior.  The statements have to be serialized for the binary log; otherwise replaying the binary log can result in a different order of execution.
The MySQL manual actually says this, but not in the clearest way.  It just says
If you are using the binary log, concurrent inserts are converted to normal inserts for CREATE ... SELECT or INSERT ... SELECT  statements.
If you use mysqladmin debug, you'll see an ordinary SELECT gets a lock on the table like this:
PLAIN TEXT
CODE:




Locked - read&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Low priority read lock 






But on INSERT...SELECT, you'll see this:
PLAIN TEXT
CODE:




Read lock&amp;nbsp; without concurrent inserts 






That read lock is what's blocking the concurrent inserts from happening.
There's no solution to this, if you need the binary log enabled.  (It needs to be enabled for replication.)     There are workarounds, though. You can use the old trick of SELECT INTO OUTFILE followed by LOAD DATA INFILE.  You can use InnoDB instead.  Or you can do something more elaborate and application-specific, but that's a topic for another post.
    
    Entry posted by Baron Schwartz |
      3 comments
    Add to:  |  |  |  | </description>
    <content:encoded><![CDATA[<p>Recently I had an interesting surprise with concurrent inserts into a MyISAM table.  The inserts were not happening concurrently with SELECT statements; they were blocking and the process list was filling up with queries in Locked status.</p>
<p>My first thought was that the customer had deleted from the table, which leaves "holes" in the middle of it and prevents concurrent inserts.  (You can configure the server to permit concurrent inserts even when there are holes, but it's disabled by default.)  However, that turned out not to be the cause; the table was only inserted into (and selected from). Instead, the blocked statements were because of INSERT... SELECT statements that were running against the table, selecting data from it and inserting into another table.</p>
<p>Let's look at what happens here: suppose you have two tables tbl1 and tbl2 and concurrent inserts into tbl2 are running fine.  If you now run the following query,</p>
<div class="igBar"><span id="lsql-4"><a href="#" onclick="javascript:showPlainTxt('sql-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">SQL:</span>
<div id="sql-4">
<div class="sql">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #993333; font-weight: bold;">INSERT</span> <span style="color: #993333; font-weight: bold;">INTO</span> tbl1 <span style="color: #993333; font-weight: bold;">SELECT</span> * <span style="color: #993333; font-weight: bold;">FROM</span> tbl2 </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>The concurrent inserts into tbl2 can block.  This happens if you have the binary log enabled.  If you think about it, this makes sense and is correct behavior.  The statements have to be serialized for the binary log; otherwise replaying the binary log can result in a different order of execution.</p>
<p>The <a href="http://dev.mysql.com/doc/refman/5.0/en/concurrent-inserts.html">MySQL manual actually says this</a>, but not in the clearest way.  It just says</p>
<blockquote><p>If you are using the binary log, concurrent inserts are converted to normal inserts for CREATE ... SELECT or INSERT ... SELECT  statements.</p></blockquote>
<p>If you use mysqladmin debug, you'll see an ordinary SELECT gets a lock on the table like this:</p>
<div class="igBar"><span id="lcode-5"><a href="#" onclick="javascript:showPlainTxt('code-5'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-5">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Locked - read&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Low priority read lock </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>But on INSERT...SELECT, you'll see this:</p>
<div class="igBar"><span id="lcode-6"><a href="#" onclick="javascript:showPlainTxt('code-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-6">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Read lock&nbsp; without concurrent inserts </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>That read lock is what's blocking the concurrent inserts from happening.</p>
<p>There's no solution to this, if you need the binary log enabled.  (It needs to be enabled for replication.)     There are workarounds, though. You can use the old trick of SELECT INTO OUTFILE followed by LOAD DATA INFILE.  You can use InnoDB instead.  Or you can do something more elaborate and application-specific, but that's a topic for another post.</p>
    <hr noshade style="margin:0;height:1px" />
    <p>Entry posted by Baron Schwartz |
      <a href="http://www.mysqlperformanceblog.com/2008/05/14/concurrent-insert-select-myisam/#comments">3 comments</a></p>
    <p>Add to: <a href="http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2008/05/14/concurrent-insert-select-myisam/&amp;title=Concurrent inserts on MyISAM and the binary log" title="Bookmark this post on del.icio.us"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png" alt="delicious" /></a> | <a href="http://digg.com/submit?phase=2&amp;url=http://www.mysqlperformanceblog.com/2008/05/14/concurrent-insert-select-myisam/&amp;title=Concurrent inserts on MyISAM and the binary log" title="Digg this post on Digg.com"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png" alt="digg" /></a> | <a href="http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2008/05/14/concurrent-insert-select-myisam/&amp;title=Concurrent inserts on MyISAM and the binary log" title="Submit this post on reddit.com"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png" alt="reddit" /></a> | <a href="http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2008/05/14/concurrent-insert-select-myisam/&amp;T=Concurrent inserts on MyISAM and the binary log" title="Vote for this article on Netscape"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif" alt="netscape" /></a> | <a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://www.mysqlperformanceblog.com/2008/05/14/concurrent-insert-select-myisam/&amp;title=Concurrent inserts on MyISAM and the binary log" title="Add to Google Bookmarks"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png" alt="Google Bookmarks" /></a></p>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 00:22:58 +0000</pubDate>
    <dc:creator>MySQL Performance Blog</dc:creator>
  </item>

  <item>
    <title>MySQL Log Rotation</title>
    <guid isPermaLink="false">http://mysqlha.wordpress.com/?p=38</guid>
    <link>http://mysql-ha.com/2008/05/14/mysql-log-rotation/</link>
    <description>Ok. So I just looked at two blog posts about MySQL log rotation. While not technically incorrect, I&amp;#8217;d like to disagree with the final answer, mainly because recreating the wheel drives me crazy.
Rather than writing a custom script to do this and putting that script in cron, why not use logrotate?
We already ship fully functional log rotate scripts in the Debian MySQL packages. Here&amp;#8217;s an example:
/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log {
        daily
        rotate 7
        missingok
        create 640 mysql adm
        compress
        sharedscripts
        postrotate
                test -x /usr/bin/mysqladmin || exit 0

                # If this fails, check debian.conf!
                export HOME=/etc/mysql/my.cnf
                MYADMIN=&quot;/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf&quot;
                if [ -z &quot;`$MYADMIN ping 2&amp;gt;/dev/null`&quot; ]; then
                  # Really no mysqld or rather a missing debian-sys-maint user?
                  # If this occurs and is not a error please report a bug.
                  if ps cax | grep -q mysqld; then
                    exit 1
                  fi
                else
                  $MYADMIN flush-logs
                fi
        endscript
}

This does the re-creation, flush logs and handles failure conditions gracefully. It also compresses old files. Even better - your system already has logrotate running (unless you run a really bad distro)
Now, if you aren&amp;#8217;t on Debian, don&amp;#8217;t just copy this verbatim, as you probably don&amp;#8217;t have a debian-sys-maint user or an /etc/mysql/debian.cnf file. In Debian, we make this at package install time and refresh it on upgrades. It&amp;#8217;s a system user with an autogenerated password put in a file only readable by root, that allows system scripts like this to run unattended.
Once you read up a little on logrotate, you&amp;#8217;ll realize it&amp;#8217;s really great at just about anything you need to do in the log rotation field. Have fun!
       </description>
    <content:encoded><![CDATA[<div class='snap_preview'><br /><p>Ok. So I just looked at <a title="Diamond Notes" href="http://www.paragon-cs.com/wordpress/2008/05/14/rotating-slow-and-general-query-logs/" target="_self">two</a> <a title="TheMattReid" href="http://themattreid.com/wordpress/?p=34" target="_self">blog posts</a> about MySQL log rotation. While not technically incorrect, I&#8217;d like to disagree with the final answer, mainly because recreating the wheel drives me crazy.</p>
<p>Rather than writing a custom script to do this and putting that script in cron, why not use logrotate?</p>
<p>We already ship fully functional log rotate scripts in the Debian MySQL packages. Here&#8217;s an example:</p>
<pre>/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log {
        daily
        rotate 7
        missingok
        create 640 mysql adm
        compress
        sharedscripts
        postrotate
                test -x /usr/bin/mysqladmin || exit 0

                # If this fails, check debian.conf!
                export HOME=/etc/mysql/my.cnf
                MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
                if [ -z "`$MYADMIN ping 2&gt;/dev/null`" ]; then
                  # Really no mysqld or rather a missing debian-sys-maint user?
                  # If this occurs and is not a error please report a bug.
                  if ps cax | grep -q mysqld; then
                    exit 1
                  fi
                else
                  $MYADMIN flush-logs
                fi
        endscript
}
</pre>
<p>This does the re-creation, flush logs and handles failure conditions gracefully. It also compresses old files. Even better - your system already has logrotate running (unless you run a really bad distro)</p>
<p>Now, if you aren&#8217;t on Debian, don&#8217;t just copy this verbatim, as you probably don&#8217;t have a debian-sys-maint user or an /etc/mysql/debian.cnf file. In Debian, we make this at package install time and refresh it on upgrades. It&#8217;s a system user with an autogenerated password put in a file only readable by root, that allows system scripts like this to run unattended.</p>
<p>Once you read up a little on logrotate, you&#8217;ll realize it&#8217;s really great at just about anything you need to do in the log rotation field. Have fun!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/mysqlha.wordpress.com/38/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/mysqlha.wordpress.com/38/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mysqlha.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mysqlha.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mysqlha.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mysqlha.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mysqlha.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mysqlha.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mysqlha.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mysqlha.wordpress.com/38/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mysqlha.wordpress.com/38/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mysqlha.wordpress.com/38/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mysql-ha.com&blog=2117587&post=38&subd=mysqlha&ref=&feed=1" /></div>]]></content:encoded>
    <pubDate>Thu, 15 May 2008 00:07:50 +0000</pubDate>
    <comments>http://mysql-ha.com/2008/05/14/mysql-log-rotation/#comments</comments>
    <dc:creator>Monty Taylor</dc:creator>
    <category>tools</category>
  </item>

  <item>
    <title>Zenoss Deathmatch</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-1844829803862335252.post-6076924685321497970</guid>
    <link>http://mysql-python.blogspot.com/2008/05/zenoss-deathmatch.html</link>
    <description>I've been working for the last week on implementing Zenoss to replace Nagios and Cacti. Individually Nagios and Cacti are pretty good at what they do, but they don't integrate well.Nagios is primarily an availability monitor, so it's good for notifying you when something goes down, or a disk is filling up, or the load average is too high. etc., but it's not so great for monitoring performance. Nagios 1.4 uses text configuration files. There is a templating system which can be helpful if you have a lot of identical systems.Cacti, on the other hand, is pretty good at monitoring performance, as in how much bandwidth are you using, resource utilization, and so on with nice long-term graphs using RRDtool, but it's not so great for notifying if something is down. Cacti is almost exclusively SNMP-based, and as a result, you can usually just point it at a device through the web interface and it will auto-discover everything interesting. If you have more than a few hundred items to measure, you need to use cactid, which is a very fast threaded poller written in C.I've been using both for about 3-4 years separately, but because they don't integrate easily (even though both use MySQL as their backend storage), there's a lot of duplication of effort in getting both of them configured.And then there's Zenoss. Zenoss does both availablity and performance monitoring, with long-term graphing using RRDtool, log analysis, and network-based auto-discovery. Zenoss is written in Python using the Zope-2 framework.  Most of the device metadata is stored on ZODB, Zope's native object database. Long-term performance data is stored in RRDtool. Event logs are stored in MySQL.Everything in Zenoss integrates together very well. The data is faceted in the sense that you can browse devices by location, by class, by group, or by system. It has a built-in syslog server, it can use WMI for monitoring Windows systems, it has very flexible event handling.There are still some rough edges in 2.1.92, which is a beta for 2.2. First is, it's a bit of a memory hog and I'm inclined to believe there are some memory leaks. After a day or two the main process will start to use over 200 MB; restarting tends to knock it back down to to around 100 MB or so.Syslog support has some issues. When I first started feeding it some syslog data, all the events were being classified as &quot;/Unknown&quot;. This is normal. Once you have some log entires, you can then tell it to map that entry to an event. The problem was, the events had components (the process name when parsing syslog data), but they had no event classes set. Looking at the code, it seemed like it should have been setting the event class ID to whatever the component/process name was. It just wasn't. After some Googling, I found out the code to build the event class key was just plain broken. After making these suggested changes, I could start mapping events.Another syslog problem was in parsing the hostname. I have a satellite syslog-ng server in a remote location that logs to my central syslog-ng server. Because of this, the hostname has the relay information in it. Zenoss' syslog support has an option to parse this though, so no problem, right? Despite turning this on, I was still getting entires like IP/IP, so back into the syslog code. It turns out, Zenoss expects the separator between the two hostnames to be &quot;@&quot;, and syslog-ng uses &quot;/'. Easy fix in the code, but I suspect this may work for the standard syslog, and it needs to be a configuration option.Despite all of this, I like Zenoss a lot. I am running it parallel with Nagios until I get all the event handling nailed down. I might need 2 GB RAM on the monitoring server though, and I have already moved the MySQL database onto a different server.</description>
    <content:encoded><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">I've been working for the last week on implementing Zenoss to replace <a href="http://www.nagios.org/">Nagios</a> and <a href="http://www.cacti.net/">Cacti</a>. Individually Nagios and Cacti are pretty good at what they do, but they don't integrate well.<br /><br />Nagios is primarily an availability monitor, so it's good for notifying you when something goes down, or a disk is filling up, or the load average is too high. etc., but it's not so great for monitoring performance. Nagios 1.4 uses text configuration files. There is a templating system which can be helpful if you have a lot of identical systems.<br /><br />Cacti, on the other hand, is pretty good at monitoring performance, as in how much bandwidth are you using, resource utilization, and so on with nice long-term graphs using <a href="http://oss.oetiker.ch/rrdtool/">RRDtool</a>, but it's not so great for notifying if something is down. Cacti is almost exclusively SNMP-based, and as a result, you can usually just point it at a device through the web interface and it will auto-discover everything interesting. If you have more than a few hundred items to measure, you need to use <a href="http://www.cacti.net/cactid_info.php">cactid</a>, which is a very fast threaded poller written in C.<br /><br />I've been using both for about 3-4 years separately, but because they don't integrate easily (even though both use MySQL as their backend storage), there's a lot of duplication of effort in getting both of them configured.<br /><br />And then there's Zenoss. Zenoss does both availablity and performance monitoring, with long-term graphing using RRDtool, log analysis, and network-based auto-discovery. Zenoss is written in Python using the Zope-2 framework.  Most of the device metadata is stored on ZODB, Zope's native object database. Long-term performance data is stored in RRDtool. Event logs are stored in MySQL.<br /><br />Everything in Zenoss integrates together very well. The data is faceted in the sense that you can browse devices by location, by class, by group, or by system. It has a built-in syslog server, it can use WMI for monitoring Windows systems, it has very flexible event handling.<br /><br />There are still some rough edges in 2.1.92, which is a beta for 2.2. First is, it's a bit of a memory hog and I'm inclined to believe there are some memory leaks. After a day or two the main process will start to use over 200 MB; restarting tends to knock it back down to to around 100 MB or so.<br /><br />Syslog support has some issues. When I first started feeding it some syslog data, all the events were being classified as "/Unknown". This is normal. Once you have some log entires, you can then tell it to map that entry to an event. The problem was, the events had components (the process name when parsing syslog data), but they had no event classes set. Looking at the code, it seemed like it should have been setting the event class ID to whatever the component/process name was. It just wasn't. After some Googling, I found out the code to build the event class key was just plain broken. After making these <a href="http://lists.zenoss.org/pipermail/zenoss-dev/2008/001892.html">suggested changes</a>, I could start mapping events.<br /><br />Another syslog problem was in parsing the hostname. I have a satellite syslog-ng server in a remote location that logs to my central syslog-ng server. Because of this, the hostname has the relay information in it. Zenoss' syslog support has an option to parse this though, so no problem, right? Despite turning this on, I was still getting entires like IP/IP, so back into the syslog code. It turns out, Zenoss expects the separator between the two hostnames to be "@", and syslog-ng uses "/'. Easy fix in the code, but I suspect this may work for the standard syslog, and it needs to be a configuration option.<br /><br />Despite all of this, I like Zenoss a lot. I am running it parallel with Nagios until I get all the event handling nailed down. I might need 2 GB RAM on the monitoring server though, and I have already moved the MySQL database onto a different server.<br /></div>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 23:27:00 +0000</pubDate>
    <dc:creator>Andy Dustman</dc:creator>
  </item>

  <item>
    <title>Dumping Duplicates</title>
    <guid isPermaLink="false">http://www.sitecrafting.com/blog/dumping-duplicates/</guid>
    <link>http://www.sitecrafting.com/blog/dumping-duplicates/</link>
    <description>One of the more recent additions to the SiteCrafting CMS arsenal is a comprehensive error logger, tracking all PHP and MySQL errors (by default... other error types can be created on a case by case basis) that occur in new sites we build. Errors are stored in our own intranet system with a timestamp, error body and a site ID (assigned to each client at a different stage of our project workflow). The table looks something like this:+----+---------------------+---------------+---------+| id | logTime&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | project |+----+---------------------+---------------+---------+|&amp;nbsp; 2 | 2008-05-14 14:42:15 | A PHP Error&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 ||&amp;nbsp; 3 | 2008-05-14 14:42:26 | A PHP Error&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 ||&amp;nbsp; 4 | 2008-05-14 14:42:34 | A PHP Error&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 ||&amp;nbsp; 5 | 2008-05-14 14:42:47 | A MySQL Error |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 ||&amp;nbsp; 6 | 2008-05-14 14:42:56 | A MySQL Error |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 ||&amp;nbsp; 7 | 2008-05-14 14:43:05 | A PHP Error&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 ||&amp;nbsp; 8 | 2008-05-14 14:43:10 | A PHP Error&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 ||&amp;nbsp; 9 | 2008-05-14 14:43:21 | A MySQL Error |&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2 |+----+---------------------+---------------+---------+8 rows in set (0.00 sec)Obviously sometimes we get duplicate errors coming through. Aside from being mere mortals who aren't always fast enough to correct an error before it recurs, one of the first stages of debugging is to try and replicate the error. These are often pretty easy to manage. It's pretty trivial to search for all matching errors, check them all, and delete them. Sometimes, though, this just doesn't cut it. Like when there are a few different errors with 10,000 occurrences apiece.
 ...</description>
    <content:encoded><![CDATA[One of the more recent additions to the SiteCrafting CMS arsenal is a comprehensive error logger, tracking all PHP and MySQL errors (by default... other error types can be created on a case by case basis) that occur in new sites we build. Errors are stored in our own intranet system with a timestamp, error body and a site ID (assigned to each client at a different stage of our project workflow). The table looks something like this:+----+---------------------+---------------+---------+| id | logTime&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | project |+----+---------------------+---------------+---------+|&nbsp; 2 | 2008-05-14 14:42:15 | A PHP Error&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 ||&nbsp; 3 | 2008-05-14 14:42:26 | A PHP Error&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 ||&nbsp; 4 | 2008-05-14 14:42:34 | A PHP Error&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 ||&nbsp; 5 | 2008-05-14 14:42:47 | A MySQL Error |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 ||&nbsp; 6 | 2008-05-14 14:42:56 | A MySQL Error |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 ||&nbsp; 7 | 2008-05-14 14:43:05 | A PHP Error&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 ||&nbsp; 8 | 2008-05-14 14:43:10 | A PHP Error&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 ||&nbsp; 9 | 2008-05-14 14:43:21 | A MySQL Error |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 |+----+---------------------+---------------+---------+8 rows in set (0.00 sec)Obviously sometimes we get duplicate errors coming through. Aside from being mere mortals who aren't always fast enough to correct an error before it recurs, one of the first stages of debugging is to try and replicate the error. These are often pretty easy to manage. It's pretty trivial to search for all matching errors, check them all, and delete them. Sometimes, though, this just doesn't cut it. Like when there are a few different errors with 10,000 occurrences apiece.
 ...]]></content:encoded>
    <pubDate>Wed, 14 May 2008 23:15:00 +0000</pubDate>
    <dc:creator>Joseph Izenman</dc:creator>
  </item>

  <item>
    <title>CAOS Theory Podcast</title>
    <guid isPermaLink="false">http://blogs.the451group.com/opensource/?p=791</guid>
    <link>http://feeds.the451group.com/~r/451opensource/~3/290470462/</link>
    <description>The 451 Group&amp;#8217;s Commercial Adoption of Open Source (CAOS) Research Service now has a podcast (iTunes or RSS feed).
A month or so ago, I was having a conversation with The 451 Group&amp;#8217;s Vice President of Research Services, Simon Carruthers, about ways to expand the offerings of the CAOS Research Service. The CAOS Research Service includes aspects that are public (such as this blog), but the majority of the work that we do is accessible only to our paying clients, namely our research articles and reports, as well as our advisory service.
We made the decision to add a biweekly conference call for clients - a roundup of the top open source issues for the past two weeks, with insight provided by the 451&amp;#8217;s open source analysts, Jay Lyman, Matt Aslett, and myself. For those who could not dial in for the call, we provided the audio file as a private podcast. Last Friday was the second conference call. The concept was inspired by Diane Rehm&amp;#8217;s News Roundup on NPR.
As of today, we have turned the client conference call into a public podcast. This comes at the request of our clients, actually. Thanks to Simon for the go-ahead to make this open to all. Clients will be allowed to dial-in to the live call and submit questions in advance.
You can subscribe to the CAOS Theory biweekly podcast via iTunes or RSS feed. We&amp;#8217;ve posted the first two &amp;#8216;episodes&amp;#8217; and the next one is scheduled for Friday, May 23rd.
2008.05.09 Agenda:

 Black Duck Software acquires Koders
 Sun, IONA, Sourcefire, and Actuate announce quarterly results
 Sun&amp;#8217;s new OpenSolaris push
 Adobe and the Open Screen Project
 SpringSource&amp;#8217;s new platform

2008.04.25 Agenda:

 The state of open source venture funding
 What&amp;#8217;s up with MySQL?
 Desktop Linux troubles
 Qlusters stepping away from open source
 OSI Board election
 Open source social - centralized or distributed?
 The Open Source Census

We&amp;#8217;d love to get your feedback on the podcast - post a comment here or send me an email - raven.zachary@the451group.com. Thanks!
</description>
    <content:encoded><![CDATA[<p>The 451 Group&#8217;s Commercial Adoption of Open Source (CAOS) Research Service now has a podcast (<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=280595473" onclick="javascript:urchinTracker ('/outbound/article/phobos.apple.com');">iTunes</a> or <a href="http://caostheory.libsyn.com/rss" onclick="javascript:urchinTracker ('/outbound/article/caostheory.libsyn.com');">RSS feed</a>).</p>
<p>A month or so ago, I was having a conversation with The 451 Group&#8217;s Vice President of Research Services, <a href="http://www.the451group.com/about/bio_detail.php?eid=140" >Simon Carruthers</a>, about ways to expand the offerings of the <a href="http://www.the451group.com/products_and_services/451caos.php" >CAOS Research Service</a>. The CAOS Research Service includes aspects that are public (such as this blog), but the majority of the work that we do is accessible only to our paying clients, namely our research articles and reports, as well as our advisory service.</p>
<p>We made the decision to add a biweekly conference call for clients - a roundup of the top open source issues for the past two weeks, with insight provided by the 451&#8217;s open source analysts, Jay Lyman, Matt Aslett, and myself. For those who could not dial in for the call, we provided the audio file as a private podcast. Last Friday was the second conference call. The concept was inspired by <a href="http://wamu.org/programs/dr/news_roundup/" onclick="javascript:urchinTracker ('/outbound/article/wamu.org');">Diane Rehm&#8217;s News Roundup</a> on NPR.</p>
<p>As of today, we have turned the client conference call into a public podcast. This comes at the request of our clients, actually. Thanks to Simon for the go-ahead to make this open to all. Clients will be allowed to dial-in to the live call and submit questions in advance.</p>
<p>You can subscribe to the CAOS Theory biweekly podcast via <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=280595473" onclick="javascript:urchinTracker ('/outbound/article/phobos.apple.com');">iTunes</a> or <a href="http://caostheory.libsyn.com/rss" onclick="javascript:urchinTracker ('/outbound/article/caostheory.libsyn.com');">RSS feed</a>. We&#8217;ve posted the first two &#8216;episodes&#8217; and the next one is scheduled for Friday, May 23rd.</p>
<p>2008.05.09 Agenda:</p>
<ul>
<li> Black Duck Software acquires Koders
<li> Sun, IONA, Sourcefire, and Actuate announce quarterly results
<li> Sun&#8217;s new OpenSolaris push
<li> Adobe and the Open Screen Project
<li> SpringSource&#8217;s new platform
</ul>
<p>2008.04.25 Agenda:</p>
<ul>
<li> The state of open source venture funding
<li> What&#8217;s up with MySQL?
<li> Desktop Linux troubles
<li> Qlusters stepping away from open source
<li> OSI Board election
<li> Open source social - centralized or distributed?
<li> The Open Source Census
</ul>
<p>We&#8217;d love to get your feedback on the podcast - post a comment here or send me an email - <a href="mailto:raven.zachary@the451group.com?subject=CAOS Theory Podcast">raven.zachary@the451group.com</a>. Thanks!</p>
<img src="http://feeds.the451group.com/~r/451opensource/~4/290470462" height="1" width="1"/>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 21:46:21 +0000</pubDate>
    <comments>http://blogs.the451group.com/opensource/2008/05/14/caos-theory-podcast/#comments</comments>
    <dc:creator>The 451 Group</dc:creator>
    <category>The 451 Group</category>
    <category>451 group</category>
    <category>451caostheory</category>
    <category>451group</category>
    <category>caos theory podcast</category>
    <category>caostheory</category>
    <category>caostheorypodcast</category>
    <category>Linux</category>
    <category>open-source</category>
    <category>opensource</category>
    <category>podcast</category>
    <category>raven zachary</category>
    <category>ravenzachary</category>
    <category>the451group</category>
  </item>

  <item>
    <title>Rotating Slow and General Query Logs</title>
    <guid isPermaLink="false">http://www.paragon-cs.com/wordpress/?p=164</guid>
    <link>http://www.paragon-cs.com/wordpress/2008/05/14/rotating-slow-and-general-query-logs/</link>
    <description>I had a need to enable general query logging on a slave yesterday.&amp;nbsp; This makes for a very big file.&amp;nbsp; So, I needed to rotate this file at least daily.&amp;nbsp; Enter Google :)&amp;nbsp; And thanks to Jim Wood and Matt Reid, I have what I need.&amp;nbsp; Now I have it cron&amp;#8217;ed to rotate out every night.&amp;nbsp; So thanks guys!! And here is a link to the post Matt wrote about it:
http://themattreid.com/wordpress/?p=34</description>
    <content:encoded><![CDATA[<p>I had a need to enable general query logging on a slave yesterday.&nbsp; This makes for a very big file.&nbsp; So, I needed to rotate this file at least daily.&nbsp; Enter Google :)&nbsp; And thanks to Jim Wood and Matt Reid, I have what I need.&nbsp; Now I have it cron&#8217;ed to rotate out every night.&nbsp; So thanks guys!! And here is a link to the post Matt wrote about it:</p>
<p><a href="http://themattreid.com/wordpress/?p=34" target="_blank">http://themattreid.com/wordpress/?p=34</a></p>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 20:43:36 +0000</pubDate>
    <comments>http://www.paragon-cs.com/wordpress/2008/05/14/rotating-slow-and-general-query-logs/#comments</comments>
    <dc:creator>Keith Murphy</dc:creator>
    <category>MySQL</category>
  </item>

  <item>
    <title>Is &quot;the community&quot; hurting the OSS business model?</title>
    <guid isPermaLink="false">http://weblog.infoworld.com/openresource/archives/2008/05/is_the_communit.html</guid>
    <link>http://weblog.infoworld.com/openresource/archives/2008/05/is_the_communit.html?source=rss</link>
    <description>I had an interesting discussion with Marten Mickos at JavaOne last week that I've been meaning to blog about. I was disappointed that MySQL decided to put encryption and compression backup into MySQL Server (GPL license), versus including those features only in MySQL Enterprise (commercial license). Most of you will recall the outrage from &quot;the community&quot; that began when MySQL considered adding these enterprisey features only inside of MySQL Enterprise. I wanted to discuss this situation with Marten. I do not believe that Support and/or Monitoring around an OSS product are viable long term value propositions that will convince users...  READ MORE </description>
    <content:encoded><![CDATA[I had an interesting discussion with Marten Mickos at JavaOne last week that I've been meaning to blog about. I was disappointed that MySQL decided to put encryption and compression backup into MySQL Server (GPL license), versus including those features only in MySQL Enterprise (commercial license). Most of you will recall the outrage from "the community" that began when MySQL considered adding these enterprisey features only inside of MySQL Enterprise. I wanted to discuss this situation with Marten. I do not believe that Support and/or Monitoring around an OSS product are viable long term value propositions that will convince users... <a href="http://weblog.infoworld.com/openresource/archives/2008/05/is_the_communit.html?source=rss"> READ MORE</a> </p>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 20:11:43 +0000</pubDate>
    <dc:creator>InfoWorld</dc:creator>
    <category>Open Source</category>
  </item>

  <item>
    <title>MySQL Workbench progress update on Linux port</title>
    <guid isPermaLink="false">http://dev.mysql.com/workbench/?p=109</guid>
    <link>http://dev.mysql.com/workbench/?p=109</link>
    <description>As you probably know, or at least heard, we are currently porting Workbench to Linux. Generally speaking the porting process is split in several stages. The first one is to compile non-GUI Back-End which represents about 80% of the total application code. The next stage is to ensure that unit-tests are run correctly for the ported stuff. The third is to create user interface and to bind it to the back-end/core. After that we will have alpha version of Workbench for Linux.
Regarding tests, actually a portion of unit-tests are already passed. These are 121 of 122 going well. At the moment we are working on non-GUI back-end, and core part is compiled and run, so now the modules and plugins are in progress. I must admit that process of porting is pretty smooth, most of the code has already been prepared with Linux/OS X ports in mind. I will be posting our progress on the porting efforts frequently, please keep checking our blog.</description>
    <content:encoded><![CDATA[<p>As you probably know, or at least heard, we are currently porting Workbench to Linux. Generally speaking the porting process is split in several stages. The first one is to compile non-GUI Back-End which represents about 80% of the total application code. The next stage is to ensure that unit-tests are run correctly for the ported stuff. The third is to create user interface and to bind it to the back-end/core. After that we will have alpha version of Workbench for Linux.<br />
Regarding tests, actually a portion of unit-tests are already passed. These are 121 of 122 going well. At the moment we are working on non-GUI back-end, and core part is compiled and run, so now the modules and plugins are in progress. I must admit that process of porting is pretty smooth, most of the code has already been prepared with Linux/OS X ports in mind. I will be posting our progress on the porting efforts frequently, please keep checking our blog.</p>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 18:35:50 +0000</pubDate>
    <comments>http://dev.mysql.com/workbench/?p=109#comments</comments>
    <dc:creator>The Workbench Team</dc:creator>
    <category>Coding</category>
    <category>Linux</category>
    <category>OS X</category>
    <category>porting</category>
    <category>stage</category>
    <category>unit-test</category>
    <category>Workbench</category>
  </item>

  <item>
    <title>Cross Compare of SQL Server, MySQL, and PostgreSQL</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-27443162.post-8696086532611532637</guid>
    <link>http://marksitblog.blogspot.com/2008/05/cross-compare-of-sql-server-mysql-and.html</link>
    <description>Very nice comparision of SQL Server, MySQL and PostgreSQL servers.MySQL DBA &amp; Programming Blog by Mark Schoonover</description>
    <content:encoded><![CDATA[<a href="http://www.postgresonline.com/journal/index.php?/archives/51-guid.html">Very nice comparision of SQL Server, MySQL and PostgreSQL servers</a>.<div class="blogger-post-footer">MySQL DBA & Programming Blog by Mark Schoonover</div>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 17:00:00 +0000</pubDate>
    <dc:creator>Mark Schoonover</dc:creator>
  </item>

  <item>
    <title>Linux Distro Smack Down - the Podcast</title>
    <guid isPermaLink="false">http://blogs.sun.com/barton808/entry/linux_distro_smack_down_the</guid>
    <link>http://blogs.sun.com/barton808/entry/linux_distro_smack_down_the</link>
    <description>As promised, after individual presentations at last week's CommunityOne I brought together the community leaders of three of the top GNU/Linux distros (Zonker Brockmeier, OpenSUSE; Jono Bacon, Ubuntu; Karsten Wade, Fedora), threw in Glynn Foster of OpenSolaris and moderated a no-holds-barred panel.&amp;nbsp; (It took them three hours to clean up the blood afterwards!!) Although the panel itself wasn't recorded, immediately after it concluded, the five of us headed to the make-shift podcast studio we had set up at the event and recorded the following discussion.&amp;nbsp; Listen at your peril!My Discussion with the panel (44:08)&amp;nbsp; Listen (Mp3)&amp;nbsp;&amp;nbsp; Listen (ogg)No glasses? No facial hair? Get in the back. Zonker Brockmeier, OpenSUSE; Jono Bacon, Ubuntu; Karsten Wade, Fedora;&amp;nbsp; Glynn Foster (standing), OpenSolaris&amp;nbsp;Some of the topics we tackle:How the gentlemen balance the needs of the community with the needs of their corporate parent.Working with upstream providers.&amp;nbsp; Is the heat Ubuntu gets on this subject justified? Karsten's mantra (Glynn, a former GNOME director, also offers a perspective from the upstream)Shout-outs to Debian Governance and how each of the distros handles it (the community/corporate split and who picks the members)In the last third of the podcast we head off in to the realm of the philosophical and address Free vs. Non-Free software, the &amp;quot;Vocal Minority,&amp;quot; Richard Stallman, mini-Stallman's and all things holy.Pau for now...</description>
    <content:encoded><![CDATA[<p>As <a href="http://blogs.sun.com/barton808/entry/linux_distro_smack_down_only">promised</a>, after individual presentations at last week's <a href="http://developers.sun.com/events/communityone/">CommunityOne</a> I brought together the community leaders of three of the top GNU/Linux distros (<a href="http://zonker.opensuse.org/">Zonker Brockmeier</a>, OpenSUSE; <a href="http://www.jonobacon.org/">Jono Bacon</a>, Ubuntu; <a href="http://fedoraproject.org/wiki/KarstenWade">Karsten Wade</a>, Fedora), threw in <a href="http://blogs.gnome.org/gman/">Glynn Foster</a> of OpenSolaris and moderated a no-holds-barred panel.&nbsp; (It took them three hours to clean up the blood afterwards!!) <br /></p><p>Although the panel itself wasn't recorded, immediately after it concluded, the five of us headed to the make-shift podcast studio we had set up at the event and recorded the following discussion.&nbsp; Listen at your peril!<br /></p><p><b>My Discussion with the panel</b> (44:08)&nbsp; <a href="http://mediacast.sun.com/users/Barton808/media/J1_DistroPanel_5pm_050508_LVL_MUSIC.mp3">Listen (</a><a href="http://mediacast.sun.com/users/Barton808/media/J1_DistroPanel_5pm_050508_LVL_MUSIC.mp3">Mp3)</a>&nbsp;&nbsp; <a href="http://mediacast.sun.com/users/Barton808/media/J1_DistroPanel_5pm_050508_LVL_MUSIC.ogg">Listen (ogg)</a></p><p><img vspace="0" hspace="0" border="0" align="bottom" src="http://blogs.sun.com/barton808/resource/J108_DistroPanel.jpg" /><br /><i>No glasses? No facial hair? Get in the back. <br />Zonker Brockmeier, OpenSUSE; Jono Bacon, Ubuntu; Karsten Wade, Fedora;&nbsp; Glynn Foster (standing), OpenSolaris</i>&nbsp;</p><p><b>Some of the topics we tackle:</b></p><ul><li>How the gentlemen balance the needs of the community with the needs of their corporate parent.</li><li>Working with upstream providers.&nbsp; Is the heat Ubuntu gets on this subject justified? Karsten's mantra (Glynn, a former <a href="http://www.gnome.org/">GNOME</a> director, also offers a perspective from the upstream)</li><li>Shout-outs to <a href="http://www.debian.org/">Debian</a> <br /></li><li>Governance and how each of the distros handles it (the community/corporate split and who picks the members)</li><li>In the last third of the podcast we head off in to the realm of the philosophical and address Free vs. Non-Free software, the &quot;Vocal Minority,&quot; Richard Stallman, mini-Stallman's and all things holy.</li></ul>Pau for now...<br />]]></content:encoded>
    <pubDate>Wed, 14 May 2008 15:30:25 +0000</pubDate>
    <dc:creator>Barton George</dc:creator>
    <category>Podcasts</category>
    <category>communityone2008</category>
    <category>fedora</category>
    <category>glynnfoster</category>
    <category>gnome</category>
    <category>jonobacon</category>
    <category>karstenwade</category>
    <category>linux</category>
    <category>mysql</category>
    <category>opensolaris</category>
    <category>opensource</category>
    <category>opensuse</category>
    <category>ubuntu</category>
    <category>zonkerbrockmeier</category>
  </item>

  <item>
    <title>Getting Hibernate and MySQL's &quot;ON DUPLICATE KEY UPDATE&quot; Feature to Play Nice Together...</title>
    <guid isPermaLink="false">http://www.jroller.com/mmatthews/entry/getting_hibernate_and_mysql_s</guid>
    <link>http://www.jroller.com/mmatthews/entry/getting_hibernate_and_mysql_s</link>
    <description>MySQL has a handy feature, that allows you to turn an INSERT into an UPDATE if a unique or primary key duplication is detected:

	http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

	A common usage pattern for this is &amp;#8220;lazy initialization&amp;#8220; of a row in a database, which is exactly what my team was using it for yesterday to solve a problem in the backend for version 2.0 of the MySQL Enterprise Monitor. However, we ran into an issue where Hibernate would throw an exception complaining that when the INSERT was turned into an UPDATE, it couldn&amp;#8216;t retrieve the generated primary key value (we are using auto increments on this particular table, as it&amp;#8216;s not a high insertion-rate table).

	To understand why this happens, you have to know a little bit about how Statement.getGeneratedKeys() works with MySQL&amp;#8216;s JDBC driver. When an auto increment value is generated by MySQL, that value is returned on the wire as part of the message back to the client that contains the update count, warnings, etc. When an application asks for the generated keys from MySQL&amp;#8216;s JDBC driver, it takes the value returned on the wire and crafts a &amp;#8220;synthetic&amp;#8220; result set to represent it.

	In the case where &amp;#8220;ON DUPLICATE KEY UPDATE&amp;#8220; is in play, it turns out that the value returned on the wire, by default is indeterminate, which we would&amp;#8216;ve learned from reading our own manual more carefully:

	&amp;#8220;If a table contains an AUTO_INCREMENT column and INSERT &amp;#8230; UPDATE inserts a row, the LAST_INSERT_ID() function returns the AUTO_INCREMENT value. If the statement updates a row instead, LAST_INSERT_ID() is not meaningful.&amp;#8221;

	It turns out, the answer to this is to add a little assignment to the UPDATE clause:


INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)


	With that little &amp;#8220;id=LAST_INSERT_ID(id)&amp;#8221; bit added to the INSERT statement, the server now returns the already existing auto increment value back to the client, and Hibernate is happy again.</description>
    <content:encoded><![CDATA[<p>MySQL has a handy feature, that allows you to turn an <span class="caps">INSERT</span> into an <span class="caps">UPDATE</span> if a unique or primary key duplication is detected:</p>

	<p><a href="http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html">http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html</a></p>

	<p>A common usage pattern for this is &#8220;lazy initialization&#8220; of a row in a database, which is exactly what my team was using it for yesterday to solve a problem in the backend for version 2.0 of the MySQL Enterprise Monitor. However, we ran into an issue where Hibernate would throw an exception complaining that when the <span class="caps">INSERT</span> was turned into an <span class="caps">UPDATE</span>, it couldn&#8216;t retrieve the generated primary key value (we are using auto increments on this particular table, as it&#8216;s not a high insertion-rate table).</p>

	<p>To understand why this happens, you have to know a little bit about how Statement.getGeneratedKeys() works with MySQL&#8216;s <span class="caps">JDBC</span> driver. When an auto increment value is generated by MySQL, that value is returned on the wire as part of the message back to the client that contains the update count, warnings, etc. When an application asks for the generated keys from MySQL&#8216;s <span class="caps">JDBC</span> driver, it takes the value returned on the wire and crafts a &#8220;synthetic&#8220; result set to represent it.</p>

	<p>In the case where &#8220;ON <span class="caps">DUPLICATE KEY UPDATE</span>&#8220; is in play, it turns out that the value returned on the wire, by default is indeterminate, which we would&#8216;ve learned from reading our own manual more carefully:</p>

	<p>&#8220;If a table contains an <span class="caps">AUTO</span>_INCREMENT column and <span class="caps">INSERT </span>&#8230; <span class="caps">UPDATE</span> inserts a row, the <span class="caps">LAST</span>_INSERT_ID() function returns the <span class="caps">AUTO</span>_INCREMENT value. If the statement updates a row instead, <span class="caps">LAST</span>_INSERT_ID() is not meaningful.&#8221;</p>

	<p>It turns out, the answer to this is to add a little assignment to the <span class="caps">UPDATE</span> clause:</p>

<pre>
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id)
</pre>

	<p>With that little &#8220;id=LAST_INSERT_ID(id)&#8221; bit added to the <span class="caps">INSERT</span> statement, the server now returns the already existing auto increment value back to the client, and Hibernate is happy again.</p>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 13:49:57 +0000</pubDate>
    <dc:creator>Mark Matthews</dc:creator>
    <category>MySQL</category>
    <category>hibernate</category>
    <category>mysql</category>
    <category>performance</category>
  </item>

  <item>
    <title>Speaking at PLUG in Provo, Utah, Tonight</title>
    <guid isPermaLink="false">http://jpipes.com/index.php?/archives/234-guid.html</guid>
    <link>http://jpipes.com/index.php?/archives/234-Speaking-at-PLUG-in-Provo,-Utah,-Tonight.html</link>
    <description>
In the Columbus, Ohio, airport right now waiting to board my plane to Salt Lake City.  Tonight, I will be speaking on Join-Fu at the PLUG (Provo Linux User Group).  Ryan Simpkins asked that I speak &quot;at a very advanced level&quot; and so that's what I will be doing!  We'll see how the PLUG members handle my new set of slides on Intermediate Join-Fu that I have been working on...


I will post the slides a little later today after the PLUG meeting.  I'm really looking forward to meeting Ryan and the other folks from PLUG and getting a short tour of Omniture, a large web analytics company that uses MySQL (no, it's not Overture.  Totally different.  One of those is now extinct.)
</description>
    <content:encoded><![CDATA[<p>
In the Columbus, Ohio, airport right now waiting to board my plane to Salt Lake City.  Tonight, I will be <a href="http://www.plug.org/node/119" >speaking on Join-Fu</a> at the <a href="http://www.plug.org/"  title="PLUG">PLUG (Provo Linux User Group)</a>.  Ryan Simpkins asked that I speak "at a very advanced level" and so that's what I will be doing!  We'll see how the PLUG members handle my new set of slides on Intermediate Join-Fu that I have been working on...
</p>
<p>
I will post the slides a little later today after the PLUG meeting.  I'm really looking forward to meeting Ryan and the other folks from PLUG and getting a short tour of <a href="http://www.omniture.com/en/"  title="Omniture">Omniture</a>, a large web analytics company that uses MySQL (no, it's not Overture.  Totally different.  One of those is now extinct.)
</p>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 12:19:31 +0000</pubDate>
    <comments>http://jpipes.com/index.php?/archives/234-Speaking-at-PLUG-in-Provo,-Utah,-Tonight.html#comments</comments>
    <dc:creator>Jay Pipes</dc:creator>
    <category>MySQL</category>
  </item>

  <item>
    <title>Trainwreck: external MySQL replication agent</title>
    <guid isPermaLink="false">http://dammit.lt/?p=102</guid>
    <link>http://dammit.lt/2008/05/14/trainwreck-external-mysql-replication-agent/</link>
    <description>I wanted to work more on the actual project before writing about it, but I&amp;#8217;m lazy, and dear community may be not. 
At Wikimedia we have one database server which replicates from multiple (like 15!) masters. It even splits replication streams by database, and applying changes in parallel. 
All this stuff is done by external replication agent, Trainwreck. It is public-domain software, which was written by River, doesn&amp;#8217;t have much documentation, works only on Solaris (River likes Solaris), unless you comment out all process management blocks, which use doors and other Solaris specific API. 
It lives in Wikimedia SVN, and can be checked out using:
svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/tools/trainwreck/
It sits there, maintained just for needs of that specific single server (ok, there might be two or three), so if anyone wants to make it available for broader audience, feel free to fork a project to some community-oriented place, add all nice features you need. :)</description>
    <content:encoded><![CDATA[<p>I wanted to work more on the actual project before writing about it, but I&#8217;m lazy, and dear community may be not. </p>
<p>At Wikimedia we have one database server which replicates from multiple (like 15!) masters. It even splits replication streams by database, and applying changes in parallel. </p>
<p>All this stuff is done by external replication agent, Trainwreck. It is public-domain software, which was written by River, doesn&#8217;t have much documentation, works only on Solaris (River likes Solaris), unless you comment out all process management blocks, which use doors and other Solaris specific API. </p>
<p>It lives in <a href='http://svn.wikimedia.org/viewvc/mediawiki/trunk/tools/trainwreck/'>Wikimedia SVN</a>, and can be checked out using:</p>
<pre>svn co http://svn.wikimedia.org/svnroot/mediawiki/trunk/tools/trainwreck/</pre>
<p>It sits there, maintained just for needs of that specific single server (ok, there might be two or three), so if anyone wants to make it available for broader audience, feel free to fork a project to some community-oriented place, add all nice features you need. :)</p>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 10:20:59 +0000</pubDate>
    <comments>http://dammit.lt/2008/05/14/trainwreck-external-mysql-replication-agent/#comments</comments>
    <dc:creator>Domas Mituzas</dc:creator>
    <category>mysql</category>
    <category>trainwreck replication</category>
  </item>

  <item>
    <title>Long Live Open Source</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-5852997211129961388.post-3860612724249288574</guid>
    <link>http://optimmysql.blogspot.com/2008/05/long-live-open-source.html</link>
    <description>&amp;#8220;Don&amp;#8217;t worry about people stealing an idea. If it&amp;#8217;s original, you will have to ram it down their throats.&amp;#8221;        &amp;#8212; Howard Aiken  MySQL is back on Open Source track and that is definitely the best news for all (including community, MySQL and Sun as well). I think that now Sun/MySQL have agreed to the importance of community, it becomes community's responsibility to give them more reasons to believe so. Let's participate like never before.  Kaj, in his post says &amp;quot;...model to be useful for both those who spend money to save time, and those who spend time to save money&amp;quot;. This is what Open Source is, isn't it?  All in all, a decision most awaited and most welcome is taken. Thanks a ton to everybody who made this happen.</description>
    <content:encoded><![CDATA[<p><em><strong>&#8220;Don&#8217;t worry about people stealing an idea. If it&#8217;s original, you will have to ram it down their throats.&#8221;        <br />&#8212; Howard Aiken</strong></em></p>  <p>MySQL is <a href="http://blogs.mysql.com/kaj/2008/05/06/mysql-server-is-open-source-even-backup-extensions/">back on Open Source track</a> and that is definitely the best news for all (including community, MySQL and Sun as well). I think that now Sun/MySQL have agreed to the importance of community, it becomes community's responsibility to give them more reasons to believe so. Let's participate like never before.</p>  <p>Kaj, in his <a href="http://blogs.mysql.com/kaj/2008/05/06/mysql-server-is-open-source-even-backup-extensions/">post</a> says <em>&quot;...model to be useful for both those who spend money to save time, and those who spend time to save money&quot;. </em>This is what Open Source is, isn't it?</p>  <p>All in all, a decision most awaited and most welcome is taken. Thanks a ton to everybody who made this happen.</p>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 10:08:00 +0000</pubDate>
    <dc:creator>Parvesh Garg</dc:creator>
  </item>

  <item>
    <title>Mitigating the risk of license changes</title>
    <guid isPermaLink="false">http://pooteeweet.org/blog/0/1084</guid>
    <link>http://pooteeweet.org/blog/0/1084</link>
    <description>This is just a very short note about the recent license change from LGPL to GPL made by the author of extJS. When choosing an open source product make sure that the contributors are fragmented across enough organizations to prevent any chance of being able to do a license change. If that is not the case make sure that the community is large enough so that you have a good chance at succeeding with a fork if the need arises. In the case of extJS the later seems to be the case. As such the license change itself is not soooo big an issue, since a lot of people do not consider their frontend code to be proprietary anyways. The source is there for all to see. So for the most part people are fine considering their frontend to be licensed under the GPL. That being said, extJS guys are trying to make people believe that using extJS on the frontend has any effect on the backend licensing. Kinda reminds me of the MySQL client license stunt and the days when MySQL sales reps intentionally confused people about the GPL .. good that those days are over.</description>
    <content:encoded><![CDATA[<p>This is just a very short note about the recent <a href="http://extjs.com/forum/showthread.php?t=33096" onclick="window.open(this.href, '_blank'); return false;">license change</a> from LGPL to GPL made by the author of extJS. When choosing an open source product make sure that the contributors are fragmented across enough organizations to prevent any chance of being able to do a license change. If that is not the case make sure that the community is large enough so that you have a good chance at succeeding with a fork if the need arises. In the case of extJS the later seems to be the <a href="http://www.akbkhome.com/blog.php/View/164/ExtJs__talking_forking.html" onclick="window.open(this.href, '_blank'); return false;">case</a>. As such the license change itself is not soooo big an issue, since a lot of people do not consider their frontend code to be proprietary anyways. The source is there for all to see. So for the most part people are fine considering their frontend to be licensed under the GPL. That being said, extJS guys are trying to <a href="http://extjs.com/products/license.php" onclick="window.open(this.href, '_blank'); return false;">make people believe</a> that using extJS on the frontend has any effect on the backend licensing. Kinda reminds me of the MySQL client license stunt and the days when MySQL sales reps intentionally confused people about the GPL .. good that those days are over.</p>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 08:29:08 +0000</pubDate>
    <dc:creator>Lukas Smith</dc:creator>
    <category>general</category>
  </item>

  <item>
    <title>Prepared statement gotchas</title>
    <guid isPermaLink="false">http://pooteeweet.org/blog/0/1083</guid>
    <link>http://pooteeweet.org/blog/0/1083</link>
    <description>I spotted an interesting blog post about prepared statements over on Planet OSDB about prepared statements gotchas. It illustrates very well the issue that prepared statements have been plagued with since their inception: namely that they can severely hurt performance (even though they are considered to improve performance by most people).

Just briefly: Why do we even care for prepared statements? For stateless web applications the benefits are mainly protection against SQL injection and better readability. In some rare cases in theory also better performance if the same statement is executed multiple times in the same request. The disadvantage is that for most web applications queries are rarely executed more than once and therefore the separation of parsing/planning and execution just means that there is an additional roundtrip to the database. Also in very long running database sessions the prepared query plan could get outdated, which could also spell disaster for performance. or in other words: prepared statements are no silver bullet.

The problem described in the above blog post is of course since the idea behind prepared statements is to separate the parsing and planning stage from the actual data that is to be used in the WHERE clause of the query. Modern cost based optimizers keep detailed statistics about data distribution, which is difficult to leverage if there is no data available during the planning stage. This blog post however focuses on another aspect that is not yet relevant to MySQL, since there is no support for partial indexes in MySQL just yet. However RDBMS like PostgreSQL do support partial indexes. Again since the data is missing during the planning stage, the database is unable to determine if an existing partial index matches.

So what can be done to fix this if we do want to stick with prepared statements? On the user side one thing one can do is move the relevant filtering data into the prepared statement itself. This of course means that you loose the benefit of the prepared statement for the relevant pieces of data, but it might be an acceptable balance. Of course if this data contains user supplied data, you now need to manually make sure that the data is safe.

The other approach is simply switching to emulated prepared statements, which most database layers support (like PDO). This also fixes the issue of adding a second round trip to the database for every execution. However it means you put yourself at the mercy of the parser embedded in the database layer you are using. Actually in the case of PDO there is little chance to get around that anyways. Worse yet, the PDO parser is known to be buggy by design.

On the database one approach that has been taken by Oracle since I think 9i is to delay the planning stage until the first execution. The query plan is then optimized for the first data set. I do not know how this works in detail, as I presume that if the plan uses a partial index as a covering index and the next data set is not contained in the partial index, that this approach would fail. However it gets the job done for people that just want to use prepared statements for one shot execution to get SQL injection protection and better readability.

Another approach that I do not think any RDBMS has taken (probably because its either hard or not feasible .. or both) is to keep multiple query plans around. In this scenario in the initial planning phase the database would also store some simple parameters that define if an existing query plan will match or not. If the plan does not, then a new plan is generated, while the old plan is kept around. This way a single prepared statement could eventually keep multiple query plans around. This would also solve the issue with partial indexes being used as covering indexes.

Yet another approach, which would be less interesting for short running sessions as are common in PHP applications, would be that if the query is executed and the performance is slower than expected, that this then triggers a replanning. Potentially also keeping the old plan for old data sets. This would also solve the issue of long running sessions having out of date plans.

Overall it seems for stateless web applications the best approach is using a database layer with good prepared statement emulation support. I hope that PDO, will one day fit this criteria. Until then the MDB2 parser seems to do a much better job. Though MDB2 is of course implemented in PHP, which carries its own performance overhead and is not E_STRICT compliant due to the PHP4 compatibility.</description>
    <content:encoded><![CDATA[<p>I spotted an interesting blog post about prepared statements over on <a href="http://www.planetosdb.org/" onclick="window.open(this.href, '_blank'); return false;">Planet OSDB</a> about <a href="http://www.depesz.com/index.php/2008/05/10/prepared-statements-gotcha/" onclick="window.open(this.href, '_blank'); return false;">prepared statements gotchas</a>. It illustrates very well the issue that prepared statements have been plagued with since their inception: namely that they can severely hurt performance (even though they are considered to improve performance by most people).</p>

<p>Just briefly: Why do we even care for prepared statements? For stateless web applications the benefits are mainly protection against SQL injection and better readability. In some rare cases in theory also better performance if the same statement is executed multiple times in the same request. The disadvantage is that for most web applications queries are rarely executed more than once and therefore the separation of parsing/planning and execution just means that there is an additional roundtrip to the database. Also in very long running database sessions the prepared query plan could get outdated, which could also spell disaster for performance. or in other words: prepared statements are no silver bullet.</p>

<p>The problem described in the above blog post is of course since the idea behind prepared statements is to separate the parsing and planning stage from the actual data that is to be used in the WHERE clause of the query. Modern cost based optimizers keep detailed statistics about data distribution, which is difficult to leverage if there is no data available during the planning stage. This blog post however focuses on another aspect that is not yet relevant to MySQL, since there is no support for partial indexes in MySQL just yet. However RDBMS like PostgreSQL do support partial indexes. Again since the data is missing during the planning stage, the database is unable to determine if an existing partial index matches.</p>

<p>So what can be done to fix this if we do want to stick with prepared statements? On the user side one thing one can do is move the relevant filtering data into the prepared statement itself. This of course means that you loose the benefit of the prepared statement for the relevant pieces of data, but it might be an acceptable balance. Of course if this data contains user supplied data, you now need to manually make sure that the data is safe.</p>

<p>The other approach is simply switching to emulated prepared statements, which most database layers support (like PDO). This also fixes the issue of adding a second round trip to the database for every execution. However it means you put yourself at the mercy of the parser embedded in the database layer you are using. Actually in the case of PDO there is little chance to get around that anyways. Worse yet, the PDO parser is known to be <a href="http://pecl.php.net/bugs/bug.php?id=7033" onclick="window.open(this.href, '_blank'); return false;">buggy</a> by design.</p>

<p>On the database one approach that has been taken by Oracle since I think 9i is to delay the planning stage until the first execution. The query plan is then optimized for the first data set. I do not know how this works in detail, as I presume that if the plan uses a partial index as a covering index and the next data set is not contained in the partial index, that this approach would fail. However it gets the job done for people that just want to use prepared statements for one shot execution to get SQL injection protection and better readability.</p>

<p>Another approach that I do not think any RDBMS has taken (probably because its either hard or not feasible .. or both) is to keep multiple query plans around. In this scenario in the initial planning phase the database would also store some simple parameters that define if an existing query plan will match or not. If the plan does not, then a new plan is generated, while the old plan is kept around. This way a single prepared statement could eventually keep multiple query plans around. This would also solve the issue with partial indexes being used as covering indexes.</p>

<p>Yet another approach, which would be less interesting for short running sessions as are common in PHP applications, would be that if the query is executed and the performance is slower than expected, that this then triggers a replanning. Potentially also keeping the old plan for old data sets. This would also solve the issue of long running sessions having out of date plans.</p>

<p>Overall it seems for stateless web applications the best approach is using a database layer with good prepared statement emulation support. I hope that PDO, will <a href="http://wiki.php.net/rfc/pdov1" onclick="window.open(this.href, '_blank'); return false;">one day</a> fit this criteria. Until then the <a href="http://pear.php.net/package/MDB2/" onclick="window.open(this.href, '_blank'); return false;">MDB2</a> parser seems to do a much better job. Though MDB2 is of course implemented in PHP, which carries its own performance overhead and is not E_STRICT compliant due to the PHP4 compatibility.</p>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 06:19:04 +0000</pubDate>
    <dc:creator>Lukas Smith</dc:creator>
    <category>general</category>
  </item>

  <item>
    <title>MySQL Is back to Open Source Camp ?</title>
    <guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=399</guid>
    <link>http://www.mysqlperformanceblog.com/2008/05/13/mysql-is-back-to-open-source-camp/</link>
    <description>Looking at Kaj's  Blog Annoucement  MySQL has pulled back on the plans to release portions of the servers as close Source only. 
I am extremely happy to hear these news ! This is good for MySQL as a company, MySQL customers and MySQL users.
I'm hoping Community feedback was serious contributer to this decision, though I know there were a lot of Internal discussions as well. In any case this sends a great message to community - Speak up and you may be heard.
I also hope Marten Mickos took this decision being convinced rather than getting the order from the top as this is only one battle in &quot;what is going to be opensource&quot; war
Anyway thank you everyone who made this happen, in particularly Monty, which I know fought a lot for this.
P.S.   This is great news but I'd like to see and know more.  Looks like servers is left alone being Open Source, what is about MySQL WorkBench, MySQL Proxy Extensions, MySQL Monitoring software ?
    
    Entry posted by peter |
      2 comments
    Add to:  |  |  |  | </description>
    <content:encoded><![CDATA[<p>Looking at Kaj's  <a href="http://blogs.mysql.com/kaj/2008/05/06/mysql-server-is-open-source-even-backup-extensions/">Blog Annoucement</a>  MySQL has pulled back on the plans to release portions of the servers as close Source only. </p>
<p>I am extremely happy to hear these news ! This is good for MySQL as a company, MySQL customers and MySQL users.</p>
<p>I'm hoping Community feedback was serious contributer to this decision, though I know there were a lot of Internal discussions as well. In any case this sends a great message to community - Speak up and you may be heard.</p>
<p>I also hope Marten Mickos took this decision being convinced rather than getting the order from the top as this is only one battle in "what is going to be opensource" war</p>
<p>Anyway thank you everyone who made this happen, in particularly <a href="http://monty-says.blogspot.com/">Monty</a>, which I know fought a lot for this.</p>
<p><strong>P.S. </strong>  This is great news but I'd like to see and know more.  Looks like servers is left alone being Open Source, what is about MySQL WorkBench, MySQL Proxy Extensions, MySQL Monitoring software ?</p>
    <hr noshade style="margin:0;height:1px" />
    <p>Entry posted by peter |
      <a href="http://www.mysqlperformanceblog.com/2008/05/13/mysql-is-back-to-open-source-camp/#comments">2 comments</a></p>
    <p>Add to: <a href="http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2008/05/13/mysql-is-back-to-open-source-camp/&amp;title=MySQL Is back to Open Source Camp ?" title="Bookmark this post on del.icio.us"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png" alt="delicious" /></a> | <a href="http://digg.com/submit?phase=2&amp;url=http://www.mysqlperformanceblog.com/2008/05/13/mysql-is-back-to-open-source-camp/&amp;title=MySQL Is back to Open Source Camp ?" title="Digg this post on Digg.com"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png" alt="digg" /></a> | <a href="http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2008/05/13/mysql-is-back-to-open-source-camp/&amp;title=MySQL Is back to Open Source Camp ?" title="Submit this post on reddit.com"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png" alt="reddit" /></a> | <a href="http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2008/05/13/mysql-is-back-to-open-source-camp/&amp;T=MySQL Is back to Open Source Camp ?" title="Vote for this article on Netscape"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif" alt="netscape" /></a> | <a href="http://www.google.com/bookmarks/mark?op=add&amp;bkmk=http://www.mysqlperformanceblog.com/2008/05/13/mysql-is-back-to-open-source-camp/&amp;title=MySQL Is back to Open Source Camp ?" title="Add to Google Bookmarks"><img src="http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png" alt="Google Bookmarks" /></a></p>]]></content:encoded>
    <pubDate>Wed, 14 May 2008 06:11:45 +0000</pubDate>
    <dc:creator>MySQL Performance Blog</dc:creator>
  </item>

  <item>
    <title>JavaFX as Rich Internet Application Platform</title>
    <guid isPermaLink="false">http://blogs.sun.com/jonathan/entry/rocking_the_free_world</guid>
    <link>http://blogs.sun.com/jonathan/entry/rocking_the_free_world</link>
    <description>
JavaOne wrapped up on Friday. We hosted individuals from across the globe, and from every industry: consumer electronics and gaming, to enterprise IT, space exploration, factory automation, the automotive industry, academia - like the network itself, Java delivers something for nearly everyone, everywhere.




This year's biggest announcements centered around Java's role in the future of rich internet applications (or RIA's). What's a rich internet application? It depends on your perspective - from mine, it's any network connected application that persists in front of a user, typically outside a browser, that can operate when disconnected from the network.

On the one hand, I'd claim Java's always been a RIA platform - before the world really wanted one. Early Java applets delivered interactivity, but at the expense of development complexity and, in the early days, performance - when a browser, and more recently Javascript, would suffice.

But browser based applications are hitting complexity and performance limits, and content owners are striving for higher levels of engagement (via high definition video, or advanced interactivity). Developers are demanding something new - the browser's a wonderfully accessible progr