<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet OSDB</title>
	<link>http://www.planetosdb.org</link>
	<language>en</language>
	<description>Planet OSDB - http://www.planetosdb.org</description>

<item>
	<title>Planet MySQL: PDO: Learn how the PDO SQL parser causes bug reports</title>
	<guid>http://blog.ulf-wendel.de/?p=191</guid>
	<link>http://blog.ulf-wendel.de/?p=191</link>
	<description>&lt;p&gt;
The PDO SQL parser causes many bugs. All drivers suffer from it. By default the parser replaces placeholder with &lt;code&gt;'&amp;lt;bound_value&amp;gt;'&lt;/code&gt;.&lt;code&gt;'&amp;lt;bound_value&amp;gt;'&lt;/code&gt; is a string.  This can clash with the SQL syntax. PDO can make an &lt;code&gt;INSERT&lt;/code&gt; fail. Please learn why and stop reporting bogus bugs.
&lt;/p&gt;
	&lt;h3&gt;Why does PDO parse my SQL commands?&lt;/h3&gt;
	&lt;p&gt;
PDO has chosen Prepared Statements as its preferred way of running database queries. The entire API is build around prepared statements. &lt;a href=&quot;http://netevil.org/&quot;&gt;Wez&lt;/a&gt; has explained that primarily security considerations have caused this decision. Read &lt;a href=&quot;http://blog.ulf-wendel.de/?p=187&quot;&gt;PDO_MYSQLND: Prepared Statements, again&lt;/a&gt; for a discussion of prepared statements in the context of PDO.
&lt;/p&gt;
	&lt;p&gt;
Not every database system supports prepared statements. And those who do use a different syntax for placeholder. Some systems support named parameters (&lt;code&gt;SELECT * FROM test WHERE id = :name&lt;/code&gt;), some support positional/ordinal parameter  (&lt;code&gt;SELECT * FROM test WHERE id = ?&lt;/code&gt;) and some support both. The cause of the differences is the lack of a standard. PDO tries to hide the differences from the user. This is done by a prepared statement emulation. The emulation includes a SQL parser which allows you to use whatever format you prefer for placeholder. If the underlying database system does not support the placeholder format you have chosen, PDO emulates it for you.
&lt;/p&gt;
	&lt;p&gt;
In many cases the emulation works flawless. But the bug databases on &lt;a href=&quot;http://www.planetmysql.org/bugs.php.net&quot;&gt;bugs.php.net&lt;/a&gt; and &lt;a href=&quot;http://www.planetmysql.org/pecl.php.net&quot;&gt;pecl.php.net&lt;/a&gt; show plenty of reports that boil down to the PDO SQL parser. Please learn how the SQL parser works. This should help avoiding duplicates in the bug database.
&lt;/p&gt;
	&lt;p&gt;&lt;/p&gt;
	&lt;p&gt;(...)&lt;br /&gt;Read the rest of &lt;a href=&quot;http://blog.ulf-wendel.de/?p=191&quot;&gt;PDO: Learn how the PDO SQL parser causes bug reports&lt;/a&gt; (1,030 words)&lt;/p&gt;</description>
	<pubDate>Thu, 03 Jul 2008 20:41:05 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Notable no-shows at SourceForge.net Community Choice Award finals</title>
	<guid>http://weblog.infoworld.com/openresource/archives/2008/07/notable_noshows.html</guid>
	<link>http://weblog.infoworld.com/openresource/archives/2008/07/notable_noshows.html?source=rss</link>
	<description>Maybe I shouldn't be surprised, but not a single project from Microsoft's Codeplex made it to the finals of the SourceForge.net Community Choice Awards (CCAs). When Microsoft was announced as a sponsor, the press release highlighted that the CCAs would welcome any project nomination, including projects hosted at Codeplex. Most of you know that Codeplex is the home for open source projects predominately targeted at Microsoft environments. Maybe the news of the CCA nomination process didn't reach the Codeplex user community as this was the first year that the CCAs were opened to projects regardless of their home? Also, I'm... &lt;a href=&quot;http://weblog.infoworld.com/openresource/archives/2008/07/notable_noshows.html?source=rss&quot;&gt; READ MORE&lt;/a&gt;</description>
	<pubDate>Thu, 03 Jul 2008 20:06:58 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: MySQL support fun, multiplication</title>
	<guid>http://dammit.lt/?p=170</guid>
	<link>http://dammit.lt/2008/07/03/mysql-support-fun-multiplication/</link>
	<description>&lt;p&gt;There was a question how to do an aggregate multiplication in MySQL. MySQL does not provide such functionality, so we were looking at various workarounds. &lt;/p&gt;
&lt;p&gt;We discussed &lt;a href=&quot;http://dev.mysql.com/doc/refman/5.0/en/adding-functions.html&quot;&gt;UDF interface&lt;/a&gt; that allows to construct custom aggregates, also did look at &lt;code&gt;@a:=@a*field&lt;/code&gt; hack, and how different initializers have &lt;a href=&quot;http://p.defau.lt/?emXcIpQxvnTaz11rr78J3w&quot;&gt;results wrapped differently&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;Then Scott killed our discussion with this simple query: &lt;/p&gt;
&lt;pre&gt;select exp(sum(log(c)))&lt;/pre&gt;
&lt;p&gt;Of course, thats nice mathematical approach to solve the multiplication issue with just SUM() at hands, but while we were still in awe, Scott explained it with this wit:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
The Great Flood is over, and as the animals are departing 3&amp;#215;3, Noah is blessing each, saying &amp;#8220;Go forth, be fruitful and multiply.&amp;#8221; Two snakes come down the ramp and say to Noah, &amp;#8220;We can&amp;#8217;t. We&amp;#8217;re adders.&amp;#8221;&lt;/p&gt;
&lt;p&gt;Noah groans and says, &amp;#8220;That&amp;#8217;s the worst pun I&amp;#8217;ve heard in 40 days and nights. Go sit in that pile of sticks until I can deal with you!&amp;#8221;&lt;/p&gt;
&lt;p&gt;After mucking out the ark, Noah returns to the sticks and lifts them up, to find baby snakes everywhere.  &amp;#8220;What happened?&amp;#8221; he asks. &amp;#8220;I thought you were having problems!&amp;#8221;&lt;/p&gt;
&lt;p&gt;The snakes reply, &amp;#8220;Even adders can multiply with logs.&amp;#8221;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;:-)&lt;/p&gt;</description>
	<pubDate>Thu, 03 Jul 2008 19:45:08 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: How to load large files safely into InnoDB with LOAD DATA INFILE</title>
	<guid>http://www.mysqlperformanceblog.com/?p=424</guid>
	<link>http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/</link>
	<description>&lt;p&gt;Recently I had a customer ask me about loading two huge files into InnoDB with LOAD DATA INFILE. The goal was to load this data on many servers without putting it into the binary log.  While this is generally a fast way to load data (especially if you disable unique key checks and foreign key checks), I recommended against this.  There are several problems with the very large transaction caused by the single statement.  We didn't want to split the file into pieces for the load for various reasons.  However, I found a way to load the single file in chunks as though it were many small files, which avoided splitting the file and let us load with many transactions instead of one huge transaction.&lt;/p&gt;
&lt;p&gt;The smaller file is 4.1GB and has 260M lines in it; each row is just two bigints.  The bigger file was about 20GB and had wider rows with textual data and about 60M lines (as I recall).&lt;/p&gt;
&lt;p&gt;When InnoDB loads the file, it creates one big transaction with a lot of undo log entries.  This has a lot of costs.  To name a few:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the big LOAD DATA INFILE clogs the binary log and slows replication down.  If the load takes 4 hours on the master, it will cause the slave to fall 4 hours behind.  &lt;/li&gt;
&lt;li&gt;lots of undo log entries collect in the tablespace.  Not only from the load -- but from other transactions' changes too; the purge thread cannot purge them, so everything gets bloated and slow.  Even simple SELECT queries might have to scan through lots of obsolete, but not-yet-purged, row versions.  Later, the purge thread will have to clean these up.  This is how you make InnoDB behave like PostgreSQL &lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/li&gt;
&lt;li&gt;If the undo log space grows really big, it won't fit in the buffer pool and InnoDB essentially starts swapping between its buffer pool and the tablespace on disk.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most seriously, if something should happen and the load needs to roll back, it will take a Very Long Time to do -- I hate to think how long.  I'm sure it would be faster to just shut everything down and re-clone the machine from another, which takes about 10 or 12 hours.  InnoDB is not optimized for rollbacks, it's optimized for transactions that succeed and commit.  Rollback can take an order of magnitude longer to do.&lt;/p&gt;
&lt;p&gt;For that reason, we decided to load the file in chunks of a million rows each.  (InnoDB internally does operations such as ALTER TABLE in 10k row chunks, by the way; I chose 1M because the rows were small).  But how to do this without splitting the file?  The answer lies in the Unix fifo.  I created a script that reads lines out of the huge file and prints them to a fifo.  Then we could use LOAD DATA INFILE on the fifo.  Every million lines, the script prints an EOF character to the fifo, closes it and removes it, then re-creates it and keeps printing more lines.  If you 'cat' the fifo file, you get a million lines at a time from it.  The code is pretty simple and I've included it in &lt;a href=&quot;http://www.maatkit.org/&quot;&gt;Maatkit&lt;/a&gt; just for fun.  (It's unreleased as of yet, but you can get it with the following command: &quot;wget http://www.maatkit.org/trunk/fifo&quot;).&lt;/p&gt;
&lt;p&gt;So how did it work?  Did it speed up the load?&lt;/p&gt;
&lt;p&gt;Not appreciably.  There actually was a tiny speedup, but it's statistically insignificant IMO.  I tested this first on an otherwise idle machine with the same hardware as the production machines.  First, I did it in one big 4.1GB transaction, then I did it 1 million rows at a time.  Here's the CREATE TABLE:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lsql-5&quot;&gt;&lt;a href=&quot;http://www.planetmysql.org/rss20.xml&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;SQL:&lt;/span&gt;
&lt;div id=&quot;sql-5&quot;&gt;
&lt;div class=&quot;sql&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;CREATE&lt;/span&gt; &lt;span&gt;TABLE&lt;/span&gt; load_test &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;col1 bigint&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;NOT&lt;/span&gt; &lt;span&gt;NULL&lt;/span&gt;,&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;col2 bigint&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;20&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;DEFAULT&lt;/span&gt; &lt;span&gt;NULL&lt;/span&gt;,&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;KEY&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;col1&lt;span&gt;&amp;#41;&lt;/span&gt;,&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;KEY&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;col2&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; ENGINE=InnoDB &lt;span&gt;DEFAULT&lt;/span&gt; CHARSET=utf8 &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Here's the result of loading the entire 4GB file in one chunk:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-6&quot;&gt;&lt;a href=&quot;http://www.planetmysql.org/rss20.xml&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-6&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;time mysql -e &lt;span&gt;&quot;set foreign_key_checks=0; set sql_log_bin=0; set unique_checks=0; load data local infile 'infile.txt' into table load_test fields terminated by '&lt;span&gt;\t&lt;/span&gt;' lines terminated by '&lt;span&gt;\n&lt;/span&gt;' (col1, col2);&quot;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;real 234m53.228s&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;user 0m1.098s&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;sys 0m5.959s &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;While this ran, I captured vmstat output every 5 seconds and logged it to a file; I also captured the output of &quot;mysqladmin ext -ri5 | grep Handler_write&quot; and logged that to a file.&lt;/p&gt;
&lt;p&gt;To load the file in chunks, I split my &lt;a href=&quot;http://www.gnu.org/software/screen/&quot;&gt;screen&lt;/a&gt; session in two and then ran (approximately -- edited for clarity) the following in one terminal:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-7&quot;&gt;&lt;a href=&quot;http://www.planetmysql.org/rss20.xml&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-7&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;perl mk-fifo-split infile.&lt;span&gt;txt&lt;/span&gt; --fifo /tmp/my-fifo --lines &lt;span&gt;1000000&lt;/span&gt; &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;And this in the other terminal:&lt;/p&gt;
&lt;div class=&quot;igBar&quot;&gt;&lt;span id=&quot;lcode-8&quot;&gt;&lt;a href=&quot;http://www.planetmysql.org/rss20.xml&quot;&gt;PLAIN TEXT&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;syntax_hilite&quot;&gt;&lt;span class=&quot;langName&quot;&gt;CODE:&lt;/span&gt;
&lt;div id=&quot;code-8&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;div&gt;while &lt;span&gt;&amp;#91;&lt;/span&gt; -e /tmp/my-fifo &lt;span&gt;&amp;#93;&lt;/span&gt;; do&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp;mysql -e &lt;span&gt;&quot;..... same as above.... &quot;&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;&amp;nbsp; &amp;nbsp;sleep &lt;span&gt;1&lt;/span&gt;;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;done &lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;After I was done, I ran a quick Perl script on the vmstat and mysqladmin log files to grab out the disk activity and rows-per-second to see what the progress was.  Here are some graphs. This one is the rows per second from mysqladmin, and the blocks written out per second from vmstat.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/uploads/2008/07/rows_and_io.png&quot; alt=&quot;Rows per second and blocks written out per second&quot; title=&quot;rows_and_io&quot; width=&quot;718&quot; height=&quot;516&quot; class=&quot;alignnone size-full wp-image-428&quot; /&gt;&lt;/p&gt;
&lt;p&gt;And this one is the bytes/sec from Cacti running against this machine.  This is only the bytes out per second; for some reason Cacti didn't seem to be capturing the bytes in per second.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/uploads/2008/07/cacti.png&quot; alt=&quot;Cacti graph while loading file&quot; title=&quot;cacti&quot; width=&quot;386&quot; height=&quot;152&quot; class=&quot;alignnone size-full wp-image-427&quot; /&gt;&lt;/p&gt;
&lt;p&gt;You can see how the curves are roughly logarithmic, which is what you should expect for B-Tree indexes.  The two curves on the Cacti graph actually show both files being loaded.  It might seem counter-intuitive, but the second (smaller) curve is actually the larger file.  It has fewer rows and that's why it causes less I/O overall.&lt;/p&gt;
&lt;p&gt;I also used 'time' to run the Perl fifo script, and it used a few minutes of CPU time during the loads.  So not very much at all.&lt;/p&gt;
&lt;p&gt;Some interesting things to note: the load was probably mostly CPU-bound.  vmstat showed from 1% to 3% I/O wait during this time.  (I didn't think to use iostat to see how much the device was actually used, so this isn't a scientific measurement of how much the load was really waiting for I/O).  The single-file load showed about 1 or 2 percent higher I/O wait, and you can see the single-file load uses more blocks per row; I can only speculate that this is the undo log entries being written to disk.  (Peter arrived at the same guess independently.)&lt;/p&gt;
&lt;p&gt;Unfortunately I didn't think to log the &quot;cool-down period&quot; after the load ended.  It would be fun to see that.  Cacti seemed to show no cool-down period -- as soon as the load was done it looked like things went back to normal.  I suspect that's not completely true, since the buffer pool must have been overly full with this table's data.&lt;/p&gt;
&lt;p&gt;Next time I do something like this I'll try smaller chunks, such as 10k rows; and I'll try to collect more stats.  It would also be interesting to try this on an I/O-bound server and see what the performance impact is, especially on other transactions running at the same time.&lt;/p&gt;
    &lt;hr noshade=&quot;noshade&quot; /&gt;
    &lt;p&gt;Entry posted by Baron Schwartz |
      &lt;a href=&quot;http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/#comments&quot;&gt;One comment&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;Add to: &lt;a href=&quot;http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/&amp;amp;title=How to load large files safely into InnoDB with LOAD DATA INFILE&quot; title=&quot;Bookmark this post on del.icio.us&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png&quot; alt=&quot;delicious&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/&amp;amp;title=How to load large files safely into InnoDB with LOAD DATA INFILE&quot; title=&quot;Digg this post on Digg.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png&quot; alt=&quot;digg&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/&amp;amp;title=How to load large files safely into InnoDB with LOAD DATA INFILE&quot; title=&quot;Submit this post on reddit.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png&quot; alt=&quot;reddit&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/&amp;amp;T=How to load large files safely into InnoDB with LOAD DATA INFILE&quot; title=&quot;Vote for this article on Netscape&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif&quot; alt=&quot;netscape&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.google.com/bookmarks/mark?op=add&amp;amp;bkmk=http://www.mysqlperformanceblog.com/2008/07/03/how-to-load-large-files-safely-into-innodb-with-load-data-infile/&amp;amp;title=How to load large files safely into InnoDB with LOAD DATA INFILE&quot; title=&quot;Add to Google Bookmarks&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png&quot; alt=&quot;Google Bookmarks&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 03 Jul 2008 19:23:27 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: JBoss plays the choice card</title>
	<guid>http://weblog.infoworld.com/openresource/archives/2008/07/jboss_plays_the.html</guid>
	<link>http://weblog.infoworld.com/openresource/archives/2008/07/jboss_plays_the.html?source=rss</link>
	<description>News from Sacha (and covered by InfoWorld) that JBoss Application Server 5.0 is close to GA kicked off a debate at TSS. Some commented that they were &quot;Suspicious of anything that takes three years to develop,&quot; while others questioned if there was anything new in JBoss AS5 that SpringSource and GlassFish (or for that matter Apache Geronimo) hadn't already delivered. Others congratulated JBoss on closing in on JEE5 certification and refactoring their runtime to be more flexible. What caught my attention is the way that Sacha (JBoss CTO) responded to two comments from Douglas Dooley. When Douglas suggested that JBoss... &lt;a href=&quot;http://weblog.infoworld.com/openresource/archives/2008/07/jboss_plays_the.html?source=rss&quot;&gt; READ MORE&lt;/a&gt;</description>
	<pubDate>Thu, 03 Jul 2008 18:45:53 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Google, YouTube, Data</title>
	<guid>http://krow.livejournal.com/601930.html</guid>
	<link>http://krow.livejournal.com/601930.html</link>
	<description>While reading my RSS feeds this morning I picked up this:&lt;br /&gt;&lt;a href=&quot;http://tech.slashdot.org/article.pl?sid=08/07/03/121221&amp;amp;from=rss&quot;&gt;YouTube Must Give All User Histories To Viacom&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After &lt;a href=&quot;http://slashdot.org/yro/01/03/16/1256226.shtml&quot;&gt;Scientology's DMCA request on Slashdot&lt;/a&gt; we made an active choice to squash data on users to limit the possibility of this sort of request. We randomized incoming trackable data on users and tossed everything but aggregate data for long term storage.&lt;br /&gt;&lt;br /&gt;Why?&lt;br /&gt;&lt;br /&gt;For one, we simply did not need to keep terabytes of log data sitting around collecting dust. Secondly, while the data might be useful for determining trends we risked our user's privacy. We believed this was unacceptable. One court request and we could be handing over who knows what to any company that could find an uneducated judge to sign away the privacy of millions. The data was just not that valuable.&lt;br /&gt;&lt;br /&gt;What would I like to see?&lt;br /&gt;&lt;br /&gt;Sites handing control of data retention over to users.&lt;br /&gt;&lt;br /&gt;It would be good to see more sites give users the opportunity to have their tracking information removed after a period of time from companies databases.&lt;br /&gt;&lt;br /&gt;We could start a trend by having websites publish data  retention policies .&lt;br /&gt;&lt;br /&gt;So what would it take to make this happen? Would peer pressure work? I am not in favor of creating more laws.&lt;br /&gt;&lt;br /&gt;What if we petition sites to make steps in this direction. A few at a time, with a goal of long term of putting peer pressure on sites that do not follow the lead of user privacy oriented sites.&lt;br /&gt;&lt;br /&gt;Is this too much too ask for?</description>
	<pubDate>Thu, 03 Jul 2008 13:53:36 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: FORCE INDEX</title>
	<guid>http://arjen-lentz.livejournal.com/123383.html</guid>
	<link>http://arjen-lentz.livejournal.com/123383.html</link>
	<description>&lt;pre&gt;&lt;code&gt;SELECT ... FROM
tblProduct as prd FORCE INDEX(vProductName,iCategoryId,eProductType,vProductImage,fPrice,eProductStatus,dProductDateAdded)
LEFT OUTER JOIN (SELECT bidjoin.* FROM tblProduct as prdjoin, tblBid as bidjoin WHERE bidjoin.iProductId = prdjoin.iProductId) bid ON prd.iProductId = bid.iProductId
, tblCategory as cat FORCE INDEX(vCategoryName,eCategoryStatus,dCategoryDateAdded) 
, tblAuctionProduct as aucprd FORCE INDEX(iRequiredBids,iProductId,eAuctionType,iFreeBidLevel,fAdminFee,dDateClosed)
, tblPurchaseProduct as purprd FORCE INDEX(dProductCloseDate,iProductId,iTotalInventory,dLastUpdated)&lt;/code&gt;&lt;/pre&gt;I know, unreadable. But the main issue today is the FORCE INDEX. This is just one query (real, with permission - I just adjusted some identifiers) from an app that is litterally full of queries using FORCE INDEX. So what does FORCE INDEX do? It forces the MySQL optimiser to use the specified index (or choose from one of the specified, if multiple), even if it reckons it's not the best choice. Likewise there's an IGNORE INDEX modifier that denies the optimiser the choice for using a specified index in a particular query.&lt;br /&gt;&lt;br /&gt;I generally hold that these modifiers should only be used for testing things and tracking down optimiser issues (not that common these days, but 3.23 had plenty that 4.0 fixed). This because when you hardcode them into an app, perhaps fixing a real problem you see *now*, your data will still change over time and so the optimiser needs the freedom to change its choices too. It might be ok for a week, a month, or even a year, but at some point it's going to cost.&lt;br /&gt;&lt;br /&gt;The above query takes about 5 times as long compared to the same query without the FORCE modifiers. Considering the app is chockers with it, I'm guessing that it might have been coded by someone who didn't know that MySQL actually has an optimiser at all. Who can say... anyway it serves here as an extreme example.&lt;br /&gt;&lt;br /&gt;The take-away message is: use these modifiers with care, and be very hesitant ever adding it to production code. There's generally always a better way to resolve whatever problem you might be observing.</description>
	<pubDate>Thu, 03 Jul 2008 11:36:22 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Memcached for MySQL Webinar: Advanced Use Cases</title>
	<guid>tag:blogger.com,1999:blog-18337119.post-1058956978924506517</guid>
	<link>http://mysqldatabaseadministration.blogspot.com/2008/07/memcached-for-mysql-webinar-advanced.html</link>
	<description>Today at 1PM EST I am presenting the second part of &lt;a href=&quot;http://www.mysql.com/news-and-events/web-seminars/display-158.html&quot;&gt;memcached for MySQL webinar&lt;/a&gt;. I was told that the registration numbers look as good as the previous one. This one will be a bit more technical than the previous webinar. Sorry for the late notice but hope you can join!</description>
	<pubDate>Thu, 03 Jul 2008 10:39:00 +0000</pubDate>
</item>
<item>
	<title>SimpleDBM: Update on SimpleDBM's Data Dictionary</title>
	<guid>tag:blogger.com,1999:blog-15425053.post-636586684038529948</guid>
	<link>http://simpledbm.blogspot.com/2008/07/update-on-simpledbms-data-dictionary.html</link>
	<description>I have chosen to implement option 3 as described in a previous &lt;a href=&quot;http://simpledbm.blogspot.com/2007/12/implementing-system-catalog-or-data.html&quot;&gt;post&lt;/a&gt;. For each table, a special container is created, which is used to store not only the table structure but also structures of all associated indexes. Special containers are created for indexes as well but these contain pointers to the table structures. (The reason we need the index definition containers is that during recovery an index update may be performed prior to a table update.)&lt;br /&gt;&lt;br /&gt;A memory cache is maintained of the entire data dictionary. When a new table is created, its structure is immediately saved into the memory cache. The structure is also persisted using a PostCommitAction - which is a type of redo only log that is executed once the transaction commits.&lt;br /&gt;&lt;br /&gt;At system restart, the storage system is scanned for containers that have a specific naming convention and are in a well known location. This way, SimpleDBM is able to initialize the memory cache at startup. Note that this initialization occurs post recovery. The list of open containers is consulted to ensure that only those definitions are loaded that are relevant.&lt;br /&gt;&lt;br /&gt;There is a problem that during recovery, any redo/undo operation on a table or index will require access to the table/index definition. Since the data dictionary memory cache is not available at this stage - it is populated after recovery, the solution is to retrieve the definitions on demand.&lt;br /&gt;&lt;br /&gt;The table/index creation process uses a standalone transaction. During this time the container IDs are exclusively locked. This ensures that by the time any subsequent transaction performs a data manipulation operation against the table, the data dictionary memory cache has been updated to contain the table definition.&lt;br /&gt;&lt;br /&gt;At present tables cannot be dropped, as this has not yet been implemented.&lt;br /&gt;&lt;br /&gt;Along with the Data Dictionary implementation, there is also a high level Database API that is available. This hasn't been released yet as it is still being tested. I am hoping that a fully tested version will be available towards the later part of this year.</description>
	<pubDate>Thu, 03 Jul 2008 09:05:11 +0000</pubDate>
	<author>noreply@blogger.com (Dibyendu)</author>
</item>
<item>
	<title>Planet MySQL: PDO_MYSQLND: Calling Stored Procedures works fine with mysqlnd</title>
	<guid>http://blog.ulf-wendel.de/?p=189</guid>
	<link>http://blog.ulf-wendel.de/?p=189</link>
	<description>&lt;p&gt;
Mike is asking &lt;cite&gt;I`m hoping that MySQL stored procedures will work properly. Especially multiple calls in one request.&lt;/cite&gt; in reply to &lt;a href=&quot;http://blog.ulf-wendel.de/?p=188&quot;&gt;PDO_MYSQLND: R[a|u]mbling and a breeze of progress&lt;/a&gt;. Mike, it depends what you mean by &amp;quot;properly&amp;quot;. If you use the API properly it works fine with mysqlnd. Read on for code examples.&lt;/p&gt;
	&lt;table cellspacing=&quot;2&quot; cellpadding=&quot;2&quot;&gt;
	&lt;tr&gt;
	&lt;th&gt;&amp;nbsp;&lt;/th&gt;
	&lt;th align=&quot;center&quot; valign=&quot;top&quot; colspan=&quot;2&quot;&gt;mysqlnd&lt;/th&gt;
	&lt;th align=&quot;center&quot; valign=&quot;top&quot; colspan=&quot;2&quot;&gt;libmysql&lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
	&lt;th&gt;&amp;nbsp;&lt;/th&gt;
	&lt;th align=&quot;center&quot; valign=&quot;top&quot;&gt;Emulated PS&lt;/th&gt;
	&lt;th align=&quot;center&quot; valign=&quot;top&quot;&gt;Native PS&lt;/th&gt;
	&lt;th align=&quot;center&quot; valign=&quot;top&quot;&gt;Emulated PS&lt;/th&gt;
	&lt;th align=&quot;center&quot; valign=&quot;top&quot;&gt;Native PS&lt;/th&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
	&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;buffered fetch&lt;/td&gt;
	&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;PASS&lt;/td&gt;
	&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;PASS&lt;/td&gt;
	&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;PASS*&lt;/td&gt;
	&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;PASS*&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
	&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;unbuffered fetch&lt;/td&gt;
	&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;PASS&lt;/td&gt;
	&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;PASS&lt;/td&gt;
	&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;PASS*&lt;/td&gt;
	&lt;td align=&quot;left&quot; valign=&quot;top&quot;&gt;PASS*&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
	&lt;td colspan=&quot;3&quot;&gt;&amp;nbsp;&lt;/td&gt;
	&lt;td colspan=&quot;2&quot;&gt;* See below!&lt;/td&gt;
&lt;/tr&gt;
	&lt;/table&gt;
	&lt;h3&gt;Executing a basic stored procedure twice&lt;/h3&gt;
	&lt;p&gt;
Code take from the internal test &lt;code&gt;pdo_mysql_attr_oracle_nulls.phpt&lt;/code&gt;. Status: PASS. NOTE the use of &lt;code&gt;$stmt-&amp;gt;nextRowset()&lt;/code&gt;. If you do not call &lt;code&gt;$stmt-&amp;gt;nextRowset()&lt;/code&gt; in a loop to fetch all result sets you will get the usual 2014 error. MySQLs Stored Procedures always return n (here: 1) result sets for the actual data followed by another result set with the status code. You must use &lt;code&gt;PDOStatement::nextRowset()&lt;/code&gt; to fetch them.
&lt;/p&gt;
	&lt;p&gt;&lt;/p&gt;
	&lt;p&gt;(...)&lt;br /&gt;Read the rest of &lt;a href=&quot;http://blog.ulf-wendel.de/?p=189&quot;&gt;PDO_MYSQLND: Calling Stored Procedures works fine with mysqlnd&lt;/a&gt; (673 words)&lt;/p&gt;</description>
	<pubDate>Thu, 03 Jul 2008 08:21:57 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Two Tech Jobs: Technology Evangelist and Network Operations</title>
	<guid>http://www.planetmysql.org/10405@http://jeremy.zawodny.com/blog/</guid>
	<link>http://feeds.zawodny.com/~r/jzawodn/rss2/~3/325471132/010405.html</link>
	<description>I've been getting lots of inquiries from recruiters recently looking to find good people for various tech companies.  Two in particular might be interesting if you're in the market or know someone who is.

&lt;h4&gt;Technology Evangelist at New York City Based Startup&lt;/h4&gt;

&lt;p&gt;If you saw Fred Wilson's post &lt;a href=&quot;http://avc.blogs.com/a_vc/2008/06/are-you-a-conne.html&quot;&gt;Are You A Connector?&lt;/a&gt;, you know a bit about this job already.  It's a NYC based startup developing a new platform in an area that's likely to see serious growth in the next few years.&lt;/p&gt;

&lt;p&gt;They're looking for someone with coding experience who loves showing other developers and users how stuff works: on stage, via blogs, in screencasts, and so on.  It's important that this person have a technical (programming) background and also be very comfortable getting in front of people to demo and speak.&lt;/p&gt;

&lt;p&gt;The company is New York based and this job is too.  However, I'm told that a Bay Area candidate may work as well, since a presence here will be important.  Otherwise, I'm sure that frequent travel to the Bay Area will be part of the gig.&lt;/p&gt;

&lt;p&gt;The company is still a bit stealthy but more information will be forthcoming soon.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;mailto:Jeremy@Zawodny.com&quot;&gt;Ping me&lt;/a&gt; if you're interested and I'll put you in touch.&lt;/p&gt;

&lt;h4&gt;Network/Systems Administrator at Rapleaf in San Francisco&lt;/h4&gt;

&lt;p&gt;The folks at &lt;a href=&quot;http://www.rapleaf.com/&quot;&gt;Rapleaf&lt;/a&gt; ping me from time to time looking for talented engineers too.  Here's the description of the position they're currently hiring for.&lt;/p&gt;

&lt;blockquote&gt;Rapleaf is a well-funded San Francisco startup (we’re currently at 15 people). We gather publicly available information from the social web on hundreds of millions of people to enable developers and companies to give their consumers a better user experience. Rapleaf has built the largest portable social graph in the world. We provide rich insight on customers for clients such as retailers, airlines, hotel chains, social networks, lead gen firms, telcos, political campaigns, financial services, and more (these companies learn about their consumers in order to give them a better user experience).  The company has processed over 175 million unique searches for businesses and consumers. &lt;/blockquote&gt;

&lt;blockquote&gt;You will maintain Rapleaf’s entire infrastructure and enhance the system to do great things as we’re on the trajectory to change the world.  Helping grow one of the largest and most complex databases for a small start-up.   &lt;/blockquote&gt;

&lt;blockquote&gt;

&lt;p&gt;Role:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manage all Rapleaf servers (Linux – CentOS, Redhat), backups, web servers (Apache clusters)&lt;/li&gt;
&lt;li&gt;Manage relationship with hosting provider and hardware vendors&lt;/li&gt;
&lt;li&gt;Scalability and expansion (Hadoop)&lt;/li&gt;
&lt;li&gt;Systems administration (DNS,LDAP,NFS,TCP/IP,SELinux)&lt;/li&gt;
&lt;li&gt;Some scripting (Shell, Ruby, Python, or Perl)&lt;/li&gt;
&lt;li&gt;Administer MySQL databases (multi-master replication, snapshot backups)&lt;/li&gt;
&lt;li&gt;Learn how to scale with Ruby on Rails&lt;/li&gt;
&lt;li&gt;Manage complex Java systems&lt;/li&gt;
&lt;li&gt;Manage billions of data items of pages being served&lt;/li&gt;
&lt;li&gt;On-call duty&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;blockquote&gt;Note: this job is really hard. You’ll be working with some of the top search engineers in the world and they are going to expect that you kick ass. We’re doing things that no one has ever done before and solving problems that have been open for years.&lt;/blockquote&gt;

&lt;blockquote&gt;

&lt;p&gt;Qualifications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Master of all things Internet and Linux.&lt;/li&gt;
&lt;li&gt;Incredibly smart, can learn fast, and takes no prisoners
&lt;li&gt;Learn new platforms fast. We use Ruby on Rails and Java … you can pick this up quickly.&lt;/li&gt;
&lt;li&gt;Intensely driven and proactive person.&lt;/li&gt;
&lt;li&gt;Extremely hard working. This is a start-up - team members work long hours.&lt;/li&gt;
&lt;li&gt;Quick learner and real doer. Err on execution over strategy.&lt;/li&gt;
&lt;li&gt;Thrive on working with A-players. Too good to spend long hours with B-players.&lt;/li&gt;
&lt;li&gt;Likeable person who garners respect on and off the job.&lt;/li&gt;
&lt;li&gt;Thrive on chaos, risk, and uncertainty.&lt;/li&gt;
&lt;li&gt;Should be easy to get along with, nice, fun, smart, ethical, and low-maintenance.&lt;/li&gt;
&lt;li&gt;Strong desire to build a more ethical society.&lt;/li&gt;
&lt;li&gt;Desire to be an early employee and want to be a real owner in Rapleaf’s future.&lt;/li&gt;
&lt;li&gt;Want to work with extremely large datasets and indirectly build portable APIs that thousands of other companies can build applications on top of.&lt;/li&gt;
&lt;li&gt;Ability to lift and install servers (50 lbs)&lt;/li&gt;
&lt;li&gt;Should want to live in or near San Francisco (relocation available if necessary)&lt;/li&gt;
&lt;/li&gt;&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;blockquote&gt;

&lt;p&gt;Perks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Good salary/stock compensation.&lt;/li&gt;
&lt;li&gt;Personal MacBook Pro or Linux based machine&lt;/li&gt;
&lt;li&gt;Medical insurance, 401k.&lt;/li&gt;
&lt;li&gt;Kitchen stocked with food&lt;/li&gt;
&lt;li&gt;Work with some of the smartest engineers&lt;/li&gt;
&lt;li&gt;Contribute to the Rapleaf Dev blog (http://blog.rapleaf.com/dev/)&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;

&lt;p&gt;Again, &lt;a href=&quot;mailto:Jeremy@Zawodny.com&quot;&gt;ping me&lt;/a&gt; if you're interested or know someone who might be.  I'll make an introduction for you.&lt;/p&gt;


 &lt;p&gt;(&lt;a href=&quot;http://jeremy.zawodny.com/blog/archives/010405.html#comments&quot;&gt;comments&lt;/a&gt;)&lt;/p&gt;&lt;img src=&quot;http://feeds.zawodny.com/~r/jzawodn/rss2/~4/325471132&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Thu, 03 Jul 2008 05:16:05 +0000</pubDate>
</item>
<item>
	<title>Planet PostgreSQL: Kenny Gorman: Python script showing PostgreSQL objects in linux memory: pg_osmem.py</title>
	<guid>http://www.kennygorman.com/wordpress/?p=250</guid>
	<link>http://www.kennygorman.com/wordpress/?p=250</link>
	<description>&lt;p&gt;I got some email and comments about the code I used for &lt;a href=&quot;http://www.kennygorman.com/wordpress/?p=246&quot;&gt;my post&lt;/a&gt;; &lt;i&gt;Mapping Linux memory for PostgreSQL using fincore&lt;/i&gt; so I thought I would post the code I am using.  Nothing too fancy here, it needs a config file and some more bits.  I highly recommend someone do this in perl vs python and incorporate fincore as a module instead.  I used &lt;a href=&quot;http://www.initd.org/svn/psycopg/&quot;&gt;psycopg2&lt;/a&gt;, other than that, all the other modules are stock with python &lt;a href=&quot;http://www.python.org/&quot;&gt;2.5.2&lt;/a&gt;. If someone wants to show me how to query the data directory PostgreSQL is currently using and incorporate that into the script vs the static string: mydir   = &amp;#8220;/data/mydb/base&amp;#8221;, that would be great.  In order to use this script, you must change the variables for fincore, and mydir below.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;python&quot;&gt;&amp;nbsp;
&lt;span&gt;#!/home/postgres/python/bin/python&lt;/span&gt;
&lt;span&gt;#&lt;/span&gt;
&lt;span&gt;# script to find show memory usage of PG buffers in OS cache&lt;/span&gt;
&lt;span&gt;# 2008 kcg&lt;/span&gt;
&lt;span&gt;#&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;os&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; psycopg2
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;commands&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;re&lt;/span&gt;
&lt;span&gt;import&lt;/span&gt; &lt;span&gt;sys&lt;/span&gt;
&lt;span&gt;from&lt;/span&gt; &lt;span&gt;optparse&lt;/span&gt; &lt;span&gt;import&lt;/span&gt; OptionParser
&amp;nbsp;
&lt;span&gt;parser&lt;/span&gt; = OptionParser&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;parser&lt;/span&gt;.&lt;span&gt;add_option&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;-u&amp;quot;&lt;/span&gt;,&lt;span&gt;&amp;quot;--username&amp;quot;&lt;/span&gt;,dest=&lt;span&gt;&amp;quot;username&amp;quot;&lt;/span&gt;,&lt;span&gt;help&lt;/span&gt;=&lt;span&gt;&amp;quot;username for PostgreSQL&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;parser&lt;/span&gt;.&lt;span&gt;add_option&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;-m&amp;quot;&lt;/span&gt;,&lt;span&gt;&amp;quot;--machine&amp;quot;&lt;/span&gt;,dest=&lt;span&gt;&amp;quot;machine&amp;quot;&lt;/span&gt;,&lt;span&gt;help&lt;/span&gt;=&lt;span&gt;&amp;quot;machine to connect to.. aka: hostname&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;parser&lt;/span&gt;.&lt;span&gt;add_option&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;-d&amp;quot;&lt;/span&gt;,&lt;span&gt;&amp;quot;--dbname&amp;quot;&lt;/span&gt;,dest=&lt;span&gt;&amp;quot;dbname&amp;quot;&lt;/span&gt;,&lt;span&gt;help&lt;/span&gt;=&lt;span&gt;&amp;quot;database name to connect to&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;parser&lt;/span&gt;.&lt;span&gt;add_option&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;quot;-p&amp;quot;&lt;/span&gt;,&lt;span&gt;&amp;quot;--password&amp;quot;&lt;/span&gt;,dest=&lt;span&gt;&amp;quot;password&amp;quot;&lt;/span&gt;,&lt;span&gt;help&lt;/span&gt;=&lt;span&gt;&amp;quot;password for PostgreSQL&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#40;&lt;/span&gt;options, args&lt;span&gt;&amp;#41;&lt;/span&gt; = &lt;span&gt;parser&lt;/span&gt;.&lt;span&gt;parse_args&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
osmem   =&lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;# change these to match actual locations&lt;/span&gt;
fincore =&lt;span&gt;&amp;quot;/home/kgorman/fincore.pl&amp;quot;&lt;/span&gt;
mydir   = &lt;span&gt;&amp;quot;/data/mydb/base&amp;quot;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;# get list of dbs on host, and return dictionary of db=oid sets&lt;/span&gt;
&lt;span&gt;def&lt;/span&gt; lookup_dbs&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;:
 dbs=&lt;span&gt;&amp;#123;&lt;/span&gt;&lt;span&gt;&amp;#125;&lt;/span&gt;
 connectstr=&lt;span&gt;&amp;quot;host=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;machine&lt;/span&gt;+&lt;span&gt;&amp;quot; dbname=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;dbname&lt;/span&gt;+&lt;span&gt;&amp;quot; user=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;username&lt;/span&gt;+&lt;span&gt;&amp;quot; port=5432 password=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;password&lt;/span&gt;
 handle=psycopg2.&lt;span&gt;connect&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;connectstr&lt;span&gt;&amp;#41;&lt;/span&gt;
 curs=handle.&lt;span&gt;cursor&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
 sql=&lt;span&gt;&amp;quot;select datname,oid from pg_database where datname = '&amp;quot;&lt;/span&gt;+options.&lt;span&gt;dbname&lt;/span&gt;+&lt;span&gt;&amp;quot;' and datname not like '%template%'&amp;quot;&lt;/span&gt;
 curs.&lt;span&gt;execute&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;sql&lt;span&gt;&amp;#41;&lt;/span&gt;
 &lt;span&gt;for&lt;/span&gt; d &lt;span&gt;in&lt;/span&gt; curs.&lt;span&gt;fetchall&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;:
   dbs&lt;span&gt;&amp;#91;&lt;/span&gt;d&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;=d&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;
 &lt;span&gt;return&lt;/span&gt; dbs
&amp;nbsp;
&lt;span&gt;# get object&lt;/span&gt;
&lt;span&gt;def&lt;/span&gt; lookup_oid&lt;span&gt;&amp;#40;&lt;/span&gt;oid,dbname&lt;span&gt;&amp;#41;&lt;/span&gt;:
 connectstr=&lt;span&gt;&amp;quot;host=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;machine&lt;/span&gt;+&lt;span&gt;&amp;quot; dbname=&amp;quot;&lt;/span&gt;+dbname+&lt;span&gt;&amp;quot; user=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;username&lt;/span&gt;+&lt;span&gt;&amp;quot; port=5432 password=&amp;quot;&lt;/span&gt;+options.&lt;span&gt;password&lt;/span&gt;
 handle=psycopg2.&lt;span&gt;connect&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;connectstr&lt;span&gt;&amp;#41;&lt;/span&gt;
 curs=handle.&lt;span&gt;cursor&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
 sql=&lt;span&gt;&amp;quot;select relname from pg_class where oid = &amp;quot;&lt;/span&gt;+oid
 curs.&lt;span&gt;execute&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;sql&lt;span&gt;&amp;#41;&lt;/span&gt;
 &lt;span&gt;for&lt;/span&gt; d &lt;span&gt;in&lt;/span&gt; curs.&lt;span&gt;fetchall&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;:
  &lt;span&gt;return&lt;/span&gt; d&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;
&amp;nbsp;
dbs=lookup_dbs&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;for&lt;/span&gt; v, i &lt;span&gt;in&lt;/span&gt; dbs.&lt;span&gt;iteritems&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;:
  &lt;span&gt;for&lt;/span&gt; ii &lt;span&gt;in&lt;/span&gt; &lt;span&gt;os&lt;/span&gt;.&lt;span&gt;listdir&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;mydir+&lt;span&gt;&amp;quot;/&amp;quot;&lt;/span&gt;+&lt;span&gt;str&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;i&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;:
     p = &lt;span&gt;re&lt;/span&gt;.&lt;span&gt;compile&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;'&lt;span&gt;\d&lt;/span&gt;'&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
     &lt;span&gt;if&lt;/span&gt; p.&lt;span&gt;match&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;ii&lt;span&gt;&amp;#41;&lt;/span&gt;:
     	&lt;span&gt;#print ii&lt;/span&gt;
        rel=lookup_oid&lt;span&gt;&amp;#40;&lt;/span&gt;ii,v&lt;span&gt;&amp;#41;&lt;/span&gt;
        fullpath=mydir+&lt;span&gt;&amp;quot;/&amp;quot;&lt;/span&gt;+&lt;span&gt;str&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;i&lt;span&gt;&amp;#41;&lt;/span&gt;+&lt;span&gt;&amp;quot;/&amp;quot;&lt;/span&gt;+ii
	&lt;span&gt;cmd&lt;/span&gt;=fincore+&lt;span&gt;&amp;quot; &amp;quot;&lt;/span&gt;+fullpath
	&lt;span&gt;#print cmd&lt;/span&gt;
	pages=&lt;span&gt;commands&lt;/span&gt;.&lt;span&gt;getstatusoutput&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;cmd&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
	&lt;span&gt;#print pages&lt;/span&gt;
	n=pages&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;.&lt;span&gt;split&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;' '&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
        size=n&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;
	&lt;span&gt;if&lt;/span&gt; p.&lt;span&gt;match&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;size&lt;span&gt;&amp;#41;&lt;/span&gt;:
           &lt;span&gt;if&lt;/span&gt; rel:
	     osmem&lt;span&gt;&amp;#91;&lt;/span&gt;v+&lt;span&gt;&amp;quot;:&amp;quot;&lt;/span&gt;+rel&lt;span&gt;&amp;#93;&lt;/span&gt;=&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;size&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;*&lt;/span&gt;&lt;span&gt;1024&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;# sort and output&lt;/span&gt;
sdata=&lt;span&gt;sorted&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;osmem.&lt;span&gt;iteritems&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;, key=&lt;span&gt;lambda&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;k,v&lt;span&gt;&amp;#41;&lt;/span&gt;: &lt;span&gt;&amp;#40;&lt;/span&gt;v,k&lt;span&gt;&amp;#41;&lt;/span&gt;, reverse=&lt;span&gt;True&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
a=&lt;span&gt;0&lt;/span&gt;
&lt;span&gt;print&lt;/span&gt; &lt;span&gt;&amp;quot;OS Cache Usage:&amp;quot;&lt;/span&gt;
&lt;span&gt;while&lt;/span&gt; a &lt;span&gt;&amp;lt;&lt;/span&gt; &lt;span&gt;len&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;sdata&lt;span&gt;&amp;#41;&lt;/span&gt;:
  &lt;span&gt;print&lt;/span&gt; sdata&lt;span&gt;&amp;#91;&lt;/span&gt;a&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;0&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;+&lt;span&gt;&amp;quot;:&amp;quot;&lt;/span&gt;+&lt;span&gt;str&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;sdata&lt;span&gt;&amp;#91;&lt;/span&gt;a&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#91;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
  a=a&lt;span&gt;+1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 03 Jul 2008 01:21:44 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: MySQL Sandbox 2.0 has been released</title>
	<guid>tag:blogger.com,1999:blog-16959946.post-86488191136908894</guid>
	<link>http://datacharmer.blogspot.com/2008/07/mysql-20-has-been-released.html</link>
	<description>&lt;table border=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;https://launchpad.net/mysql-sandbox&quot;&gt;&lt;img src=&quot;http://lh5.ggpht.com/g.maxia/SGvwmKP96jI/AAAAAAAAAMU/vkuL3g7BVYM/DolphinSandbox_2_0_300x255.jpg&quot; title=&quot;MySQL Sandbox&quot; /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;Taking advantage of &lt;a href=&quot;https://blueprints.launchpad.net/mysql-sandbox/+spec/release-sandbox-2-0/+deptree&quot;&gt;Launchpad&lt;/a&gt; excellent development services, I completed the tasks necessary to release &lt;a href=&quot;https://launchpad.net/mysql-sandbox&quot;&gt;MySQL Sandbox 2.0&lt;/a&gt;.&lt;br /&gt;So, you may ask, what's new? Quite a lot, actually:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;more intuitive script names&lt;/li&gt;&lt;li&gt;master sandbox directory&lt;/li&gt;&lt;li&gt;faster&lt;/li&gt;&lt;li&gt;supports circular replication&lt;/li&gt;&lt;li&gt;more error checking&lt;/li&gt;&lt;li&gt;includes a test suite&lt;/li&gt;&lt;li&gt;uses a default options file&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;h3&gt;more intuitive script names&lt;/h3&gt;&lt;br /&gt;One of the problem in the old sandbox was that the names of the scripts suggested some installation of the sandbox itself. This has been addressed in version 2.0. You now have the very clear names:&lt;br /&gt;&lt;pre&gt;&lt;code&gt; make_sandbox                  creates a single sandbox&lt;br /&gt;make_replication_sandbox      creates a replication sandbox&lt;br /&gt;make_multiple_sandbox         creates sandbox containing many servers&lt;br /&gt;                                of the same version&lt;br /&gt;make_multiple_custom_sandbox  creates a sandbox containing many servers&lt;br /&gt;                                of different versions&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;master sandbox directory&lt;/h3&gt;By default, MySQL Sandbox will create a directory under your home, named &quot;sandboxes&quot;, and all sandboxes will be created under that directory. In addition of making your sandboxes more organized, the master directory provides some handy scripts to deal with many sandboxes at once. You can start, stop, or send a SQL command to all the sandboxes with just one command.&lt;br /&gt;&lt;h3&gt;faster&lt;/h3&gt;The Sandbox had a few &quot;sleep&quot; instructions, to wait for the server being installed to come online. This solution was slowing down fast machines, where the server can start much faster than the standard 3 seconds I added to the sandbox, but was sometimes not enough for slower machines, where the server may take more than 3 seconds to start up, especially with replication. The new sandbox uses a loop coupled with a timeout limit. Thus, quick machines are faster, and slow machines don't fail.&lt;br /&gt;&lt;h3&gt;supports circular replication&lt;/h3&gt;Now you can create a replication ring.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;./make_replication_sandbox --topology=circular --how_many_nodes=5 VERSION&lt;br /&gt;# or&lt;br /&gt;./make_replication_sandbox --master_master VERSION&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;includes a test suite&lt;/h3&gt;If you have resources and MySQL binary tarballs at your disposal, you can stress test MySQL Sandbox (and your box!) with this test suite. For example, assuming that your 5.0.51 and 5.1.25 binaries are in $HOME/opt/mysql&lt;br /&gt;&lt;pre&gt;&lt;code&gt;./test/test_sandbox.pl --versions=5.1.51,5.1.25&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;This will create 22 sandboxes&lt;br /&gt;&lt;h3&gt;more error checking&lt;/h3&gt;This is a direct consequence of the above item. Having a test suite has made the sandbox much more robust.&lt;br /&gt;&lt;h3&gt;uses a default options file&lt;/h3&gt;There is also a default option file, where you can keep the options that you need to be executed always.&lt;br /&gt;&lt;h3&gt;Try it!&lt;/h3&gt;&lt;br /&gt;Go get the 2.0 tarball from &lt;a href=&quot;https://launchpad.net/mysql-sandbox&quot;&gt;launchpad&lt;/a&gt;. If you find any bugs, there is a very convenient &lt;a href=&quot;https://bugs.launchpad.net/mysql-sandbox&quot;&gt;bugs reporting system&lt;/a&gt;. Please use it!</description>
	<pubDate>Wed, 02 Jul 2008 23:30:00 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: db4free.net again offers latest MySQL 6.0 (compiled from source)</title>
	<guid>tag:blogger.com,1999:blog-17155656.post-8543339637119072539</guid>
	<link>http://db4free.blogspot.com/2008/07/db4freenet-again-offers-latest-mysql-60.html</link>
	<description>The &lt;a href=&quot;http://www.db4free.net&quot;&gt;db4free.net's&lt;/a&gt; MySQL 6.0 server is at the very latest state again. I have compiled the server from source, so you can test the very latest of MySQL development.&lt;br /&gt;&lt;br /&gt;Unfortunately there were some issues with the former version (6.0.4) and I didn't manage to simply upgrade the server as I used to. After upgrading, the server didn't start up with the old data directory and dumping database by database to re-import it into the new version resulted in frequent crashes. After multiple failures to do a straight update I decided to &lt;b&gt;install a fresh and empty new 6.0 server&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Now the most important question for you if you used the 6.0 server: &lt;b&gt;where did my data go&lt;/b&gt;?&lt;br /&gt;&lt;br /&gt;I left the old server up and running, but configured it to port 3308. This means, if you had data in your MySQL 6.0 database, you can still access it - here's how, if you use the default MySQL client:&lt;br /&gt;&lt;pre&gt;mysql -h db4free.net -P 3308 -u [your_username] -p[your_password] [your_database]&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I am also going to configure &lt;a href=&quot;http://www.phpmyadmin.net&quot;&gt;phpMyAdmin&lt;/a&gt; to allow you accessing the old MySQL server using it.&lt;br /&gt;&lt;br /&gt;If you want to keep your data on the 6.0 server, please migrate it to the new one (running on port 3307 as usual) as soon as possible. I will keep the old server (running 6.0.4) running for about a month.&lt;br /&gt;&lt;br /&gt;Have fun experimenting with the very latest MySQL 6.0!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;!-- 
google_ad_client = &quot;pub-7998651766700753&quot;; 
google_ad_width = 468; 
google_ad_height = 60; 
google_ad_format = &quot;468x60_as&quot;; 
google_ad_type = &quot;text&quot;; 
google_ad_channel =&quot;&quot;; 
google_color_border = &quot;336699&quot;; 
google_color_bg = &quot;FFFFFF&quot;; 
google_color_link = &quot;336699&quot;; 
google_color_url = &quot;FF6600&quot;; 
google_color_text = &quot;000000&quot;; 
//--&gt; 

&lt;/div&gt;</description>
	<pubDate>Wed, 02 Jul 2008 22:20:00 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Stay up to date with what's cooking@MySQL: RSS feeds galore</title>
	<guid>http://www.lenzg.org/archives/199-guid.html</guid>
	<link>http://www.lenzg.org/archives/199-Stay-up-to-date-with-whats-cookingMySQL-RSS-feeds-galore.html</link>
	<description>&lt;p&gt;&lt;img width=&quot;48&quot; hspace=&quot;5&quot; height=&quot;48&quot; border=&quot;0&quot; align=&quot;left&quot; alt=&quot;RSS Icon&quot; src=&quot;http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Feed-icon.svg/48px-Feed-icon.svg.png&quot; /&gt;Did you know that many parts of the MySQL web sites provide news and updates via &lt;a href=&quot;http://en.wikipedia.org/wiki/RSS&quot;&gt;RSS Feeds&lt;/a&gt;? &lt;a href=&quot;http://db4free.blogspot.com/&quot;&gt;Markus Popp&lt;/a&gt; from our web team did a great job on making some of these more visible by adding RSS icons to the respective pages. If you want to keep up with what's happing at MySQL, consider adding the following feeds to your feed reader:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://dev.mysql.com/downloads/rss.php&quot;&gt;New downloads on dev.mysql.com&lt;br /&gt;
    &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://dev.mysql.com/mysql.rss&quot;&gt;New DevZone articles&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.planetmysql.org/rss20.xml&quot;&gt;PlanetMySQL&lt;/a&gt; (You probably knew that one already)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://dev.mysql.com/downloads/rss.php&quot;&gt;MySQL Forge - All New Items&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://forge.mysql.com/w/index.php?title=Special:Recentchanges&amp;amp;feed=atom&quot;&gt;MySQLForge Wiki - Recent changes&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://feeds.launchpad.net/mysql/announcements.atom&quot;&gt;MySQL Announcements on Launchpad.net&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://feeds.launchpad.net/mysql/branches.atom&quot;&gt;Branch activity on Launchpad.net&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.mysql.com/training/training-rss.php&quot;&gt;New MySQL Training Courses&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.mysql.com/news-and-events/web-seminars/rss.php?webinars=live&amp;amp;language=en&quot;&gt;MySQL Live Web Seminars&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.mysql.com/news-and-events/web-seminars/rss.php?webinars=ondemand&amp;amp;language=en&quot;&gt;MySQL OnDemand Web Seminars&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://dev.mysql.com/tech-resources/quickpolls/quickpolls.rss&quot;&gt;Latest Quickpolls from MySQL AB&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.mysql.com/mysql.rss&quot;&gt;Latest Updates from MySQL AB&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.mysql.com/news-and-events/in-the-news/in-the-news.rss&quot;&gt;Latest Press Articles about MySQL AB&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;The &lt;a href=&quot;http://bugs.mysql.com/&quot;&gt;MySQL Bug database&lt;/a&gt; allows you to subscribe to the results of any search using the 'Feed' link  that can be found on the search result page.&lt;/li&gt;
    &lt;li&gt;The &lt;a href=&quot;http://forums.mysql.com/&quot;&gt;MySQL Forums&lt;/a&gt; provide an RSS feed for each forum, e.g. the &lt;a href=&quot;http://forums.mysql.com/feed.php?3,type=rss&quot;&gt;Announcements Forum&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Did I miss any? Do you know any other feed? Please let me know.&lt;/p&gt;
&lt;p&gt;RSS feed readers exist for a wide range of platforms. I personally use &lt;a href=&quot;http://akregator.kde.org/&quot;&gt;Akregator&lt;/a&gt;, which is part of the &lt;a href=&quot;http://kde.org/&quot;&gt;KDE&lt;/a&gt; Desktop environment.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 21:18:14 +0000</pubDate>
</item>
<item>
	<title>Planet PostgreSQL: Jignesh K. Shah: wal_buffers and PostgreSQL 8.3.3</title>
	<guid>http://people.planetpostgresql.org/jkshah/index.php?/archives/5-guid.html</guid>
	<link>http://people.planetpostgresql.org/jkshah/index.php?/archives/5-wal_buffers-and-PostgreSQL-8.3.3.html</link>
	<description>&lt;p&gt;Recently Felix Malinkevich joined the ISV-E Open Source Team at Sun as an Intern working on PostgreSQL &lt;a href=&quot;http://blogs.sun.com/jkshah/entry/wal_buffers_in_postgresql_8&quot;&gt;[Read More]&lt;/a&gt; &lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 21:11:20 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: PDO_MYSQLND: R[a¦u]mbling and a breeze of progress</title>
	<guid>http://blog.ulf-wendel.de/?p=188</guid>
	<link>http://blog.ulf-wendel.de/?p=188</link>
	<description>&lt;p&gt;
The modification of PDO_MYSQL to support the MySQL native driver for PHP (mysqlnd) is progressing. We are using the project title &amp;#8220;PDO_MYSQLND&amp;#8221; for the modification. The goal of PDO_MYSQLND is to provide a PDO driver for MySQL which can be compiled either against the MySQL Client Library or against the MySQL native driver for PHP. This is the same type of modification we did with ext/mysql and ext/mysqli already.
&lt;/p&gt;
	&lt;p&gt;
The use of any of the libraries is transparent for the PHP user. You may continue to use the MySQL Client Library, like you do today with PDO_MYSQL, or give mysqlnd a try. The MySQL native driver for PHP (mysqlnd) is easier to compile as its tightly integreated into the PHP internals and ships with PHP as of version PHP 5.3. In case of ext/mysql and ext/mysqli our benchmarks and first user feedback indicates that mysqlnd gives you at least the same performance of libmysql. And sometimes it is faster and more memory efficient. Read below and see my blog archive for more on mysqlnd.
&lt;/p&gt;
	&lt;h3&gt;PDO_MYSQLND test results&lt;/h3&gt;
	&lt;p&gt;
Finally, the PDO_MYSQLND test results are looking fine. On a 64bit Linux box PDO_MYSQLND compiled against &lt;b&gt;mysqlnd passes 98.8% of the tests and the code coverage is above 90%&lt;/b&gt;. When compiled against libmysql, the results are a little worse: 97.7%. In case of mysqlnd, the remaining 1.2% test failures are PDO (not driver) bugs. We are making use of the new &lt;code&gt;--XFAIL--&lt;/code&gt; feature of the PHP test tool &lt;code&gt;&lt;a href=&quot;http://qa.php.net/write-test.php&quot;&gt;run-tests.php&lt;/a&gt;&lt;/code&gt; to mark them as expected failures as long as we do not have the time to fix PDO itself as we need to finish our driver itself.
&lt;/p&gt;
	&lt;p&gt;&lt;/p&gt;
	&lt;p&gt;(...)&lt;br /&gt;Read the rest of &lt;a href=&quot;http://blog.ulf-wendel.de/?p=188&quot;&gt;PDO_MYSQLND: R[a|u]mbling and a breeze of progress&lt;/a&gt; (2,040 words)&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 18:36:37 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Book link, wee!</title>
	<guid>http://dormando.livejournal.com/492511.html</guid>
	<link>http://dormando.livejournal.com/492511.html</link>
	<description>Finally got my copy of &lt;a href=&quot;http://www.amazon.com/High-Performance-MySQL-Optimization-Replication/dp/0596101716/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1215021334&amp;amp;sr=8-1&quot;&gt;High Performance MySQL 2nd ed&lt;/a&gt; two days ago.&lt;br /&gt;&lt;br /&gt;Yesterday I vaguely remembered &lt;a href=&quot;http://www.xaprb.com/blog/&quot;&gt;Baaron&lt;/a&gt; asking if &lt;a href=&quot;http://consoleninja.net/code/dpm/&quot;&gt;DPM&lt;/a&gt; had a homepage. So I flipped through the book a bit, and sure enough, on page 599, is a short mention of my proxy!&lt;br /&gt;&lt;br /&gt;Thanks, Baaron! With the upcoming release of DPM it'll be exciting enough to be worth having a link in your awesome book :)</description>
	<pubDate>Wed, 02 Jul 2008 17:59:14 +0000</pubDate>
</item>
<item>
	<title>Planet PostgreSQL: Robert Hodges: PostgreSQL Gets Religion About Replication</title>
	<guid>tag:blogger.com,1999:blog-768233104244702633.post-3867773704846744344</guid>
	<link>http://scale-out-blog.blogspot.com/2008/06/postgresql-gets-religion-about.html</link>
	<description>The PostgreSQL community is getting really serious about replication.  On Thursday May 29th, Tom Lane issued a &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2008-05/msg00913.php&quot;&gt;manifesto&lt;/a&gt; concerning databas replication on behalf of the &lt;a href=&quot;http://www.postgresql.org/community/contributors/&quot;&gt;PostgreSQL core team&lt;/a&gt; to the &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/&quot;&gt;pgsql-hackers mailing list&lt;/a&gt;.  Tom's post basically said that lack of easy-to-use, built-in replication is a significant obstacle to wider adoption of PostgreSQL and proposed a technical solution based on log shipping, which is already a well-developed and useful feature.&lt;br /&gt;&lt;br /&gt;What was the reaction?  The post generated close to 140 responses within the next two days, with a large percentage of the community weighing in.   It's one of the most significant announcements on the list in recent history.   There is pent up demand for this feature and within a few hours people were already deep into the details of the implementation.&lt;br /&gt;&lt;br /&gt;The basic idea comes from an excellent &lt;a href=&quot;http://www.pgcon.org/2008/schedule/events/76.en.html&quot;&gt;presentation&lt;/a&gt; by Takahiro Itagaki and Masao Fujii of NTT at PGCon 2008 in Ottowa.  They have developed a system that replicates database log records synchronously to a standby database.  The standby can recover quickly and without data loss, which makes it a good availability solution.  The core team manifesto proposes to integrate this into the PostgreSQL core and add the ability to open the standby for reads.&lt;br /&gt;&lt;br /&gt;So, is this the end of the story on replication?  I don't think so.  There's no question that synchronous log shipping with reads would be a great feature. Basic availability is the first problem users run into when setting up production systems and this feature looks considerably better than alternatives for other databases like MySQL.   It will help if NTT donates their code to the community, but still the whole effort will take considerable time.   Adding the ability to open a standby for reads is at least a version out (read:  up to 2 years).&lt;br /&gt;&lt;br /&gt;More importantly, log shipping is most useful for availability.  It does not help you replicate across database versions (nice for upgrades), between different databases, from a master to large numbers of slaves, or bi-directionally between databases.  Finally, it's a less than ideal solution for clustering data between sites, something that is rapidly becoming one of the most important overall uses of replication.  For these and other cases you need logical replication, which turns log records into SQL statements and applies them using a client.&lt;br /&gt;&lt;br /&gt;I'm therefore starting an effort to get logical replication hooks included as a parallel effort.  If you are interested in this let me know.   Meanwhile, stay tuned.  Tom's message represents a real change of heart for the PostgreSQL community.   Accepting the important of replication opens up the doors for a new round of innovation in scale-out based on PostgreSQL.  It could not come at a better time.</description>
	<pubDate>Wed, 02 Jul 2008 17:56:53 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: mysql proxy 0.6.1 performance tests</title>
	<guid>http://tomictech.com/?p=14</guid>
	<link>http://tomictech.com/2008/07/02/mysql-proxy-061-performance-tests/</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://forge.mysql.com/wiki/MySQL_Proxy&quot;&gt;mysql proxy project&lt;/a&gt; has tremendous potential to make mysql administration and usage easier. I decided to throw some load at it to get a feel for how stable and performant it is. &lt;br id=&quot;tw_32&quot; /&gt;&lt;br id=&quot;f6su&quot; /&gt;On EC2, I set up 6 &amp;#8220;small&amp;#8221; images in an example proxy setup:&lt;br id=&quot;lf25&quot; /&gt;&lt;br id=&quot;lf250&quot; /&gt;- One client machine to run sysbench&lt;br id=&quot;lf251&quot; /&gt;- One machine to act as a mysql proxy machine, running 0.6.1 (FC4 binary)&lt;br id=&quot;lf252&quot; /&gt;- Four identical database servers, running mysql 5.0.45&lt;br id=&quot;z.di&quot; /&gt;&lt;br id=&quot;z.di0&quot; /&gt;The database configuration was largely default, with InnoDB configured for 64MB buffer pool (just enough to ensure the sysbench table was entirely in memory), 512MB log files, and 1024 max connections.&lt;br id=&quot;z.di1&quot; /&gt;&lt;br id=&quot;z.di2&quot; /&gt;mysql-proxy was run with the following command:&lt;br id=&quot;z.di3&quot; /&gt;&lt;br id=&quot;z.di4&quot; /&gt;mysql-proxy &amp;#8211;proxy-backend-addresses=ip-10-251-66-63.ec2.internal:3306 &amp;#8211;proxy-backend-addresses=ip-10-251-71-21.ec2.internal:3306 &amp;#8211;proxy-backend-addresses=ip-10-251-43-70.ec2.internal:3306 &amp;#8211;proxy-backend-addresses=ip-10-251-75-52.ec2.internal:3306&lt;br id=&quot;z.di5&quot; /&gt;&lt;br id=&quot;z.di6&quot; /&gt;Using the sysbench database benchmark utility to generate some heavy load on the boxes individually (to verify they were all more or less equal), and on the proxy itself, I got some interesting results:&lt;br id=&quot;kjc84&quot; /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Read/write operations/second:&lt;/span&gt;&lt;br /&gt;
&lt;br id=&quot;a6q-&quot; /&gt;&lt;img src=&quot;http://spreadsheets.google.com/pub?key=pP8KmhvZIzEceeZoKrtmxYw&amp;amp;oid=1&amp;amp;output=image&quot; alt=&quot;&quot; /&gt;&lt;br id=&quot;a6q-0&quot; /&gt;&lt;br id=&quot;xyrj0&quot; /&gt;&lt;span&gt;Transactions/second:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://spreadsheets.google.com/pub?key=pP8KmhvZIzEceeZoKrtmxYw&amp;amp;oid=2&amp;amp;output=image&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;br id=&quot;a6q-1&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Somewhat as I expected, mysql-proxy presents a bit of overhead when load is light. With only 8 concurrent threads, running against the proxy pointing to 4 equal database servers is slower than hitting one server itself.&lt;br id=&quot;eq68&quot; /&gt;&lt;br id=&quot;eq680&quot; /&gt;As load goes up, however, you can see that the proxy scales reasonably well, while the accesses to the direct systems begin to tank rapidly after 64 concurrent threads (I lost some of my 128 thread results inadvertently and the instances are destroyed &lt;img src=&quot;http://tomictech.com/wp-includes/images/smilies/icon_sad.gif&quot; alt=&quot;:(&quot; class=&quot;wp-smiley&quot; /&gt; I&amp;#8217;m fairly comfortable in interoplating the result to be roughly in between 64 and 256 )&lt;br id=&quot;p1qw&quot; /&gt;&lt;br id=&quot;p1qw0&quot; /&gt;Somewhat unsettling, however, was the fact that sysbench or mysql proxy failed to work beyond about 500 concurrent threads. My debug output for sysbench just stops here:&lt;br id=&quot;lrj3&quot; /&gt; &lt;br id=&quot;lrj30&quot; /&gt; DEBUG: mysql_real_connect(0&amp;#215;9adec70, &amp;#8220;ip-10-251-75-160&amp;#8243;, &amp;#8220;sbtest&amp;#8221;, &amp;#8220;(null)&amp;#8221;, &amp;#8220;sbtest&amp;#8221;, 4040, &amp;#8220;(null)&amp;#8221;, CLIENT_MULTI_STATEMENTS)&lt;br id=&quot;lrj31&quot; /&gt; DEBUG: mysql_init(0&amp;#215;9ae51b0)&lt;br id=&quot;lrj32&quot; /&gt; DEBUG: mysql_options(0&amp;#215;9ae51b0, MYSQL_READ_DEFAULT_&lt;br id=&quot;lrj33&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On the servers themselves, I can see the 125+ connections to each individual box, and all looks normal. I tried tweaking some of the thread settings in ulimit and sysbench itself to no avail, but didn&amp;#8217;t have a ton of time to play with it. I decided the results were already interesting enough and will see if I can revisit this another time. &lt;br id=&quot;u1ma&quot; /&gt; &lt;br id=&quot;u1ma0&quot; /&gt; Another reason i am not so concerned is that more than one proxy can be utilised in many typical environments, so the ability of a single mysql-proxy instance to handle 512+ concurrent connections might not be show-stopper. &lt;br id=&quot;ya:y&quot; /&gt; &lt;br id=&quot;ya:y0&quot; /&gt; If anyone out there has done some similar tests with mysql proxy, i welcome your feedback!&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 17:11:13 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: dbWatch News</title>
	<guid>http://www.pythian.com/blogs/1105/dbwatch-news-release</guid>
	<link>http://www.pythian.com/blogs/1105/dbwatch-news</link>
	<description>&lt;p&gt;Seems I have turned into a bit of a news source. dbWatch Software sent me a news release on their dbWatch monitoring platform, which looks like it might be an interesting product for those who work in a heterogeneous database environment.  Here&amp;#8217;s the release:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;FOR IMMEDIATE RELEASE&lt;/p&gt;
&lt;p&gt;Contact:&lt;/p&gt;
&lt;p&gt;Rob Shuster, VP US Sales&lt;br /&gt;
dbWatch USA&lt;br /&gt;
6122B S. Eagle Pass Rd.&lt;br /&gt;
Gold Canyon, AZ&lt;br /&gt;
85218&lt;/p&gt;
&lt;p&gt;Phone: 800-270-9892&lt;/p&gt;
&lt;p&gt;http://www.dbwatchusa.com&lt;/p&gt;
&lt;p&gt;info@dbwatchusa.com&lt;/p&gt;
&lt;p&gt;dbWatch Software Announces US based Sales &amp;amp; Support Oslo, Norway &amp;#8212; June 23, 2008 ? dbWatch Software has launched a US sales and support organization. The flagship product, dbWatch? (v8.1), is a heterogeneous database monitoring/reporting tool currently supports Oracle, SQL Server, and MySQL.&lt;/p&gt;
&lt;p&gt;Marek Jablonski, CEO states ?As a DBA you are often stuck with multiple platforms (both OS and database systems) and multiple unmanageable tools from database providers. dbWatch? is a single tool allowing the DBA to monitor all databases and generate professional custom reports.?&lt;/p&gt;
&lt;p&gt;Clear Channel Norway IT Director, Jan Erik Rasmussen, reports ?dbWatch provides an effective overview of our databases, and allows me to sleep well at night.?&lt;/p&gt;
&lt;p&gt;Three dbWatch? editions are available: Standard ($195), Professional ($1,995 to $9,995), and Enterprise ($14,995). A free 30-day evaluation is available for download.&lt;/p&gt;
&lt;p&gt;For information: http://www.dbwatchusa.com or&lt;/p&gt;
&lt;p&gt;Contact: info@dbwatchusa.com&lt;/p&gt;
&lt;p&gt;Phone: 800-270-9892&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;It was a timely contact, coinciding with  &lt;a href=&quot;http://www.pythian.com/blogs/1086/reviewing-monyog&quot;&gt;Sheeri&amp;#8217;s review of MONyog&lt;/a&gt;. It sounds like dbWatch is the kind of tool that would be valuable here at Pythian, where we work with all of the DBMSs it supports.  But &amp;#8212; I haven&amp;#8217;t tried it yet, so I put it to you:  have any of you used dbaWatch? If so, what are you opinions?&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 17:03:04 +0000</pubDate>
</item>
<item>
	<title>Planet PostgreSQL: Robert Hodges: What's Your Favorite Database Replication Feature?</title>
	<guid>tag:blogger.com,1999:blog-768233104244702633.post-3182132208670501583</guid>
	<link>http://scale-out-blog.blogspot.com/2008/07/whats-your-favorite-database.html</link>
	<description>Replication is one of the most flexible technologies available for databases.  We are implementing a new open-source, database-neutral replication product that works with MySQL, Oracle, and PostgreSQL.  Naturally we've done a lot of thinking about the feature set.  It's tough to pick any single feature as the most important, but one that really stands out is optional statement replication.   Here's why.&lt;br /&gt;&lt;br /&gt;Database replication products tend to replicate row changes and DDL.  However, &lt;a href=&quot;http://mysqlha.blogspot.com/&quot;&gt;Mark Callaghan&lt;/a&gt; has &lt;a href=&quot;http://mysqlha.blogspot.com/2008/06/table-checksums-row-based-replication.html&quot;&gt;a great example&lt;/a&gt; of why you want to replicate statements as well--it enables &lt;a href=&quot;http://www.maatkit.org/&quot;&gt;Maatkit&lt;/a&gt; distributed consistency checking to work.   If you dissect the &lt;a href=&quot;http://maatkit.sourceforge.net/doc/mk-table-checksum.html&quot;&gt;mk-table-checksum --replicate&lt;/a&gt; command you will see that it uses a nice trick.  The SQL queries generate checksums into the master table and then replicate as&lt;span&gt; statements&lt;/span&gt; rather than row updates out to slaves.  That way the slaves recompute the checksum locally at the same point in the overall transaction history.   Very elegant!&lt;br /&gt;&lt;br /&gt;Replicated consistency checks are a wonderful feature for large systems that can't afford to stop in order to compare tables between servers.  However, you cannot use it if your database cannot replicate statements.  As Mark points out, not even all MySQL engines do this.  The &lt;a href=&quot;http://archives.postgresql.org/pgsql-hackers/2008-05/msg00913.php&quot;&gt;proposed replication additions for PostgreSQL&lt;/a&gt; won't support it either.&lt;br /&gt;&lt;br /&gt;Optional statement replication is really the best kind of feature: it is useful on its own, but also enables features like consistency checking and other nice administrative tricks.   We're going to put a &quot;worm-hole&quot; in our replication engine that allows applications to invoke statement replication at the SQL level.  Can you guess how we are going to do it?  If not, you'll have to wait until we release. :)&lt;br /&gt;&lt;br /&gt;So what's &lt;span&gt;your&lt;/span&gt; favorite database replication feature?</description>
	<pubDate>Wed, 02 Jul 2008 16:40:34 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: The Value of Software Architecture</title>
	<guid>tag:blogger.com,1999:blog-11806753.post-2400239040071448400</guid>
	<link>http://opensourcestrategies.blogspot.com/2008/07/value-of-software-architecture.html</link>
	<description>Every company, no matter how big or how small, already has software to manage their business.  So if they are looking at &lt;a href=&quot;http://www.opentaps.org/&quot;&gt;opentaps Open Source ERP + CRM&lt;/a&gt;, it's because their system has failed them.  That system may still meet some needs well, but as a whole it can no longer support the users' long-term needs.&lt;br /&gt;&lt;br /&gt;Why this is happening?  Usually for the following reasons:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The users have no access to the source code, so they have no way to make changes they need.&lt;/li&gt;&lt;li&gt;The system can't support new functionality.  For example, it may have been built solely with direct marketers in mind and cannot be adapted for manufacturing or more complex B2B sales.&lt;/li&gt;&lt;li&gt;The source code is no longer maintainable because its original authors have moved on, and there's a lack of documentation and unit tests to help new developers work with it.&lt;/li&gt;&lt;li&gt;The system cannot support new technologies.  It may have been written with a DOS-based rapid application development tool, which will never support the Internet.&lt;/li&gt;&lt;li&gt;The hardware which runs the system is no longer made or supported.  For an extreme example of this, see this story about &lt;a href=&quot;http://www.3000newswire.com/subscribers/Ecometry-05Jan.html&quot;&gt;Ecometry and the HP3000&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span&gt;What We Can Do (Better)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;These problems show how important software architecture become over a long period of time.  The most important thing about well architected software is that it can withstand change.    It should allow you to modify, extend, or even replace parts of the software while the rest of it keeps humming along.  In this way, a good architecture could extend the lifespan of your software and allow it to adapt to new technologies, new people, or new requirements.&lt;br /&gt;&lt;br /&gt;For us, as developers of opentaps, it means that we need to produce a system that is not only feature rich and user friendly, but also a well architected.  In this respect, there are somethings we already do well, and there are somethings that we need to do a lot better.&lt;br /&gt;&lt;br /&gt;I think we already do the following well:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Our source code is openly available to all of our users, and this is a huge advantage, because it allows them to modify opentaps to meet their needs.  In theory, this should actually be all they need, but in practice that is not the case.  Having access to the source code doesn't actually do you any good unless the source code is also easy to work with and can support changes easily.&lt;/li&gt;&lt;li&gt;We have a very robust data model, which can support the core business needs of most industries.&lt;/li&gt;&lt;li&gt;Because opentaps is a newer system, it is built with current industry standard technologies such as Java, SQL databases, and XML.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;However, there are some things that we need to do a much better job of.  Much of our code is still too static and closely tied to the underlying data structure and one particular framework.  (See this &lt;a href=&quot;http://www.opentaps.org/docs/index.php/Domain_Driven_Architecture#An_Example_Using_Domains&quot;&gt;example&lt;/a&gt;.)  What we really need is to adopt a more object-oriented design, so that it's easier for other developers to understand and extend opentaps, and so that we can be up-to-date with the best open source technical frameworks available.&lt;br /&gt;&lt;br /&gt;Therefore, we have begun implementing a &lt;a href=&quot;http://www.opentaps.org/docs/index.php/Domain_Driven_Architecture&quot;&gt;Domain Driven Design&lt;/a&gt; for opentaps, which is an object oriented design pattern that builds applications from business domains such as customers, orders, invoices, and shipments and separates the infrastructure tier of dealing with servers and databases from the business knowledge.  We believe that this Domain Driven Design will give us -- and most importantly you -- the ability to extend opentaps, replace some parts of it with other systems, or upgrade opentaps to newer technical infrastructure, while preserving your investment in the rest of it.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;The Plan for opentaps&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This Domain Driven Design will be an evolutionary change from the current architecture.  We will be moving our business tier code to the new design over the next few months while continuing to piggyback off the existing ofbiz framework.  While doing this, we will continue to advance the development of &lt;a href=&quot;http://www.opentaps.org/index.php?option=com_content&amp;amp;task=blogcategory&amp;amp;id=44&amp;amp;Itemid=86&quot;&gt;opentaps version 1.4&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;At some point, we will begin creating a new framework for opentaps version 2.0.  This will be fully compatible with the ofbiz framework, allowing you (and us) to incorporate current and future versions of ofbiz and all the opentaps and custom applications we have already built with it.  The drivers of the new opentaps framework, however, will more likely be a yet to be decided combination of open-source projects such as Hibernate, Spring, guice, JBoss Seam, Struts, Wicket, etc.  It will allow us to re-factor, at our leisure, legacy ofbiz-based code to this new framework and at the same time incorporate other Java open source projects into opentaps more easily.</description>
	<pubDate>Wed, 02 Jul 2008 16:35:53 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Erlang User Group Berlin</title>
	<guid>http://jan.prima.de/~jan/plok/archives/144-guid.html</guid>
	<link>http://jan.prima.de/~jan/plok/archives/144-Erlang-User-Group-Berlin.html</link>
	<description>&lt;p&gt;&lt;img src=&quot;http://jan.prima.de/~jan/plok/uploads//e.png&quot; alt=&quot;e.png&quot; border=&quot;0&quot; width=&quot;74&quot; height=&quot;75&quot; align=&quot;right&quot; class=&quot;inline&quot; /&gt;Berlin has a long history of blooming user groups and the Erlang User Group Berlin will be no exception!&lt;/p&gt;

&lt;p&gt;That&amp;#8217;s right, Germany&amp;#8217;s capital and one of the nicest places to be in Europe (among all the other nice places, hooray for plurality) finally has place for Erlang enthusiasts. That is in fact a &lt;a href=&quot;http://jan.prima.de/~jan/plok/exit.php?url_id=1580&amp;amp;entry_id=144&quot; title=&quot;http://en.wikipedia.org/wiki/Pleonasm&quot;&gt;pleonasm&lt;/a&gt;, I haven&amp;#8217;t found a single soul yet who is not enthusiastic about working with Erlang, but what do I know?&lt;/p&gt;

&lt;p&gt;Anyway.&lt;/p&gt;

&lt;p&gt;Join the &lt;a href=&quot;http://jan.prima.de/~jan/plok/exit.php?url_id=1581&amp;amp;entry_id=144&quot; title=&quot;http://groups.google.com/group/erlang-berlin/&quot;&gt;discussion group&lt;/a&gt; and help to pick a date for meetings.&lt;/p&gt;

&lt;p&gt;If you are an Erlang developer on visit in Berlin, let us know, so we can have an out-of-order meeting with you.&lt;/p&gt;

&lt;p&gt;Sorry if that shows up at a seemingly non-related planet feed, this is a spam measure and won&amp;#8217;t happen again. Thanks for your patience.&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 14:35:55 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: At OSCON</title>
	<guid>http://jan.prima.de/~jan/plok/archives/143-guid.html</guid>
	<link>http://jan.prima.de/~jan/plok/archives/143-At-OSCON.html</link>
	<description>&lt;p&gt;Boy am I thrilled. &lt;a href=&quot;http://jan.prima.de/~jan/plok/exit.php?url=aHR0cDovL2NvbmZlcmVuY2VzLm9yZWlsbHkuY29tL29zY29u&amp;amp;entry_id=143&quot; title=&quot;http://conferences.oreilly.com/oscon&quot;&gt;
&lt;img src=&quot;http://conferences.oreillynet.com/banners/oscon/speaker/oscon2008_banner_speaker_210x60.gif&quot; width=&quot;210&quot; height=&quot;60&quot; border=&quot;0&quot; alt=&quot;OSCON 2008&quot; title=&quot;OSCON 2008&quot; align=&quot;right&quot; class=&quot;inline&quot; /&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OSCON, back in the old days, was the Mekka for open source developers. Glorious but out of reach and too far away. I don&amp;#8217;t know if that image holds true still, but judging the enthusiastic reports by previous attendees, it does. And this year I will be able to attend. &lt;/p&gt;

&lt;p&gt;I will not only be able to attend, I will even &lt;a href=&quot;http://jan.prima.de/~jan/plok/exit.php?url_id=1577&amp;amp;entry_id=143&quot; title=&quot;http://en.oreilly.com/oscon2008/public/schedule/detail/2725&quot;&gt;give a presentation&lt;/a&gt;. You can guess the topic of course and I don&amp;#8217;t want to stretch this post into advertising &lt;a href=&quot;http://jan.prima.de/~jan/plok/exit.php?url_id=1578&amp;amp;entry_id=143&quot; title=&quot;http://couchdb.org/&quot;&gt;CouchDB&lt;/a&gt; yet again. (I&amp;#8217;ll leave that to other posts :-)&lt;/p&gt;

&lt;p&gt;This is a heads-up for all the friends and colleagues I&amp;#8217;ve known and worked with for quite a few years now but haven&amp;#8217;t had a chance to meet in a while. If you are coming to OSCON, please get in touch (&lt;a href=&quot;http://jan.prima.de/~jan/plok/exit.php?url_id=1579&amp;amp;entry_id=143&quot; title=&quot;http://jan.prima.de/&quot;&gt;see the sidebar&lt;/a&gt;). For all the folks I have not yet met but want to say hi, do the same. &lt;/p&gt;

&lt;p&gt;See you in three weeks!&lt;/p&gt;

&lt;p&gt;&amp;#8212;Jan&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 14:33:29 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: OSCON 2008 - Getting in touch with the open source makers</title>
	<guid>tag:blogger.com,1999:blog-16959946.post-5529585598810901809</guid>
	<link>http://datacharmer.blogspot.com/2008/07/oscon-2008-getting-in-touch-with-open.html</link>
	<description>&lt;table border=&quot;0&quot;&gt;&lt;tr&gt;&lt;td&gt;For some reasons, I have never been able to attend &lt;a href=&quot;http://conferences.oreilly.com/oscon&quot;&gt;OSCON&lt;/a&gt; so far. I have been going to the MySQL Users Conference almost every year in April, and that usually left me without a great desire of crossing the Atlantic again. This year is different. I have crossed the Atlantic already three times, and yet I am about to board a plane once more, heading for the Portland, Oregon.&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://conferences.oreilly.com/oscon&quot;&gt;&lt;br /&gt;&lt;img src=&quot;http://conferences.oreillynet.com/banners/oscon/speaker/oscon2008_banner_speaker_125x125.gif&quot; width=&quot;125&quot; height=&quot;125&quot; border=&quot;0&quot; alt=&quot;OSCON 2008&quot; title=&quot;OSCON 2008&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;And for some lucky circumstances, I am also a speaker.&lt;br /&gt;I will join &lt;a href=&quot;http://ronaldbradford.com/about.htm&quot;&gt;Ronald Bradford&lt;/a&gt; on the podium, to speak about (surprise surprise!) &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/detail/2915&quot;&gt;MySQL Proxy, from architecture to implementation&lt;/a&gt;.&lt;br /&gt;I will have also my hands full in the evenings. There will be plenty of &lt;a href=&quot;http://en.oreilly.com/oscon2008/public/schedule/stype/bof&quot;&gt;BoFs&lt;/a&gt; (including two that I will host) and parties, social gatherings, competitions, which I plan to enjoy for my personal enlightenment, not only to fulfill my duties. &lt;br /&gt;I am looking forward to meet old friends and to make new ones.</description>
	<pubDate>Wed, 02 Jul 2008 14:23:00 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Gallery updates and new camera</title>
	<guid>http://www.lenzg.org/archives/198-guid.html</guid>
	<link>http://www.lenzg.org/archives/198-Gallery-updates-and-new-camera.html</link>
	<description>&lt;p&gt;Last weekend I finally found some time to upload pictures that I had taken during various events that I attended in the past few months. So here are my impressions from the following events:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.lenzg.org/gallery/v/ConferencesEvents/PHP-Unconference-HAM-2008-04-26/&quot;&gt;PHP Unconference in Hamburg on 2008-04-26&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.lenzg.org/gallery/v/ConferencesEvents/MySQL-Meetup-HAM-2008-04-07/&quot;&gt;MySQL Meetup Mashup in Hamburg, 2008-04-07&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.lenzg.org/gallery/v/ConferencesEvents/MySQL-Meetup-Berlin-2008-04-08/&quot;&gt;MySQL Meetup Mashup in Berlin, 2008-04-08&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.lenzg.org/gallery/v/ConferencesEvents/MySQL-Conference-2008-04/&quot;&gt;MySQL Conference &amp;amp; Expo 2008 in Santa Clara, 2008-04&lt;/a&gt;  (these are available from &lt;a href=&quot;http://www.flickr.com/photos/lenzgr/sets/72157604535830342/&quot;&gt;flickr&lt;/a&gt; as well)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.lenzg.org/gallery/v/ConferencesEvents/CommunityOne-2008-05-05/&quot;&gt;CommunityOne in San Francisco, 2008-05-05&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.lenzg.org/gallery/v/ConferencesEvents/JavaOne-2008-05/&quot;&gt;JavaOne in San Francisco, 2008-05&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;http://www.lenzg.org/gallery/v/ConferencesEvents/LinuxTag-Berlin-2008-05/&quot;&gt;LinuxTag in Berlin, 2008-05&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are probably the last pictures that I have taken with my trusty old &lt;a href=&quot;http://www.flickr.com/cameras/pentax/optio_s4/&quot;&gt;Pentax Optio S4&lt;/a&gt; - I just received my new camera, a &lt;a href=&quot;http://www.flickr.com/cameras/canon/powershot_a720_is/&quot;&gt;Canon PowerShot A720 IS&lt;/a&gt;. I have just started to toy around with it, but the first results look promising! The Pentax served me well for several years - I've taken 9745 pictures with it. But it had a few deficiencies, particularly the slow startup and flash recharge time and the bad quality of pictures indoors bothered me for quite a while. But it is very small and handy and the metal housing makes it quite sturdy.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/lenzgr/2630006431/&quot; title=&quot;Pentax Optio S4 by Lenz Grimmer, on Flickr&quot;&gt;&lt;img width=&quot;500&quot; vspace=&quot;3&quot; height=&quot;375&quot; border=&quot;0&quot; src=&quot;http://farm4.static.flickr.com/3194/2630006431_f18d1710ab.jpg&quot; alt=&quot;Pentax Optio S4&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
The first picture taken with my new camera: a picture of the old one.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/lenzgr/2630006745/&quot; title=&quot;Canon Powershot A720 IS by Lenz Grimmer, on Flickr&quot;&gt;&lt;img width=&quot;500&quot; vspace=&quot;3&quot; height=&quot;375&quot; border=&quot;0&quot; src=&quot;http://farm4.static.flickr.com/3052/2630006745_9d200247a1.jpg&quot; alt=&quot;Canon Powershot A720 IS&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
And probably the last picture taken using the old camera: my new Canon.&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 14:05:56 +0000</pubDate>
</item>
<item>
	<title>Planet PostgreSQL: Hubert Lubaczewski: Who/what is trashing db performance?</title>
	<guid>http://www.depesz.com/?p=1218</guid>
	<link>http://www.depesz.com/index.php/2008/07/02/whowhat-is-trashing-db-performance/</link>
	<description>Every so often I need to find who exactly is damaging database performance. I mean - I have db connection which does something strange/wrong with the database, but what exactly is responsible?
Switching to separate user for every program, script and developer would solve the problem, but it is not always an option. So, what should [...]</description>
	<pubDate>Wed, 02 Jul 2008 13:40:04 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Dublin sales meeting and group photo</title>
	<guid>http://blogs.sun.com/carriergrademysql/entry/dublin_sales_meeting_and_group</guid>
	<link>http://blogs.sun.com/carriergrademysql/entry/dublin_sales_meeting_and_group</link>
	<description>&lt;p&gt;The MySQL Telecom sales team is a global team, but it happens to be organized under the EMEA region of the MySQL sales department. Since the EMEA region is having a staff meeting in Dublin this week, it means also we in the telecom team are gathered here. A good opportunity to meet your globally dispersed collagues.&lt;/p&gt;


&lt;p&gt;Zack Urlocker was the special guest star from headquarters. He presented a freudian-slip-slide saying that MySQL 5.1 will be released GA in July 2009. After lots of laughter he concessed that maybe engineering can pull it of faster, like maybe July 2008.&lt;/p&gt;


&lt;p&gt;Another hot topic Zack talked about was to review how the integration with Sun is going...&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://openlife.cc/system/files/images/SJSLS-dublin-600.jpg&quot; alt=&quot;SJSLS&quot; /&gt;&lt;/p&gt;


&lt;p&gt;...we concluded at least some of us are adapting just fine :-)&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 13:18:29 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: MONyog 2.5 RC has been released</title>
	<guid>http://www.webyog.com/blog/?p=22</guid>
	<link>http://www.webyog.com/blog/2008/07/02/monyog-25-rc-has-been-released/</link>
	<description>&lt;p&gt;&lt;strong&gt;Bug fixes and Enhancements:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Optimized SFTP code. This means that the Log Analyzer is now several times faster than previous Betas&lt;/li&gt;
&lt;li&gt;Fixed an issue with trending&lt;/li&gt;
&lt;li&gt;Log file parsing issue with MySQL 5.1.x resolved&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Downloads:&lt;/strong&gt; &lt;a href=&quot;http://webyog.com/en/downloads.php&quot;&gt;http://webyog.com/en/downloads.php&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Purchase:&lt;/strong&gt; &lt;a href=&quot;http://webyog.com/en/buy.php&quot;&gt;http://webyog.com/en/buy.php&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 12:47:55 +0000</pubDate>
</item>
<item>
	<title>Planet PostgreSQL: Robert Hodges: MySQL, Sun, and the Future of Open Source Databases</title>
	<guid>tag:blogger.com,1999:blog-768233104244702633.post-5215743957708120182</guid>
	<link>http://scale-out-blog.blogspot.com/2008/05/mysql-sun-and-future-of-open-source.html</link>
	<description>So what's it like now that Sun now owns MySQL?  The executive summary:  a little weird.  I was at the MySQL User Conference a couple of weeks ago and had a chance to talk with a lot of people in the community as well as many MySQL folks.  Marten Mickos is now the head of database products at Sun.  It's not very hard to figure out what Sun will do with MySQL products for the near future--pretty much what MySQL was doing already.&lt;br /&gt;&lt;br /&gt;The real question for a lot of people is what will happen with databases like PostgreSQL and Derby.    Sun has invested heavily in both of them, and PostgreSQL in particular is now quite fast.  With the MySQL acquisition, Sun has an opportunity to run the table with multiple offerings that cover both enterprise applications as well as web and embedded.   However, that would mean cutting down the MySQL roadmap to concentrate, for example, on scale-out rather than scale-up.  It would also require thinking big to combine with other vendors in order to disrupt the market leader Oracle.  Done right, there's a chance to upend the industry in a way that has not occurred since Microsoft muscled into databases in the early 1990s using code bought from Sybase.&lt;br /&gt;&lt;br /&gt;Based on talks from people like Rich Green and Marten Mickos, it's hard to see this happening.  Sun is taking a hands-off approach to MySQL *and* giving MySQL management control of overall database strategy.  A disruptive change therefore seems unlikely.  In fact, the more likely result is stagnation, now that MySQL no longer has to fight for its existence.   The MySQL roadmap is still pretty diffuse and there has been little product movement since the 2007 User Conference.   MySQL 5.1 is still not out the door.  Falcon is likely to show up ready for production use around the time the Boeing Dreamliner rolls out.  MySQL  is still working on multiple storage engines (2 new ones plus NDB and MyISAM, to name a couple.)  There's not even a glimmer of a date for cool new replication features like a pluggable replication interface.  In short, not much evidence for radical changes of any kind.&lt;br /&gt;&lt;br /&gt;Also, there must be the awful temptation to focus on vertical scaling so that MySQL can work on Sun hardware with large numbers of cores.  I asked Marten Mickos specifically about the choice between scaling up and scaling out but didn't get a very clear answer.   Personally I think for MySQL to concentrate very hard on vertical scaling would be a strategic error.  The  community that made MySQL great is into commodity hardware and scale-out in a big way.  First rate support for highly scaled SMP architectures is going to be a long slog that will compromise delivery of many other features.&lt;br /&gt;&lt;br /&gt;Given all of this it's hard not to see innovation, particularly in problems like scale-out, shifting away from MySQL to other databases as well as middleware.   This would be a great time for the PostgreSQL  community to get really serious about data replication.  MySQL won't fade--it's already a great database.  But there's likely to be a crowd of people in the MySQL community eying other solutions.  It's going to be interesting to see what they come up with.</description>
	<pubDate>Wed, 02 Jul 2008 11:38:43 +0000</pubDate>
</item>
<item>
	<title>Planet PostgreSQL: Robert Hodges: Tungsten Scale-Out Stack Presentation from MySQL Conference</title>
	<guid>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 &lt;a href=&quot;http://en.oreilly.com/mysql2008/public/content/home&quot;&gt;MySQL Conference&lt;/a&gt; in April.   &lt;a href=&quot;http://assets.en.oreilly.com/1/event/2/Continuent%20Tungsten_%20Proxies%20on%20Steroids%20for%20HA%20and%20Performance%21%20Presentation.pdf&quot;&gt;Here they are&lt;/a&gt; courtesy of the nice folks at O'Reilly who organized the conference.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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:&lt;br /&gt;&lt;br /&gt;1. The catalog service is always available.&lt;br /&gt;2. The service keeps working even if you get a network partition between hosts.&lt;br /&gt;3. The copies are always consistent (e.g., you can go to any copy and get the same data).&lt;br /&gt;&lt;br /&gt;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 &lt;a href=&quot;http://citeseer.ist.psu.edu/544596.html&quot;&gt;proven&lt;/a&gt; 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.&lt;br /&gt;&lt;br /&gt;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.&lt;br /&gt;&lt;br /&gt;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>
	<pubDate>Wed, 02 Jul 2008 11:37:12 +0000</pubDate>
</item>
<item>
	<title>Planet PostgreSQL: Robert Hodges: Webinar: The Coolest Scale-Out Projects on the Planet</title>
	<guid>tag:blogger.com,1999:blog-768233104244702633.post-2780083678048969768</guid>
	<link>http://scale-out-blog.blogspot.com/2008/06/webinar-coolest-scale-out-projects-on.html</link>
	<description>My company Continuent sponsors &lt;a href=&quot;http://www.continuent.org/&quot;&gt;Continuent.org&lt;/a&gt;, an open source site that contains some of the coolest scale-out projects around.  You may have heard of &lt;a href=&quot;http://sequoia.continuent.org/&quot;&gt;Sequoia&lt;/a&gt;, which implements middleware clustering of any database that has a JDBC driver.   However, Sequoia is really just the beginning.&lt;br /&gt;&lt;br /&gt;We have several other projects that offer interesting scale-out technologies.   &lt;a href=&quot;http://myosotis.continuent.org/&quot;&gt;Myosotis&lt;/a&gt; implements fast SQL proxying, &lt;a href=&quot;http://hedera.continuent.org/&quot;&gt;Hedera&lt;/a&gt; provides wrappers for group communications, and &lt;a href=&quot;http://bristlecone.continuent.org/&quot;&gt;Bristlecone&lt;/a&gt; has tools for performance testing of scale-out architectures.  This summer we will add projects for database neutral master/slave replication as well as cluster management.   In short, there's a lot to look at.&lt;br /&gt;&lt;br /&gt;If you would like a closer look at Continuent.org, I'm doing a Webex webinar to talk about the overall technology stack and project roadmaps.   It's scheduled for Thursday June 26th at 10am EDT.   You can sign up &lt;a href=&quot;https://continuent.webex.com/mw0304l/mywebex/default.do?siteurl=continuent&quot;&gt;here&lt;/a&gt; to see what's going on.&lt;br /&gt;&lt;br /&gt;Don't worry if you miss the presentation--I'll post slides here and will be doing a series of blog entries on each of the projects in the coming weeks.</description>
	<pubDate>Wed, 02 Jul 2008 11:36:22 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Independent MONyog review by Sheeri Cabral of The Pythian Group</title>
	<guid>http://www.webyog.com/blog/?p=23</guid>
	<link>http://www.webyog.com/blog/2008/07/02/independent-monyog-review-by-sheeri-cabral-of-the-pythian-group/</link>
	<description>&lt;p&gt;Sheeri Cabral, an active MySQL blogger and two-time winner of MySQL Community Contributor awards has written a great review on MONyog.&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;MONyog Review&quot; href=&quot;http://www.pythian.com/blogs/1086/reviewing-monyog&quot; target=&quot;_blank&quot;&gt;Read the full review here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Our favorite highlights:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;As an overall review ? MONyog is the best out-of-the-box GUI monitoring tool for MySQL that I have seen. It ?just works.? As promised, getting up and running quickly is easy, and having a centralized location for monitoring is very useful. The graphs are beautiful and the statistics that are graphed are useful time-savers.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The biggest difference between MySQL?s Enterprise Monitor and MONyog is that MONyog is agentless. At Pythian, we have many clients with differing security requirements. Requiring a daemon process to be running is not something we currently do, and it might be a hard sell for some clients. Even if every client was amenable to it, making sure the daemon is up and running on each MySQL server is tedious. Note that agentless operation works for every feature, including log analysis as well as operating system statistics.&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 10:59:58 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Generating on-the-fly SQL scripts for batch mode</title>
	<guid>http://blogs.sun.com/amitsaha/entry/generating_on_the_fly_sql</guid>
	<link>http://blogs.sun.com/amitsaha/entry/generating_on_the_fly_sql</link>
	<description>&lt;p&gt;When writing scripts for running MySQL in &lt;a target=&quot;_blank&quot; href=&quot;http://dev.mysql.com/doc/refman/5.0/en/batch-mode.html&quot;&gt;batch mode&lt;/a&gt;, it is often desired to be able to change the SQL queries on-the-fly so that we can use the script to solve more generic problems. &lt;/p&gt; 
  &lt;p&gt;For example, I need to use my script for &lt;i&gt;different storage engines&lt;/i&gt; and &lt;i&gt;table names&lt;/i&gt; and I want to be able to do it at runtime instead of manually changing my script every time. &lt;/p&gt; 
  &lt;p&gt;Here is how I do it:

I have a template file which is my script but with the &lt;i&gt;variables having generic names&lt;/i&gt;. In this case, I have considered &lt;i&gt;plugin_name&lt;/i&gt; as the storage engine name , and &lt;i&gt;table_name&lt;/i&gt; as the table name.&lt;br /&gt;&lt;/p&gt; 
  &lt;p&gt;Consider the following script:

&lt;/p&gt; 
  &lt;pre&gt;# automation-script-template
# Mixing shell commands and SQL queries in batch mode- demo script

# Replace variables: plugin_name, table_name with appropriate names- done automatically by the calling shell script.

use test;

INSTALL PLUGIN plugin_name SONAME 'ha_plugin_name.so'; #Ignore statement

system mkdir traces/plugin_name

system cp /tmp/mysqld.trace traces/plugin_name/init.trace # Shell commands prefixed with a 'system'

create table table_name(num integer) engine=plugin_name;

system cp /tmp/mysqld.trace traces/plugin_name/after_create.trace # Shell commands prefixed with a 'system'

system diff traces/plugin_name/init.trace traces/plugin_name/after_create.trace # Shell commands prefixed with a 'system'

&lt;/pre&gt;

In the above script, &lt;i&gt;plugin_name&lt;/i&gt; and &lt;i&gt;table_name&lt;/i&gt; are the two parameters which I want to be able to change. 

Now, the strategy I follow is that using a shell script (below) by passing the relevant values as command line arguments to it, I 'generate' a new batch-sctipt file everytime using the above template file:


  
  
  &lt;pre&gt;#!/usr/bin/bash
#launch

#sed- replace VARIABLES with arguments.
#plugin_name, table_name with appropriate names

#replace table_name and plugin_name
sed -e 's/table_name/'${1}'/g' -e 's/plugin_name/'${2}'/g' automation-script-template &amp;gt; collect-traces


# Invoked MySQL in batch mode
mysql -u root &amp;lt; collect-traces &amp;gt; log;
&lt;/pre&gt;


As you can see, I use 'sed' to replace all the occurences of the parameters with the given command line arguments and generate a case-specific script on-the-fly using the automation-script-template.

A sample invocation would be:


  
  
  &lt;pre&gt;$ ./launch dummy4 example
&lt;/pre&gt;
Which produces the following 'collect-traces' file (case-specific file):


  
  
  &lt;pre&gt;# Mixing shell commands and SQL queries in batch mode- demo script

# Replace variables: example, dummy4 with appropriate names- done automatically by the calling shell script.

use test;

INSTALL PLUGIN example SONAME 'ha_example.so'; #Ignore statement

system mkdir traces/example

system cp /tmp/mysqld.trace traces/example/init.trace # Shell commands prefixed with a 'system'

create table dummy4(num integer) engine=example;

system cp /tmp/mysqld.trace traces/example/after_create.trace # Shell commands prefixed with a 'system'

system diff traces/example/init.trace traces/example/after_create.trace # Shell commands prefixed with a 'system'

&lt;/pre&gt; 
  &lt;p&gt;

As is apparent from the 'launch' script, this script is fed to the MySQL client in batch mode. Thus, you can successfully write more generic SQL queries using the method above. &lt;br /&gt;&lt;/p&gt; 
  &lt;p&gt;You may also want to see this post: &lt;a href=&quot;http://www.planetmysql.org/amitsaha/entry/mixing_sql_and_shell_commands&quot;&gt;Mixing SQL and shell commands in MySQL&lt;/a&gt;&lt;/p&gt; 
  &lt;p&gt; &lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 08:07:34 +0000</pubDate>
</item>
<item>
	<title>Planet PostgreSQL: Leo Hsu and Regina Obe: How to Inherit,  Unherit and Merge Inherit</title>
	<guid>http://www.postgresonline.com/journal/index.php?/archives/59-guid.html</guid>
	<link>http://www.postgresonline.com/journal/index.php?/archives/59-How-to-Inherit,-Unherit-and-Merge-Inherit.html</link>
	<description>&lt;p&gt;A lot of this information is nicely tucked away in the PostgreSQL docs in &lt;a href=&quot;http://www.postgresql.org/docs/8.3/interactive/ddl-inherit.html&quot; target=&quot;_blank&quot;&gt;http://www.postgresql.org/docs/8.3/interactive/ddl-inherit.html&lt;/a&gt;, 
but since the docs are so huge and rich, one may tend to miss
these things.&lt;/p&gt;

&lt;p&gt;While there are numerous interesting use cases for the PostgreSQL inheritance structure,  one of the key reasons people use it is for table partitioning strategies.
&lt;/p&gt;

&lt;h4&gt;How do you make a stand-alone table a child of another table?&lt;/h4&gt;
&lt;p&gt;The first question that comes to mind is why would you ever need a table to adopt another table. There are 2 reasons that come to mind.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;When you are loading huge amounts of data especially of a read only nature - its often convenient to not have that table be visible to your applications until 
		you are done with the loading process.  So you may want to make it a child after the loading.&lt;/li&gt;
	&lt;li&gt;Your tables seemed fairly unrelated when you started out and then one day you realized you really were talking about apples and apples and need to report on them together at a higher level.
		One situation like this to give a somewhat real-world perspective - lets say you developed a timesheet app for an organization and each department insisted on having their own version of the app and each along with 
		the basic fields needed to track some additional ones of their own.  Then higher forces
		came in and said &lt;em&gt;I need to know what everyone is doing, but I don't need to see all that other crap they keep track of.&lt;/em&gt;.  Two options come to mind - create a bunch of views
			that union stuff together or institute a &lt;em&gt;round-up-the-children-and-adopt-them&lt;/em&gt; program.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This fits into one of the categories of things that PostgreSQL lets you do that PgAdmin III doesn't have a graphical way to let you do it.
If you try to inherit in PgAdmin III from a table that already exists, that option is just greyed out. So you have to resort to DDL SQL statements.  Luckily its fairly trivial. Well this really only works
for PostgreSQL 8.2+.  I don't think PostgreSQL 8.1 and below supported INHERIT/NO INHERIT in the ALTER TABLE statement.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://www.postgresonline.com/journal/index.php?/archives/59-How-to-Inherit,-Unherit-and-Merge-Inherit.html#extended&quot;&gt;Continue reading &quot;How to Inherit,  Unherit and Merge Inherit&quot;&lt;/a&gt;</description>
	<pubDate>Wed, 02 Jul 2008 07:37:00 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: 451 CAOS Links - 2008.07.01</title>
	<guid>http://blogs.the451group.com/opensource/?p=866</guid>
	<link>http://feeds.the451group.com/~r/451opensource/~3/324700005/</link>
	<description>&lt;p&gt;Progress acquires IONA. Red Hat announces quarterly earnings. Optaros raises new round of funding. (and more)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.progress.com/news/working-together/index.ssp&quot;&gt;Progress Software Corporation to Acquire IONA Technologies&lt;/a&gt;, Progess Software / IONA Technologies (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://biz.yahoo.com/bw/080625/20080625005871.html?.v=1&quot;&gt;Red Hat Reports First Quarter Results&lt;/a&gt;, Red Hat (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.optaros.com/news/press-releases#optaros-closes-12-million-series-c-financing-co-led-406-ventures-globespan-capit&quot;&gt;Optaros Closes $12 Million in Series C Financing Co-Led by .406 Ventures &amp;#038; Globespan Capital Partners&lt;/a&gt;, Optaros (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://investor.sourcefire.com/phoenix.zhtml?c=204582&amp;#038;p=irol-newsArticle&amp;#038;ID=1169508&amp;#038;highlight=&quot;&gt;Sourcefire, Inc. Responds to Barracuda Networks Letter&lt;/a&gt;, Sourcefire (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.lipsforum.org/index.php?option=com_content&amp;#038;task=view&amp;#038;id=98&amp;#038;Itemid=165&quot;&gt;Linux Phone Standards (LiPS) Forum Joins Forces with LiMo&lt;/a&gt;, LiPS Forum&amp;nbsp;/ LiMo Foundation (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.microsoft.com/presspass/press/2008/jun08/06-30InteropUpdatePR.mspx&quot;&gt;Microsoft Takes Additional Steps in Implementing Interoperability Principles&lt;/a&gt;, Microsoft (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.sun.com/aboutsun/pr/2008-06/sunflash.20080627.1.xml&quot;&gt;Sun Microsystems Releases New GlassFish and MySQL Offering To Provide Customers With Unlimited Deployments of Enterprise Class Application Server and Database Software&lt;/a&gt;, Sun Microsystems (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.oracle.com/corporate/press/2008_jun/bdbfamily.html?rssid=rss_ocom_pr&quot;&gt;Oracle Updates Entire Family of Oracle Berkeley DB Embeddable Databases&lt;/a&gt;, Oracle (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://biz.yahoo.com/bw/080625/20080625005431.html?.v=1&quot;&gt;Openmoko Signs Five Distributors for Freerunner Open Source Mobile Phone&lt;/a&gt;, Openmoko (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.mulesource.com/company/press_releases/Mule_GalaxyEnterprise_063008.php&quot;&gt;MuleSource Releases Mule Galaxy Enterprise&lt;/a&gt;, MuleSource (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.netgear.com/About/PressReleases/en-US/2008/20080630.aspx&quot;&gt;NETGEAR Launches Open Source Wireless-G Router Enabling Linux Developers and Enthusiasts to Create Firmware for Specialized Applications&lt;/a&gt;, NETGEAR (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.marketwire.com/press-release/Zenoss-Inc-874763.html&quot;&gt;Zenoss Expands IT Management Solution for Managed Service Providers&lt;/a&gt;, Zenoss (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.actuate.com/company/news/press-releases-resources.asp?ArticleId=13561&quot;&gt;Actuate First to Provide Support for Eclipse BIRT 2.3&lt;/a&gt;, Actuate (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.open-xchange.com/header/company/news_press/press_releases/detail_view/article/latest_open_xchange_public_beta_gives_customers_a_free_preview_to_business_class_groupware/478.html&quot;&gt;Latest Open-Xchange Public Beta Gives Customers a Free Preview to Business-Class Groupware&lt;/a&gt;, Open-Xchange (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://biz.yahoo.com/bw/080701/20080701005407.html?.v=1&quot;&gt;Open Source Community Wins at Ingres Code Sprint&lt;/a&gt;, Ingres (Press Release)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.forbes.com/technology/2008/06/27/symbian-limo-google-tech-wire-cx_ew_0627symbian.html&quot;&gt;Coming Battle Over Open Source Phones&lt;/a&gt;, Forbes.com, Elizabeth Woyke (Article)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://searchenterpriselinux.techtarget.com/news/article/0,289142,sid39_gci1319455,00.html&quot;&gt;Linux experiences &amp;#8216;prolific&amp;#8217; growth, says Linux Foundation&amp;#8217;s Zemlin&lt;/a&gt;, SearchEnterpriseLinux.com, Pam Derringer (Article)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.newmobilecomputing.com/story/19914/Nvidia_Reiterates_Position_on_Closed_Source_Driver&quot;&gt;Nvidia Reiterates Position on Closed Source Driver&lt;/a&gt;, OSnews, Thom Holwerda (Article)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.internetnews.com/bus-news/article.php/3755446&quot;&gt;Red Hat CEO: Oracle/BEA Deal Is Helping Us&lt;/a&gt;, Internet News, Sean Michael Kerner (Article)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.techcrunch.com/2008/06/25/the-state-of-open-mobile-oses/&quot;&gt;The State of Open Mobile OSes&lt;/a&gt;, TechCrunch, John Biggs (Blog)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://practical-tech.com/operating-system/when-is-an-open-source-project-ready/&quot;&gt;When is an open-source project ready?&lt;/a&gt;, Practical Technology, Stephen j. Vaughan-Nichols (Blog)&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://redmonk.com/sogrady/2008/06/26/nokia_symbian/&quot;&gt;Nokia?s Open Source Response: The Symbian Q&amp;#038;A&lt;/a&gt;, RedMonk - tecosystems, Stephen O&amp;#8217;Grady (Blog)&lt;/p&gt;
&lt;img src=&quot;http://feeds.the451group.com/~r/451opensource/~4/324700005&quot; height=&quot;1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 02 Jul 2008 04:59:23 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: MySQL Challenge: Limit Rows Accessed - Continued</title>
	<guid>tag:blogger.com,1999:blog-27443162.post-6992892879280393955</guid>
	<link>http://marksitblog.blogspot.com/2008/07/mysql-challenge-limit-rows-accessed.html</link>
	<description>&lt;p&gt;Yesterday I blogged about the &lt;a href=&quot;http://marksitblog.blogspot.com/2008/06/mysql-challenge-limit-rows-accessed.html&quot;&gt;MySQL Challenge to limit rows accessed&lt;/a&gt;. Sheeri had some great comments about the subject, but didn't know either why the first 4 rows were not counted in my original solution:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;mysql&amp;gt; explain select actor_id from actor where actor_id % 5 = 0 and actor_id &amp;lt; 26;&lt;br /&gt;&lt;br /&gt;*************************** 1. row ***************************&lt;br /&gt;id: 1&lt;br /&gt;select_type: SIMPLE&lt;br /&gt;table: actor&lt;br /&gt;type: range&lt;br /&gt;possible_keys: PRIMARY&lt;br /&gt;key: PRIMARY&lt;br /&gt;key_len: 2&lt;br /&gt;ref: NULL&lt;br /&gt;rows: 20&lt;br /&gt;Extra: Using where; Using index&lt;br /&gt;&lt;br /&gt;mysql&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;I've been thinking about this some more, and wondered what would happen if I tried this query:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;mysql&amp;gt; select actor_id from actor where actor_id % 5 = 0 and actor_id &amp;lt; 26 and actor_id &amp;gt; 4;&lt;br /&gt;+----------+&lt;br /&gt;&amp;#124; actor_id &amp;#124;&lt;br /&gt;+----------+&lt;br /&gt;&amp;#124;        5 &amp;#124; &lt;br /&gt;&amp;#124;       10 &amp;#124; &lt;br /&gt;&amp;#124;       15 &amp;#124; &lt;br /&gt;&amp;#124;       20 &amp;#124; &lt;br /&gt;&amp;#124;       25 &amp;#124; &lt;br /&gt;+----------+&lt;br /&gt;5 rows in set (0.00 sec)&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This has the exact same results as my original solution, but check out what EXPLAIN has to say:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;mysql&amp;gt; explain select actor_id from actor where actor_id % 5 = 0 and actor_id &amp;lt; 26 and actor_id &amp;gt; 4\G&lt;br /&gt;&lt;br /&gt;*************************** 1. row ***************************&lt;br /&gt;           id: 1&lt;br /&gt;  select_type: SIMPLE&lt;br /&gt;        table: actor&lt;br /&gt;         type: range&lt;br /&gt;possible_keys: PRIMARY&lt;br /&gt;          key: PRIMARY&lt;br /&gt;      key_len: 2&lt;br /&gt;          ref: NULL&lt;br /&gt;         rows: 16&lt;br /&gt;        Extra: Using where; Using index&lt;br /&gt;1 row in set (0.00 sec)&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I would expect EXPLAIN to report 20 rows, not 16. I know EXPLAIN takes a best estimate as to how many rows maybe accessed for a given query, but I would think both EXPLAINations would return 20 rows. This is a simple query... Could this be a bug?&lt;br /&gt;&lt;br /&gt;More digging is in order!&lt;div class=&quot;blogger-post-footer&quot;&gt;MySQL DBA &amp;amp; Programming Blog by Mark Schoonover&lt;/div&gt;</description>
	<pubDate>Wed, 02 Jul 2008 04:36:00 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: Should we proclaim MySQL Community Edition Dead ?</title>
	<guid>http://www.mysqlperformanceblog.com/?p=425</guid>
	<link>http://www.mysqlperformanceblog.com/2008/07/01/should-we-proclaim-mysql-community-edition-dead/</link>
	<description>&lt;p&gt;We were chatting with &lt;a href=&quot;http://jcole.us/blog/&quot;&gt;Jeremy Cole&lt;/a&gt; today and he brought to my attention last version of &lt;a href=&quot;http://dev.mysql.com/downloads/mysql/5.0.html&quot;&gt;MySQL Community Eddition&lt;/a&gt; (5.0.51) was released in November 2007 - over 7 months ago.   MySQL 5.0.51a and MySQL 5.0.51b security fixes were released but these  can't be considered proper releases. &lt;/p&gt;
&lt;p&gt;If we look at the &lt;a href=&quot;http://blogs.mysql.com/kaj/2007/08/08/refining-mysql-community-server/&quot;&gt;old Kaj's Announcement&lt;/a&gt; we can see there suppose to be 2 yearly binary releases (which are overdue) and  4 predictable yearly source releases, which we have not seen either. &lt;/p&gt;
&lt;p&gt;Though, Honestly, I do not care that much any more.  I have adapted my ways not to go to &lt;a href=&quot;http://dev.mysql.com&quot;&gt;dev.mysql.com &lt;/a&gt;for MySQL downloads  any more but go to &lt;a href=&quot;http://mirror.provenscaling.com&quot;&gt;mirror.provenscaling.com&lt;/a&gt;, where Jeremy Cole promptly publish MySQL Enterprise sources and binaries.  We take sources and add spice them up with other community extensions which can't ever get included in official MySQL tree and use that version instead.&lt;/p&gt;
&lt;p&gt;It is worth to mention at the same time there are some improvements when it comes to development community MySQL now moved sources to &lt;a href=&quot;https://launchpad.net/mysql-server&quot;&gt;launchpad&lt;/a&gt;  - now it makes it easier for you as contributor  to create your branch or grab and test someone elses.  If you're just looking for stable, recent, binary MySQL Community release, there is little MySQL offers you.&lt;/p&gt;
    &lt;hr noshade=&quot;noshade&quot; /&gt;
    &lt;p&gt;Entry posted by peter |
      &lt;a href=&quot;http://www.mysqlperformanceblog.com/2008/07/01/should-we-proclaim-mysql-community-edition-dead/#comments&quot;&gt;19 comments&lt;/a&gt;&lt;/p&gt;
    &lt;p&gt;Add to: &lt;a href=&quot;http://del.icio.us/post?url=http://www.mysqlperformanceblog.com/2008/07/01/should-we-proclaim-mysql-community-edition-dead/&amp;amp;title=Should we proclaim MySQL Community Edition Dead ?&quot; title=&quot;Bookmark this post on del.icio.us&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/delicious.png&quot; alt=&quot;delicious&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http://www.mysqlperformanceblog.com/2008/07/01/should-we-proclaim-mysql-community-edition-dead/&amp;amp;title=Should we proclaim MySQL Community Edition Dead ?&quot; title=&quot;Digg this post on Digg.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/digg.png&quot; alt=&quot;digg&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://reddit.com/submit?url=http://www.mysqlperformanceblog.com/2008/07/01/should-we-proclaim-mysql-community-edition-dead/&amp;amp;title=Should we proclaim MySQL Community Edition Dead ?&quot; title=&quot;Submit this post on reddit.com&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/reddit.png&quot; alt=&quot;reddit&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.netscape.com/submit/?U=http://www.mysqlperformanceblog.com/2008/07/01/should-we-proclaim-mysql-community-edition-dead/&amp;amp;T=Should we proclaim MySQL Community Edition Dead ?&quot; title=&quot;Vote for this article on Netscape&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/netscape.gif&quot; alt=&quot;netscape&quot; /&gt;&lt;/a&gt; | &lt;a href=&quot;http://www.google.com/bookmarks/mark?op=add&amp;amp;bkmk=http://www.mysqlperformanceblog.com/2008/07/01/should-we-proclaim-mysql-community-edition-dead/&amp;amp;title=Should we proclaim MySQL Community Edition Dead ?&quot; title=&quot;Add to Google Bookmarks&quot;&gt;&lt;img src=&quot;http://www.mysqlperformanceblog.com/wp-content/themes/boxy-but-gold/images/google.png&quot; alt=&quot;Google Bookmarks&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Wed, 02 Jul 2008 02:41:44 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: The best MySQL book ever</title>
	<guid>tag:blogger.com,1999:blog-5915567578707286635.post-4270287080018525926</guid>
	<link>http://mysqlha.blogspot.com/2008/07/best-mysql-book-ever.html</link>
	<description>My copy of &lt;a href=&quot;http://oreilly.com/catalog/9780596101718/&quot;&gt;High Performance MySQL&lt;/a&gt; arrived today. Pardon the &lt;a href=&quot;http://en.wikipedia.org/wiki/Hyperbole&quot;&gt;hyperbole&lt;/a&gt; but I reviewed it and I just saw another episode of The Bachelor with the most dramatic rose ceremony ever.&lt;br /&gt;
&lt;br /&gt;
As good as this book is, it will soon need a third edition. There are several storage engines under development (PBXT, q4m, Maria, Falcon) and InnoDB continues to innovate (compression in the 5.1 plugin). Some of the things that we know (MyISAM and InnoDB don't scale on SMP) will no longer be true. And there will be many new things to figure out (just how do you tune Falcon).&lt;br /&gt;
&lt;br /&gt;
Can &lt;a href=&quot;http://dammit.lt/&quot;&gt;Domas&lt;/a&gt; help write the next edition?</description>
	<pubDate>Tue, 01 Jul 2008 20:04:00 +0000</pubDate>
</item>
<item>
	<title>Planet MySQL: InnoDB Transactional Characteristics</title>
	<guid>http://www.pythian.com/blogs/1104/innodb-transactional-characteristics</guid>
	<link>http://www.pythian.com/blogs/1104/innodb-transactional-characteristics</link>
	<description>&lt;p&gt;InnoDB is a storage engine that uses MVCC (described shortly) to provide &lt;a href=&quot;http://www.pythian.com/blogs/1101/transaction-basics-and-acid&quot;&gt;ACID-compliant transactional data storage&lt;/a&gt; using row-level locking.&amp;nbsp; MVCC stands for Multi-Version Concurrency Control.&amp;nbsp; It is how InnoDB allows multiple transactions to look at a data set of one or more tables and have a consistent view of the data.  MVCC keeps a virtual snapshot of the dataset for each transaction.&amp;nbsp; An example will make this clear. &lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s assume you have two transa