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

<channel>
  <title>Planet MySQL</title>
  <link>http://www.planetmysql.org/</link>
  <pubDate>Thu, 09 Feb 2012 05:30:01 +0000</pubDate>
  <language>en</language>
  <description>Planet MySQL - http://www.planetmysql.org/</description>

  <item>
    <title>I’m speaking at the MySQL conference in April</title>
    <guid isPermaLink="false">http://www.xaprb.com/blog/?p=2575</guid>
    <link>http://www.xaprb.com/blog/2012/02/08/im-speaking-at-the-mysql-conference-in-april/</link>
    <description>It might surprise you to hear this, but I had no idea whether my talks would be accepted.  The committee decided on that, and neither I nor anyone else at Percona is on the committee.  In any case, I&amp;#8217;ll be giving some tutorials again this year, and two of my talks have been accepted: Measuring Scalability and Performance With TCP and 
Diagnosing intermittent performance problems.

This seems like an appropriate place to mention a few words about the conference organization. The number of people involved is staggering (100+). The logistics &amp;#8212; the number of tasks, vendors, contracts, and so on &amp;#8212; blows the mind.  The upfront cost is literally unmentionable.  It&amp;#8217;s an exponentially bigger deal in every way than any of the conferences we&amp;#8217;ve done before. There is no way to explain it to anyone who isn&amp;#8217;t involved. I don&amp;#8217;t even comprehend it myself.

Despite this, we are working hard to ensure that the traditions we&amp;#8217;ve known and loved for years are continued.  It turns out that they all have a very high cost in real dollars. We are constantly faced with hard decisions that always involve &amp;#8220;how are we going to pay for this?&amp;#8221;  I wish that, for example, it could be simple and lightweight to organize BOFs. But there are unions and contracts and room minimums and overtime pay and bundled quotes and restrictions every which way.  Nothing is simple, nothing is easy, nothing is cheap &amp;#8212; regardless of how simple, easy, and cheap it should be.

And yet, there will be BOFs and dot-org booths and Drizzle Day and all the rest. And the ticket price is a lot less than it was last year.  If you appreciate this, you can help by getting attendees to come.  Please promote the conference to everyone you know, in every way you know.  Use Twitter, LinkedIn, Facebook, everything. Blog about it. Mention it in-person.  Ask your boss to send you and your colleagues, or send your team if you&amp;#8217;re the boss. Send email to your meetups and user groups and mailing lists, and ask them to promote it to their networks too. Enough said.

Further Reading:There will be an O&amp;#8217;Reilly MySQL Conference in April 2010
I&amp;#8217;ll be speaking at the O&amp;#8217;Reilly MySQL Conference 2010
Speaking at EdUI Conference 2009
The MySQL Conference will be very good this year
Postgres folks, consider the 2011 MySQL conference
</description>
    <content:encoded><![CDATA[<p>It might surprise you to hear this, but I had no idea whether my talks would be accepted.  The committee decided on that, and neither I nor anyone else at Percona is on the committee.  In any case, I&#8217;ll be giving some <a href="http://www.percona.com/live/mysql-conference-2012/program/schedule/tutorials">tutorials</a> again this year, and two of my talks have been accepted: <a href="http://www.percona.com/live/mysql-conference-2012/sessions/measuring-scalability-and-performance-tcp">Measuring Scalability and Performance With TCP</a> and 
<a href="http://www.percona.com/live/mysql-conference-2012/sessions/diagnosing-intermittent-performance-problems">Diagnosing intermittent performance problems</a>.</p>

<p>This seems like an appropriate place to mention a few words about the conference organization. The number of people involved is staggering (100+). The logistics &#8212; the number of tasks, vendors, contracts, and so on &#8212; blows the mind.  The upfront cost is literally unmentionable.  It&#8217;s an exponentially bigger deal in every way than any of the conferences we&#8217;ve done before. There is no way to explain it to anyone who isn&#8217;t involved. I don&#8217;t even comprehend it myself.</p>

<p>Despite this, we are working hard to ensure that the traditions we&#8217;ve known and loved for years are continued.  It turns out that they all have a very high cost in real dollars. We are constantly faced with hard decisions that always involve &#8220;how are we going to pay for this?&#8221;  I wish that, for example, it could be simple and lightweight to organize BOFs. But there are unions and contracts and room minimums and overtime pay and bundled quotes and restrictions every which way.  Nothing is simple, nothing is easy, nothing is cheap &#8212; regardless of how simple, easy, and cheap it should be.</p>

<p>And yet, there will be BOFs and dot-org booths and Drizzle Day and all the rest. And the ticket price is a lot less than it was last year.  If you appreciate this, you can help by getting attendees to come.  Please promote the conference to everyone you know, in every way you know.  Use Twitter, LinkedIn, Facebook, everything. Blog about it. Mention it in-person.  Ask your boss to send you and your colleagues, or send your team if you&#8217;re the boss. Send email to your meetups and user groups and mailing lists, and ask them to promote it to their networks too. Enough said.</p>

<p><strong>Further Reading:</strong><ul><li><a href="http://www.xaprb.com/blog/2009/12/11/there-will-be-an-oreilly-mysql-conference-in-april-2010/" rel="bookmark" title="Permanent Link: There will be an O’Reilly MySQL Conference in April 2010">There will be an O&#8217;Reilly MySQL Conference in April 2010</a></li>
<li><a href="http://www.xaprb.com/blog/2010/02/20/ill-be-speaking-at-the-oreilly-mysql-conference-2010/" rel="bookmark" title="Permanent Link: I’ll be speaking at the O’Reilly MySQL Conference 2010">I&#8217;ll be speaking at the O&#8217;Reilly MySQL Conference 2010</a></li>
<li><a href="http://www.xaprb.com/blog/2009/08/13/speaking-at-edui-conference-2009/" rel="bookmark" title="Permanent Link: Speaking at EdUI Conference 2009">Speaking at EdUI Conference 2009</a></li>
<li><a href="http://www.xaprb.com/blog/2010/01/25/the-mysql-conference-will-be-very-good-this-year/" rel="bookmark" title="Permanent Link: The MySQL Conference will be very good this year">The MySQL Conference will be very good this year</a></li>
<li><a href="http://www.xaprb.com/blog/2010/09/29/postgres-folks-consider-the-2011-mysql-conference/" rel="bookmark" title="Permanent Link: Postgres folks, consider the 2011 MySQL conference">Postgres folks, consider the 2011 MySQL conference</a></li>
</ul><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31955&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31955&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Thu, 09 Feb 2012 03:58:56 +0000</pubDate>
    <dc:creator>Baron Schwartz (xaprb)</dc:creator>
    <category>SQL</category>
  </item>

  <item>
    <title>Announcing Percona Server 5.5.20-24.1</title>
    <guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=8488</guid>
    <link>http://www.mysqlperformanceblog.com/2012/02/08/announcing-percona-server-5-5-20-24-1/</link>
    <description>Percona is glad to announce the release of Percona Server 5.5.20-24.1 on February 9th, 2012 (Downloads are available here and from the Percona Software Repositories).
Based on MySQL 5.5.20, including all the bug fixes in it, Percona Server 5.5.20-24.1 is now the current stable release in the 5.5 series. All of Percona ‘s software is open-source and free, all the details of the release can be found in the 5.5.20-24.1 milestone at Launchpad.
Full release notes available here: http://www.percona.com/doc/percona-server/5.5/release-notes/Percona-Server-5.5.20-24.1.html.</description>
    <content:encoded><![CDATA[<p>Percona is glad to announce the release of <em>Percona Server</em> 5.5.20-24.1 on February 9th, 2012 (Downloads are available <a href="http://www.percona.com/downloads/Percona-Server-5.5/Percona-Server-5.5.20-24.1/">here</a> and from the <a href="http://www.percona.com/docs/wiki/repositories%3Astart">Percona Software Repositories</a>).</p>
<p>Based on <a href="http://dev.mysql.com/doc/refman/5.5/en/news-5-5-20.html">MySQL 5.5.20</a>, including all the bug fixes in it, <em>Percona Server</em> 5.5.20-24.1 is now the current stable release in the 5.5 series. All of <em>Percona</em> ‘s software is open-source and free, all the details of the release can be found in the <a href="https://launchpad.net/percona-server/+milestone/5.5.20-24.1">5.5.20-24.1 milestone at Launchpad</a>.</p>
<div>Full release notes available here: <a href="http://www.percona.com/doc/percona-server/5.5/release-notes/Percona-Server-5.5.20-24.1.html">http://www.percona.com/doc/percona-server/5.5/release-notes/Percona-Server-5.5.20-24.1.html</a>.</div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31954&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31954&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Thu, 09 Feb 2012 00:14:45 +0000</pubDate>
    <dc:creator>Stewart Smith</dc:creator>
    <category>MySQL</category>
    <category>Percona Software</category>
  </item>

  <item>
    <title>Drizzle Day and MariaDB day to end your MySQL user conference</title>
    <guid isPermaLink="false">390 at http://openlife.cc</guid>
    <link>http://openlife.cc/blogs/2012/february/drizzle-day-and-mariadb-day-end-your-mysql-user-conference</link>
    <description>Good news to all of you who are going or were thinking of going to the Percona Live MySQL Conference and Expo. Yesterday two great addon events were announced, both happening on Friday April 13th, right after the main conference:
Drizzle Day 2012
read more</description>
    <content:encoded><![CDATA[<p>Good news to all of you who are going or were thinking of going to the <a href="http://www.percona.com/live/mysql-conference-2012/">Percona Live MySQL Conference and Expo</a>. Yesterday two great addon events were announced, both happening on Friday April 13th, right after the main conference:</p>
<p><a href="http://www.drizzle.org/content/drizzle-day-fri-13-apr-2012-santa-clara">Drizzle Day 2012</a></p>
<p><a href="http://openlife.cc/blogs/2012/february/drizzle-day-and-mariadb-day-end-your-mysql-user-conference" target="_blank">read more</a></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31953&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31953&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 23:16:54 +0000</pubDate>
    <dc:creator>Henrik Ingo</dc:creator>
    <category>Drizzle</category>
    <category>MariaDB</category>
    <category>MySQL</category>
    <category>SkySQL</category>
  </item>

  <item>
    <title>MySQL High Availability Realized - Webcast 2/16</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-5088740386330348582.post-2597147176628201699</guid>
    <link>http://continuent-tungsten.blogspot.com/2012/02/mysql-high-availability-realized.html</link>
    <description>High availability is about more than making sure that apps can get to  your data even if there is a failure. How about when you are upgrading  your database schema? What if you need to add memory to a database  server or reconfigure/restart MySQL? If your apps want to read data from  a MySQL slave, how can you be sure they are not reading stale data  without re-coding your apps? What if your main</description>
    <content:encoded><![CDATA[High availability is about more than making sure that apps can get to  your data even if there is a failure. How about when you are upgrading  your database schema? What if you need to add memory to a database  server or reconfigure/restart MySQL? If your apps want to read data from  a MySQL slave, how can you be sure they are not reading stale data  without re-coding your apps? What if your main<br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31952&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31952&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 21:24:00 +0000</pubDate>
    <dc:creator>Petri Virsunen</dc:creator>
    <category>MySQL</category>
    <category>Continuent Tungsten</category>
  </item>

  <item>
    <title>Successful Dallas Tech Tour</title>
    <guid isPermaLink="false">http://opensourcedba.wordpress.com/?p=584</guid>
    <link>http://opensourcedba.wordpress.com/2012/02/08/successful-dallas-tech-tour/</link>
    <description>Benjamin Wood talks at the Dallas MySQL Tech tour on the history of MySQL The first MySQL Tech Tour in Dallas is over.  A capacity crowd filled the room.  Only a few had never had &amp;#8216;hands on&amp;#8217; with the MySQL database and very few were comfortable source code readers.   The majority came to hear about embedding MySQL, how to tun systems for better performance, and some new features in the product.  
Benjamin Wood started with a presentation on the history of MySQL and the changes in the product over the last few releases. Craig Sylvester showed how to use embedded MySQL.  Then Benjamin capped off the event with a presentation on database monitoring and performance tuning. The event did go slightly over scheduled time due to an extended question and answer period following the presentations.  
Thanks to all who attended. Craig Sylvester talking at the Dallas MySQL Tech Tour about embedding MySQL
For MySQL Tech Tour events in your ares, click here.
         </description>
    <content:encoded><![CDATA[<p><div><a href="http://opensourcedba.files.wordpress.com/2012/02/ben.jpg"><img src="http://opensourcedba.files.wordpress.com/2012/02/ben.jpg?w=108&amp;h=150" alt="Bejanmin Wood" title="Benjamin Wood" width="108" height="150" class="size-thumbnail wp-image-585" /></a><p>Benjamin Wood talks at the Dallas MySQL Tech tour on the history of MySQL</p></div> The first MySQL Tech Tour in Dallas is over.  A capacity crowd filled the room.  Only a few had never had &#8216;hands on&#8217; with the MySQL database and very few were comfortable source code readers.   The majority came to hear about embedding MySQL, how to tun systems for better performance, and some new features in the product.  </p>
<p>Benjamin Wood started with a presentation on the history of MySQL and the changes in the product over the last few releases. Craig Sylvester showed how to use embedded MySQL.  Then Benjamin capped off the event with a presentation on database monitoring and performance tuning. The event did go slightly over scheduled time due to an extended question and answer period following the presentations.  </p>
<p>Thanks to all who attended. <div><a href="http://opensourcedba.files.wordpress.com/2012/02/photo.jpg"><img src="http://opensourcedba.files.wordpress.com/2012/02/photo.jpg?w=108&amp;h=150" alt="Craig Sylvester" title="Craig Sylvester" width="108" height="150" class="size-thumbnail wp-image-586" /></a><p>Craig Sylvester talking at the Dallas MySQL Tech Tour about embedding MySQL</p></div></p>
<p>For MySQL Tech Tour events in your ares, click <a href="http://www.mysql.com/news-and-events/events/" target="_blank">here</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/opensourcedba.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/opensourcedba.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/opensourcedba.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/opensourcedba.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/opensourcedba.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/opensourcedba.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/opensourcedba.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/opensourcedba.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/opensourcedba.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/opensourcedba.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/opensourcedba.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/opensourcedba.wordpress.com/584/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/opensourcedba.wordpress.com/584/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/opensourcedba.wordpress.com/584/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=opensourcedba.wordpress.com&amp;blog=15386988&amp;post=584&amp;subd=opensourcedba&amp;ref=&amp;feed=1" width="1" height="1" /><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31951&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31951&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 20:54:53 +0000</pubDate>
    <dc:creator>Dave Stokes</dc:creator>
    <category>MySQL Enterprise</category>
  </item>

  <item>
    <title>Dot-Org Pavilion at the Percona Live MySQL Conference</title>
    <guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=8483</guid>
    <link>http://www.mysqlperformanceblog.com/2012/02/08/dot-org-pavilion-at-the-percona-live-mysql-conference/</link>
    <description>This is a cross-post from my personal blog. Are you involved with an open-source project that&amp;#8217;s interesting to MySQL users, such as Nginx, PHPMyAdmin, Drupal, Jenkins, PHP, and so on?  Percona just published the application form for dot-org groups to have a free expo hall booth in the Percona Live MySQL Conference in April.  Please submit your applications now, and tell your friends about this, because a) the schedule for applying is very short, and b) space is limited.
For those of you who don&amp;#8217;t know what this is, it&amp;#8217;s another of the O&amp;#8217;Reilly traditions we&amp;#8217;re trying to continue.  (We are trying very hard to make this event as close to a clone of O&amp;#8217;Reilly&amp;#8217;s as we can.)  It&amp;#8217;s a free table in the expo hall where people who participate in a non-commercial open source project can exhibit.  I organized a Maatkit booth a few times in the past, and was always really grateful to O&amp;#8217;Reilly for making the space available.  Space in the expo hall is at a premium, but we think that these dot-org booths are even more valuable to the open-source projects and the conference attendees.
So, please tell your friends who care about open source, and ask them to tell their friends too.  Let&amp;#8217;s get some great open-source projects into the expo hall, alongside the commercial vendors!</description>
    <content:encoded><![CDATA[<p><em>This is a cross-post from <a href="http://www.xaprb.com/blog/2012/02/06/dot-org-pavilion-at-the-percona-live-mysql-conference/">my personal blog</a>.</em> Are you involved with an open-source project that&#8217;s interesting to MySQL users, such as Nginx, PHPMyAdmin, Drupal, Jenkins, PHP, and so on?  Percona just published the application form for dot-org groups to have a <a href="http://www.percona.com/live/mysql-conference-2012/content/dot-org-pavilion">free expo hall booth</a> in the Percona Live MySQL Conference in April. <strong> Please submit your applications now, and tell your friends about this</strong>, because a) the schedule for applying is very short, and b) space is limited.</p>
<p>For those of you who don&#8217;t know what this is, it&#8217;s another of the O&#8217;Reilly traditions we&#8217;re trying to continue.  (We are trying very hard to make this event as close to a clone of O&#8217;Reilly&#8217;s as we can.)  It&#8217;s a free table in the expo hall where people who participate in a non-commercial open source project can exhibit.  I organized a Maatkit booth a few times in the past, and was always really grateful to O&#8217;Reilly for making the space available.  Space in the expo hall is at a premium, but we think that these dot-org booths are even more valuable to the open-source projects and the conference attendees.</p>
<p>So, please tell your friends who care about open source, and ask them to tell their friends too.  Let&#8217;s get some great open-source projects into the expo hall, alongside the commercial vendors!</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31950&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31950&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 18:38:50 +0000</pubDate>
    <dc:creator>MySQL Performance Blog</dc:creator>
    <category>Events and Announcements</category>
    <category>MySQL</category>
  </item>

  <item>
    <title>North Texas MySQL Users Group Meeting set for March 12th</title>
    <guid isPermaLink="false">http://opensourcedba.wordpress.com/?p=579</guid>
    <link>http://opensourcedba.wordpress.com/2012/02/08/north-texas-mysql-users-group-meeting-set-for-march-12th/</link>
    <description>The March meeting of the North Texas MySQL Users Group will be March 12th from five to seven PM at the Irving office.  Pizza will be provided and a special guest speaker is double checking their schedule.  Come come network, gather swag, and learn more about MySQL.
Please RSVP below by leaving a comment so we can plan on a) enough pizza, b) any special pizza topping request, and c) have enough meeting space for the pizza.
Oracle Office
6031 Connection Drive
Irving, TX 75039
         </description>
    <content:encoded><![CDATA[<p>The March meeting of the North Texas MySQL Users Group will be March 12th from five to seven PM at the Irving office.  Pizza will be provided and a special guest speaker is double checking their schedule.  Come come network, gather swag, and learn more about MySQL.</p>
<p>Please RSVP below by leaving a comment so we can plan on a) enough pizza, b) any special pizza topping request, and c) have enough meeting space for the pizza.</p>
<p>Oracle Office<br />
6031 Connection Drive<br />
Irving, TX 75039</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/opensourcedba.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/opensourcedba.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/opensourcedba.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/opensourcedba.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/opensourcedba.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/opensourcedba.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/opensourcedba.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/opensourcedba.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/opensourcedba.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/opensourcedba.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/opensourcedba.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/opensourcedba.wordpress.com/579/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/opensourcedba.wordpress.com/579/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/opensourcedba.wordpress.com/579/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=opensourcedba.wordpress.com&amp;blog=15386988&amp;post=579&amp;subd=opensourcedba&amp;ref=&amp;feed=1" width="1" height="1" /><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31949&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31949&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 15:04:56 +0000</pubDate>
    <dc:creator>Dave Stokes</dc:creator>
    <category>MySQL</category>
    <category>Uncategorized</category>
  </item>

  <item>
    <title>Shinguz: I prefer MySQL binary tar balls with Galera...</title>
    <guid isPermaLink="false">http://www.fromdual.com/mysql-binary-tar-ball-with-galera</guid>
    <link>http://www.fromdual.com/mysql-binary-tar-ball-with-galera</link>
    <description>In my set-ups I have different MySQL versions (MySQL 5.0, 5.1, 5.5 and 5.6, Percona Server 13.1 and 24.0, MariaDB 5.2.10, 5.3.3, Galera 1.0, 1.1 and 2.0) running in parallel at the same time.
Up to now I have not found a practical way yet to do this with RPM or DEB packages. If anybody knows how to do it I am happy to hear about it.
So I love and need only binary tar balls. Installation and removal is done within seconds and no remainings are left over after a removal. To operate the whole I use myenv.
Some software providers unfortunately do not provide binary tar balls at all or not in the form I want and need them. Thus I was thinking about how to get those by extracting them from packages. Up to now I have not had the time to write this down. But today was the right time...
RPM
rpm2cpio galera-22.1.1-1.rhel5.x86_64.rpm | cpio -vidm
tar czf galera-22.1.1-1.rhel5.x86_64.tar.gz usr
rm -rf usr
Extract with:
tar xf galera-22.1.1-1.rhel5.x86_64.tar.gzDEB
ar vx galera-22.1.1-amd64.deb
mv data.tar.gz galera-22.1.1-amd64.deb.tar.gz
rm debian-binary control.tar.gz
Extract with:
tar -mxf galera-22.1.1-amd64.deb.tar.gz
The packages look quite the same in size:
-rw-r--r-- 1 oli oli 6725416 2012-02-08 13:49 galera-22.1.1-1.rhel5.x86_64.rpm
-rw-r--r-- 1 oli oli 6769606 2012-02-08 14:18 galera-22.1.1-1.rhel5.x86_64.tar.gz

-rw-r--r-- 1 oli oli 1386762 2011-12-12 17:12 galera-22.1.1-amd64.deb
-rw-r--r-- 1 oli oli 1385994 2012-02-08 14:18 galera-22.1.1-amd64.deb.tar.gz
so I assume that there is nothing lost.
The differences in size between DEB and RPM seems to come from the packaging itself:
usr_deb/lib/galera/libgalera_smm.so:   ELF 64-bit (SYSV), dynamically linked, stripped
usr_rpm/lib64/galera/libgalera_smm.so: ELF 64-bit (SYSV), dynamically linked, not stripped
So nothing to worry. The programs itself worked without any problems after the first tests. So I am optimistic that this is a good workaround until I can convince the software vendor to make good binary tar balls...</description>
    <content:encoded><![CDATA[<p>In my set-ups I have different MySQL versions (<a href="http://dev.mysql.com/" target="_blank">MySQL</a> 5.0, 5.1, 5.5 and 5.6, <a href="http://www.percona.com/software/percona-server/" target="_blank">Percona Server</a> 13.1 and 24.0, <a href="http://mariadb.org/" target="_blank">MariaDB</a> 5.2.10, 5.3.3, <a href="http://codership.com/" target="_blank">Galera</a> 1.0, 1.1 and 2.0) running in parallel at the same time.<br />
Up to now I have not found a practical way yet to do this with <code>RPM</code> or <code>DEB</code> packages. If anybody knows how to do it I am happy to hear about it.</p>
<p>So I love and need only binary tar balls. Installation and removal is done within seconds and no remainings are left over after a removal. To operate the whole I use <a href="http://www.fromdual.ch/myenv-mysql-basenv">myenv</a>.<br />
Some software providers unfortunately do not provide binary tar balls at all or not in the form I want and need them. Thus I was thinking about how to get those by extracting them from packages. Up to now I have not had the time to write this down. But today was the right time...</p>
<h2>RPM</h2>
<pre>rpm2cpio galera-22.1.1-1.rhel5.x86_64.rpm | cpio -vidm
tar czf galera-22.1.1-1.rhel5.x86_64.tar.gz usr
rm -rf usr</pre><p>
Extract with:</p>
<pre>tar xf galera-22.1.1-1.rhel5.x86_64.tar.gz</pre><h2>DEB</h2>
<pre>ar vx galera-22.1.1-amd64.deb
mv data.tar.gz galera-22.1.1-amd64.deb.tar.gz
rm debian-binary control.tar.gz</pre><p>
Extract with:</p>
<pre>tar -mxf galera-22.1.1-amd64.deb.tar.gz</pre><p>
The packages look quite the same in size:</p>
<pre>-rw-r--r-- 1 oli oli 6725416 2012-02-08 13:49 galera-22.1.1-1.rhel5.x86_64.rpm
-rw-r--r-- 1 oli oli 6769606 2012-02-08 14:18 galera-22.1.1-1.rhel5.x86_64.tar.gz

-rw-r--r-- 1 oli oli 1386762 2011-12-12 17:12 galera-22.1.1-amd64.deb
-rw-r--r-- 1 oli oli 1385994 2012-02-08 14:18 galera-22.1.1-amd64.deb.tar.gz</pre><p>
so I assume that there is nothing lost.</p>
<p>The differences in size between <code>DEB</code> and <code>RPM</code> seems to come from the packaging itself:</p>
<pre>usr_deb/lib/galera/libgalera_smm.so:   ELF 64-bit (SYSV), dynamically linked, stripped
usr_rpm/lib64/galera/libgalera_smm.so: ELF 64-bit (SYSV), dynamically linked, not stripped</pre><p>
So nothing to worry. The programs itself worked without any problems after the first tests. So I am optimistic that this is a good workaround until I can convince the software vendor to make good binary tar balls...</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31948&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31948&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 14:13:18 +0000</pubDate>
  </item>

  <item>
    <title>common_schema rev. 218: QueryScript, throttling, processes, documentation</title>
    <guid isPermaLink="false">http://code.openark.org/blog/?p=4526</guid>
    <link>http://code.openark.org/blog/mysql/common_schema-rev-218-queryscript-throttling-processes-documentation</link>
    <description>common_schema, revision 218 is released, with major new features, top one being server side scripting. Here are the highlights:

QueryScript: server side scripting is now supported by common_schema, which acts as an interpreter for QueryScript code.
Throttling for queries is now made available via the throttle() function.
Enhancements to processlist-related views, including the new slave_hosts view.
Inline documentation/help is available via the help() routine.
more...

QueryScript
common_schema makes for a QueryScript implementation for MySQL. You can run server side scripts, interpreted by common_schema, which allow for easy syntax and greater power than was otherwise previously available on the MySQL server. For example:

foreach($table, $schema, $engine: table like '%')
  if ($engine = 'ndbcluster')
    ALTER ONLINE TABLE :$schema.:$table REORGANIZE PARTITION;

QueryScript includes flow control, conditional branching, variables &amp;amp; variable expansion, script throttling and more.
Read more on common_schema's QueryScript implementation.
Query throttling
Throttling for MySQL queries was suggested by means of elaborate query manipulation. It is now reduced into a single throttle function: one can now just invoke throttle(3) on one's query, so as to make the query execute for a longer time, while taking short sleep breaks during operation, easing up the query's demand for resources.
Read more on query throttling.
Process views
The processlist_grantees view provides with more details on the running processes. slave_hosts is a new view, listing hostnames of connected slaves.
Read more on process views.
help()
The common_schema documentation is now composed of well over 100 pages, including synopsis, detailed internals discussion, notes and examples. I can't exaggerate in saying that the documentation took the vast majority of time for this code to release.
The documentation is now made available inline, from within you mysql client, via the help() routine. Want to know more about redundant (duplicate) keys and how to find them? Just type:

call help('redundant');

and see what comes out!
The entire documentation, which is available online as well as a downloadable bundle, is embedded into common_schema itself. It's rather cool.
Tests
common_schema is tested. The number of tests in common_schema is rapidly growing, and new tests are introduced for new features as well as for older ones. There is not yet full coverage for all views, but I'm working hard at it. common_schema is a robust piece of code!
Get it!
Download common_schema on the common_schema project page.
Read the documentation online, or download it as well (or call for help())
common_schema is released under the BSD license.</description>
    <content:encoded><![CDATA[<p><a href="http://code.google.com/p/common-schema/">common_schema</a>, revision <strong>218</strong> is released, with major new features, top one being <em>server side scripting</em>. Here are the highlights:</p>
<ul>
<li><a href="http://www.queryscript.com/"><strong>QueryScript</strong></a>: server side scripting is now supported by <em>common_schema</em>, which acts as an interpreter for QueryScript code.</li>
<li>Throttling for queries is now made available via the <strong>throttle()</strong> function.</li>
<li>Enhancements to processlist-related views, including the new <strong>slave_hosts</strong> view.</li>
<li>Inline documentation/help is available via the <strong>help()</strong> routine.</li>
<li>more...</li>
</ul>
<h4>QueryScript</h4>
<p><em>common_schema</em> makes for a QueryScript implementation for MySQL. You can run server side scripts, interpreted by <em>common_schema</em>, which allow for easy syntax and greater power than was otherwise previously available on the MySQL server. For example:</p>
<blockquote>
<pre>foreach($table, $schema, $engine: table like '%')
  if ($engine = 'ndbcluster')
    ALTER ONLINE TABLE :$schema.:$table REORGANIZE PARTITION;</pre>
</blockquote>
<p>QueryScript includes flow control, conditional branching, variables &amp; variable expansion, script throttling and more.</p>
<p>Read more on <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/query_script.html">common_schema's QueryScript implementation</a>.</p>
<h4><span></span>Query throttling</h4>
<p><a href="http://code.openark.org/blog/mysql/self-throttling-mysql-queries">Throttling for MySQL queries</a> was suggested by means of elaborate query manipulation. It is now reduced into a single throttle function: one can now just invoke <strong>throttle(3)</strong> on one's query, so as to make the query execute for a <em>longer</em> time, while taking short sleep breaks during operation, easing up the query's demand for resources.</p>
<p>Read more on <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/throttle.html">query throttling</a>.</p>
<h4>Process views</h4>
<p>The <strong>processlist_grantees</strong> view provides with more details on the running processes. <strong>slave_hosts</strong> is a new view, listing hostnames of connected slaves.</p>
<p>Read more on <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/process_views.html">process views</a>.</p>
<h4>help()</h4>
<p>The <em>common_schema</em> documentation is now composed of well over <strong>100</strong> pages, including synopsis, detailed internals discussion, notes and examples. I can't exaggerate in saying that the documentation took the vast majority of time for this code to release.</p>
<p>The documentation is now made available inline, from within you mysql client, via the <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/help.html"><strong>help()</strong></a> routine. Want to know more about redundant (duplicate) keys and how to find them? Just type:</p>
<blockquote>
<pre>call help('redundant');</pre>
</blockquote>
<p>and see what comes out!</p>
<p>The entire <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/introduction.html">documentation</a>, which is available online as well as a downloadable bundle, is embedded into <em>common_schema</em> itself. It's rather cool.</p>
<h4>Tests</h4>
<p><em>common_schema</em> is tested. The number of tests in <em>common_schema</em> is rapidly growing, and new tests are introduced for new features as well as for older ones. There is not yet full coverage for all views, but I'm working hard at it. <em>common_schema</em> is a robust piece of code!</p>
<h4>Get it!</h4>
<p>Download <em>common_schema</em> on the <a href="http://code.google.com/p/common-schema">common_schema project page</a>.</p>
<p>Read the documentation <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/introduction.html">online</a>, or download it as well (or call for <strong>help()</strong>)</p>
<p><em>common_schema</em> is released under the BSD license.</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31946&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31946&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 09:53:30 +0000</pubDate>
    <dc:creator>Shlomi Noach</dc:creator>
    <category>MySQL</category>
    <category>Administration</category>
    <category>common_schema</category>
    <category>Development</category>
    <category>Open Source</category>
    <category>QueryScript</category>
    <category>scripts</category>
  </item>

  <item>
    <title>QueryScript: SQL scripting language</title>
    <guid isPermaLink="false">http://code.openark.org/blog/?p=4596</guid>
    <link>http://code.openark.org/blog/mysql/queryscript-sql-scripting-language</link>
    <description>Introducing QueryScript: a programming language aimed for SQL scripting, seamlessly combining scripting power such as flow control &amp;amp; variables with standard SQL statements or RDBMS-specific commands.
QueryScript is available fro MySQL via common_schema, which adds MySQL-specific usage.
What does QueryScript look like? Here are a few code samples:
Turn a bulk DELETE operation into smaller tasks. Throttle in between.

while (DELETE FROM archive.events WHERE ts &amp;lt; CURDATE() LIMIT 1000)
{
  throttle 2;
}

Convert all InnoDB tables in the 'sakila' database to compressed format:

foreach ($table, $schema, $engine: table in sakila)
{
  if ($engine = 'InnoDB')
    ALTER TABLE :$schema.:$table ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
}

Shard your data across multiple schemata:

foreach($shard: {USA, GBR, JAP, FRA})
{
  CREATE DATABASE db_:$shard;
  CREATE TABLE db_:$shard.city LIKE world.City;
  INSERT INTO db_:$shard.city SELECT * FROM world.City WHERE CountryCode = $shard;
}

This tight integration between script and SQL, with the power of iteration, conditional statements, variables, variable expansion, throttling etc., makes QueryScript a power tool, with capabilities superseding those of stored routines, and allowing for simplified, dynamic code.
QueryScript code is interpreted. It's just a text, so it can be read from a @user_defined_variable, a table column, text file, what have you. For example:

mysql&amp;gt; set @script := &quot;while (TIME(SYSDATE()) &amp;lt; '17:00:00') SELECT * FROM world.City WHERE id = 1 + FLOOR((RAND()*4079));&quot;;
mysql&amp;gt; call run(@script);

For more details, consult the QueryScript site.
If you're a MySQL user/DBA, better read the common_schema QueryScript documentation, to better understand the specific common_schema implementation and enhanced features.
common_schema, including the QueryScript interpreter, can be downloaded from the common_schema project page.</description>
    <content:encoded><![CDATA[<p>Introducing <strong><a href="http://www.queryscript.com/">QueryScript</a></strong>: a programming language aimed for SQL scripting, seamlessly combining scripting power such as flow control &amp; variables with standard SQL statements or RDBMS-specific commands.</p>
<p>QueryScript is available fro MySQL via <a href="http://code.google.com/p/common-schema">common_schema</a>, which adds MySQL-specific usage.</p>
<p><em>What does QueryScript look like?</em> Here are a few code samples:</p>
<p>Turn a bulk DELETE operation into smaller tasks. Throttle in between.</p>
<blockquote>
<pre>while (DELETE FROM archive.events WHERE ts &lt; CURDATE() LIMIT 1000)
{
  throttle 2;
}</pre>
</blockquote>
<p>Convert all InnoDB tables in the 'sakila' database to compressed format:</p>
<blockquote>
<pre>foreach ($table, $schema, $engine: table in sakila)
{
  if ($engine = 'InnoDB')
    ALTER TABLE :$schema.:$table ENGINE=InnoDB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
}</pre>
</blockquote>
<p>Shard your data across multiple schemata:</p>
<blockquote>
<pre>foreach($shard: {USA, GBR, JAP, FRA})
{
  CREATE DATABASE db_:$shard;
  CREATE TABLE db_:$shard.city LIKE world.City;
  INSERT INTO db_:$shard.city SELECT * FROM world.City WHERE CountryCode = $shard;
}</pre>
</blockquote>
<p><span></span>This tight integration between script and SQL, with the power of iteration, conditional statements, variables, variable expansion, throttling etc., makes QueryScript a power tool, with capabilities superseding those of stored routines, and allowing for simplified, dynamic code.</p>
<p>QueryScript code is interpreted. It's just a text, so it can be read from a @user_defined_variable, a table column, text file, what have you. For example:</p>
<blockquote>
<pre>mysql&gt; <strong>set</strong> @script := "while (TIME(SYSDATE()) &lt; '17:00:00') SELECT * FROM world.City WHERE id = 1 + FLOOR((RAND()*4079));";
mysql&gt; <strong>call</strong> run(@script);</pre>
</blockquote>
<p>For more details, consult the <strong><a href="http://www.queryscript.com/">QueryScript</a></strong> site.</p>
<p>If you're a MySQL user/DBA, better read the <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/query_script.html"><strong>common_schema QueryScript documentation</strong></a>, to better understand the specific <em>common_schema</em> implementation and enhanced features.</p>
<p><em>common_schema</em>, including the QueryScript interpreter, can be downloaded from the <a href="http://code.google.com/p/common-schema">common_schema project page</a>.</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31947&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31947&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 09:43:19 +0000</pubDate>
    <dc:creator>Shlomi Noach</dc:creator>
    <category>MySQL</category>
    <category>Administration</category>
    <category>common_schema</category>
    <category>Development</category>
    <category>Open Source</category>
    <category>QueryScript</category>
    <category>scripts</category>
  </item>

  <item>
    <title>Adding dynamic fields to Signups on Drupal</title>
    <guid isPermaLink="false">783@http://blogs.sakienvirotech.com/</guid>
    <link>http://blogs.sakienvirotech.com/index.php/random/2012/02/08/adding-dynamic-fields-to-signups</link>
    <description>In my day job at SkySQL I work with Drupal as our content management system.&amp;#160; One thing we often need to do is provide a way for people to sign up for events and the like.&amp;#160; One such event is the upcoming SkySQL and MariaDB: Solutions Day for the MySQL&amp;#174; Database and unlike other events we needed to take into account the dietary requirements of those wishing to attend.
For events registration we use the Signup module and use a theme template function to provide a set of standard fields.&amp;#160; The code looks something like this:
function ourtheme_signup_user_form($node) {  $form = array();  // If this function is providing any extra fields at all, the following  // line is required for form form to work -- DO NOT EDIT OR REMOVE.  $form['signup_form_data']['#tree'] = TRUE;  $form['signup_form_data']['FirstName'] = array(    '#type' =&amp;gt; 'textfield',    '#title' =&amp;gt; t('First Name'),    '#size' =&amp;gt; 40, '#maxlength' =&amp;gt; 64,    '#required' =&amp;gt; TRUE,  );  $form['signup_form_data']['LastName'] = array(    '#type' =&amp;gt; 'textfield',    '#title' =&amp;gt; t('Last Name'),    '#size' =&amp;gt; 40, '#maxlength' =&amp;gt; 64,    '#required' =&amp;gt; TRUE,  );
And so on, building up the elements and then returning the form.&amp;#160; This is great because it allows us to have a standard set of fields for all signup pages, making life a lot simpler when creating content that requires registration.&amp;#160; But the Solutions Day event required an extra field.&amp;#160; I could have done this a number of ways, including putting logic in the template file to check for that particular node and only display the field then, or perhaps some other hack specific to this node.&amp;#160; I, however, don't like specifics and tend to look for a generic solution, as the exception invariably becomes the rule.
For this exercise I wanted to be able to have a way of specifying for a particular node any extra fields that are available for this form.&amp;#160; So I now have in the template.php file the following code:
// If there is a special field required for this, check and display  if (!empty($node-&amp;gt;field_signup_extra) &amp;amp;&amp;amp; !empty($node-&amp;gt;field_signup_extra[0]['value'])) {    $extras = explode(&quot;\n&quot;, $node-&amp;gt;field_signup_extra[0]['value']);    foreach ($extras as $field_def) {        $field_def = trim($field_def);        if (empty($field_def)) {            continue;        }        $elems = explode('|', $field_def);        $field_name = array_unshift($elems);        $form['signup_form_data'][$field_name] = array();        foreach ($elems as $field_element) {          list($key, $val) = explode('=',$field_element);          if ($key == 'options') {              $val = explode(',', $val);          }          $form['signup_form_data'][$field_name]['#' . $key] = $val;        }    }  }
Now all I need to do is create a field that is non-displayable but contains information to build extra fields.&amp;#160; For example the content that describes the Dietary Requirements field is:
dietary_requirements|title=Dietary Requirements|size=40|type=textfield
The production version does a little more analysis of the input to ensure there are no possible attack vectors, but I've left that out for clarity sake.
Now, if I have an event (or other content type) that needs extra signup fields, I ensure that the content type has the new Signup Extras field and fill it on the new content with a simple field definition that Signup can use.Original post blogged on Saki Envirotech Blogs.</description>
    <content:encoded><![CDATA[<p>In my day job at <a href="http://www.skysql.com/">SkySQL</a> I work with <a href="http://drupal.org/">Drupal</a> as our content management system.&#160; One thing we often need to do is provide a way for people to sign up for events and the like.&#160; One such event is the upcoming <a href="http://www.skysql.com/events/mysql-solutions-day">SkySQL and MariaDB: Solutions Day for the MySQL&#174; Database</a> and unlike other events we needed to take into account the dietary requirements of those wishing to attend.</p>
<p>For events registration we use the <a href="http://drupal.org/project/signup">Signup module</a> and use a theme template function to provide a set of standard fields.&#160; The code looks something like this:</p>
<pre>function ourtheme_signup_user_form($node) {<br />  $form = array();<br />  // If this function is providing any extra fields at all, the following<br />  // line is required for form form to work -- DO NOT EDIT OR REMOVE.<br />  $form['signup_form_data']['#tree'] = TRUE;<br /><br />  $form['signup_form_data']['FirstName'] = array(<br />    '#type' =&gt; 'textfield',<br />    '#title' =&gt; t('First Name'),<br />    '#size' =&gt; 40, '#maxlength' =&gt; 64,<br />    '#required' =&gt; TRUE,<br />  );<br />  $form['signup_form_data']['LastName'] = array(<br />    '#type' =&gt; 'textfield',<br />    '#title' =&gt; t('Last Name'),<br />    '#size' =&gt; 40, '#maxlength' =&gt; 64,<br />    '#required' =&gt; TRUE,<br />  );<br /></pre>
<p>And so on, building up the elements and then returning the form.&#160; This is great because it allows us to have a standard set of fields for all signup pages, making life a lot simpler when creating content that requires registration.&#160; But the Solutions Day event required an extra field.&#160; I could have done this a number of ways, including putting logic in the template file to check for that particular node and only display the field then, or perhaps some other hack specific to this node.&#160; I, however, don't like specifics and tend to look for a generic solution, as the exception invariably becomes the rule.</p>
<p>For this exercise I wanted to be able to have a way of specifying for a particular node any extra fields that are available for this form.&#160; So I now have in the template.php file the following code:</p>
<pre>// If there is a special field required for this, check and display<br />  if (!empty($node-&gt;field_signup_extra) &amp;&amp; !empty($node-&gt;field_signup_extra[0]['value'])) {<br />    $extras = explode("\n", $node-&gt;field_signup_extra[0]['value']);<br />    foreach ($extras as $field_def) {<br />        $field_def = trim($field_def);<br />        if (empty($field_def)) {<br />            continue;<br />        }<br />        $elems = explode('|', $field_def);<br />        $field_name = array_unshift($elems);<br /><br />        $form['signup_form_data'][$field_name] = array();<br />        foreach ($elems as $field_element) {<br />          list($key, $val) = explode('=',$field_element);<br />          if ($key == 'options') {<br />              $val = explode(',', $val);<br />          }<br />          $form['signup_form_data'][$field_name]['#' . $key] = $val;<br />        }<br />    }<br />  }<br /></pre>
<p>Now all I need to do is create a field that is non-displayable but contains information to build extra fields.&#160; For example the content that describes the Dietary Requirements field is:</p>
<pre>dietary_requirements|title=Dietary Requirements|size=40|type=textfield<br /></pre>
<p>The production version does a little more analysis of the input to ensure there are no possible attack vectors, but I've left that out for clarity sake.</p>
<p>Now, if I have an event (or other content type) that needs extra signup fields, I ensure that the content type has the new Signup Extras field and fill it on the new content with a simple field definition that Signup can use.</p><div><p><small><a href="http://blogs.sakienvirotech.com/index.php/random/2012/02/08/adding-dynamic-fields-to-signups">Original post</a> blogged on <a href="http://blogs.sakienvirotech.com/random">Saki Envirotech Blogs</a>.</small></p></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31944&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31944&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 05:05:00 +0000</pubDate>
    <dc:creator>Adam Donnison</dc:creator>
    <category>Open Source</category>
    <category> Open World</category>
    <category>Drupal</category>
  </item>

  <item>
    <title>Drizzle Day 2012</title>
    <guid isPermaLink="false">http://www.flamingspork.com/blog/?p=2461</guid>
    <link>http://www.flamingspork.com/blog/2012/02/08/drizzle-day-2012/</link>
    <description>Henrik has already posted it over on the Drizzle Blog, but I thought I&amp;#8217;d give a shout out here too.
We&amp;#8217;re holding a Drizzle Day right after the Percona Live MySQL Conference and Expo in April. So, since you&amp;#8217;re all like me and don&amp;#8217;t book your travel this far in advance, it&amp;#8217;ll be easy to stay for the extra day and come and learn awesome things about Drizzle.
I&amp;#8217;m also pretty glad that my employer, Percona is sponsoring the event.
</description>
    <content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Henrik has already posted it over on the <a href="http://blog.drizzle.org/2012/02/07/announcing-drizzle-day-2012-on-fri-13-apr-in-santa-clara/">Drizzle Blog</a>, but I thought I&#8217;d give a shout out here too.</p>
<p>We&#8217;re holding a <a href="http://www.drizzle.org/content/drizzle-day-fri-13-apr-2012-santa-clara">Drizzle Day</a> right after the Percona Live <a href="http://www.percona.com/live/mysql-conference-2012/">MySQL Conference and Expo</a> in April. So, since you&#8217;re all like me and don&#8217;t book your travel this far in advance, it&#8217;ll be easy to stay for the extra day and come and learn awesome things about Drizzle.</p>
<p>I&#8217;m also pretty glad that my employer, <a href="http://www.percona.com">Percona</a> is sponsoring the event.</p>
<div></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><div></div><div><a data-shr_layout='button_count' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.flamingspork.com%2Fblog%2F2012%2F02%2F08%2Fdrizzle-day-2012%2F' data-shr_title='Drizzle+Day+2012'></a><a data-shr_href='http%3A%2F%2Fwww.flamingspork.com%2Fblog%2F2012%2F02%2F08%2Fdrizzle-day-2012%2F'></a><a data-shr_size='medium' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.flamingspork.com%2Fblog%2F2012%2F02%2F08%2Fdrizzle-day-2012%2F' data-shr_title='Drizzle+Day+2012'></a><a data-shr_count='horizontal' data-shr_href='http%3A%2F%2Fwww.flamingspork.com%2Fblog%2F2012%2F02%2F08%2Fdrizzle-day-2012%2F' data-shr_title='Drizzle+Day+2012'></a></div><div></div><!-- End Shareaholic LikeButtonSetBottom Automatic --><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31942&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31942&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 03:24:35 +0000</pubDate>
    <dc:creator>Stewart Smith</dc:creator>
    <category>drizzle</category>
    <category>mysql</category>
    <category>percona</category>
  </item>

  <item>
    <title>Three free MySQL webinars</title>
    <guid isPermaLink="false">http://www.xaprb.com/blog/?p=2590</guid>
    <link>http://www.xaprb.com/blog/2012/02/07/three-free-mysql-webinars/</link>
    <description>I&amp;#8217;m scheduled to deliver several free MySQL webinars via Percona and ODTUG in the upcoming weeks. I hope you can join me:


February 16 &amp;#8211; Verifying Replication Integrity with Percona Toolkit via ODTUG.
February 22 &amp;#8211; EXPLAIN Demystified via Percona.
March 14 &amp;#8211; Optimizing MySQL Configuration via Percona.


Further Reading:Free webinar Wednesday: verifying replication integrity
Free webinar on MySQL performance this Thursday
Free webinar on preventing MySQL downtime
MySQL: Free Software but not Open Source
Get a free sample chapter of High Performance MySQL Second Edition
</description>
    <content:encoded><![CDATA[<p>I&#8217;m scheduled to deliver several free MySQL webinars via <a href="http://www.percona.com/">Percona</a> and <a href="http://odtug.com/">ODTUG</a> in the upcoming weeks. I hope you can join me:</p>

<ul>
<li>February 16 &#8211; <a href="https://www3.gotomeeting.com/register/897093158%20">Verifying Replication Integrity with Percona Toolkit</a> via ODTUG.</li>
<li>February 22 &#8211; <a href="http://www.percona.com/webinars/2012-02-22-explain-demystified/%20">EXPLAIN Demystified</a> via Percona.</li>
<li>March 14 &#8211; <a href="http://www.percona.com/webinars/2012-03-14-optimizing-mysql-configuration/">Optimizing MySQL Configuration</a> via Percona.</li>
</ul>

<p><strong>Further Reading:</strong><ul><li><a href="http://www.xaprb.com/blog/2012/01/16/free-webinar-wednesday-verifying-replication-integrity/" rel="bookmark" title="Permanent Link: Free webinar Wednesday: verifying replication integrity">Free webinar Wednesday: verifying replication integrity</a></li>
<li><a href="http://www.xaprb.com/blog/2010/08/23/free-webinar-on-mysql-performance-this-thursday/" rel="bookmark" title="Permanent Link: Free webinar on MySQL performance this Thursday">Free webinar on MySQL performance this Thursday</a></li>
<li><a href="http://www.xaprb.com/blog/2011/10/13/free-webinar-on-preventing-mysql-downtime/" rel="bookmark" title="Permanent Link: Free webinar on preventing MySQL downtime">Free webinar on preventing MySQL downtime</a></li>
<li><a href="http://www.xaprb.com/blog/2008/05/14/mysql-free-software-but-not-open-source/" rel="bookmark" title="Permanent Link: MySQL: Free Software but not Open Source">MySQL: Free Software but not Open Source</a></li>
<li><a href="http://www.xaprb.com/blog/2008/04/16/get-a-free-sample-chapter-of-high-performance-mysql-second-edition/" rel="bookmark" title="Permanent Link: Get a free sample chapter of High Performance MySQL Second Edition">Get a free sample chapter of High Performance MySQL Second Edition</a></li>
</ul><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31941&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31941&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Wed, 08 Feb 2012 03:13:07 +0000</pubDate>
    <dc:creator>Baron Schwartz (xaprb)</dc:creator>
    <category>SQL</category>
  </item>

  <item>
    <title>The community helping customers restore faster with mysqldump</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-3812360659149323517.post-7185526411364042880</guid>
    <link>http://sqlhjalp.blogspot.com/2012/02/community-helping-customers-restore.html</link>
    <description>A big thanks to Xiaobin Lin for taking the time to submit and the related patch for bug #64248. The     patch is based on 5.5.20 This should help users to restore their database faster thanks to fast index creation. More information is available via the bugs page. I have heard that this is just one of several patches he has contributed.  Contributions such as this, help MySQL to continue to deliver an always improving product.  So a big “Thank You” from the MySQL team.</description>
    <content:encoded><![CDATA[A big thanks to Xiaobin Lin for taking the time to submit and the related patch for <a href="http://bugs.mysql.com/bug.php?id=64248">bug #64248</a>. <strike></strike>The     patch is based on 5.5.20 <br />This should help users to restore their database faster thanks to fast index creation. More information is available via the <a href="http://bugs.mysql.com/bug.php?id=64248">bugs page</a>. I have heard that this is just one of several patches he has contributed.  <br /><div>Contributions such as this, help MySQL to continue to deliver an always improving product.  </div><div><br /></div>So a big “Thank You” from the MySQL team.<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3812360659149323517-7185526411364042880?l=sqlhjalp.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31940&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31940&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Tue, 07 Feb 2012 23:06:00 +0000</pubDate>
    <dc:creator>Keith Larson</dc:creator>
    <category>MySQL</category>
    <category>mysql bugs</category>
    <category>Contribute</category>
  </item>

  <item>
    <title>XtraBackup Manager - Job Control, Better Debugging and some little fixes...</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-8394358003318535041.post-7615223664898014526</guid>
    <link>http://mysqlsoapbox.blogspot.com/2012/02/xtrabackup-manager-job-control-better.html</link>
    <description>Hi Everyone,Just a quick note to let you know that I've just finished up adding some new features to XtraBackup Manager.You can now get better visibility into what is going on inside XtraBackup Manager with the &quot;xbm status&quot; command.It will allow you to see which backup jobs are running and also those which may be waiting to start, due to the maximum number of concurrent backup tasks already running.It looks/works as follows:[xbm@localhost ~]$ xbm statusXtraBackup Manager v0.8 - Copyright 2011-2012 Marin SoftwareCurrently Running Backups:+--------+-----------+-------------+---------------------+-------------------+------+| Job ID | &amp;nbsp; Host &amp;nbsp; &amp;nbsp;| Backup Name | &amp;nbsp; &amp;nbsp; Start Time &amp;nbsp; &amp;nbsp; &amp;nbsp;| &amp;nbsp; &amp;nbsp; &amp;nbsp;Status &amp;nbsp; &amp;nbsp; &amp;nbsp; | PID &amp;nbsp;|+--------+-----------+-------------+---------------------+-------------------+------+| 14 &amp;nbsp; &amp;nbsp; | localhost | test-backup | 2012-02-07 14:19:19 | Performing Backup | 2525 |+--------+-----------+-------------+---------------------+-------------------+------+Note: I have to thank a tiny little BSD-licensed project I found on Google Code called PHP text table for saving me the need to reinvent the wheel in providing this very mysql command-line client-styled table output.In addition to seeing which jobs are running/queued, if there is a backup job you would like to abort for some reason, then you can now simply use the &quot;xbm kill&quot; command with a Job ID taken from the &quot;xbm status&quot; output:[xbm@localhost ~]$ xbm kill 14XtraBackup Manager v0.8 - Copyright 2011-2012 Marin SoftwareAction: Backup Job ID 14 was killed.The backup job itself will log an event at the ERROR level, like:2012-02-07 14:19:30 -0800 [ERROR] : [ The backup job was killed by an administrator. Aborting... ]2012-02-07 14:19:30 -0800 [INFO] : [ Cleaning up files... ]2012-02-07 14:19:30 -0800 [INFO] : [ Released lock on port 10000. ]2012-02-07 14:19:31 -0800 [ERROR] : [ Exiting after the backup job was killed... ]I'm still not 100% on whether an aborted backup message should be considered an &quot;Error&quot; level event or an &quot;Info&quot; level event. My thinking is that I'd prefer to know if a job was aborted, so I figure putting it at the ERROR level will ensure it is always logged.Now speaking quickly of the log levels -- it is now useful to increase your logging level in config.php from INFO to DEBUG.You will see the exact commands used for running backups by XtraBackup Manager, which can be useful when troubleshooting XBM-related issues.It will enable logging like the below -- Note: The password is _actually_ masked when writing the command to the log. You're welcome ;-)2012-02-07 14:19:19 -0800 [INFO] : [ Staging an INCREMENTAL xtrabackup snapshot of /var/lib/mysql via ssh: mysql@localhost to /tmp/xbm-3592510/deltas... ]2012-02-07 14:19:19 -0800 [DEBUG] : [ Attempting to run the incremental backup with command:ssh -o StrictHostKeyChecking=no -p 22 mysql@localhost 'cd /tmp/xbm-3592510 ; innobackupex --ibbackup=xtrabackup --slave-info --incremental-lsn=2325647 /tmp/xbm-3592510/deltas --user=root --safe-slave-backup  --password=XXXXXXX --no-timestamp --incremental --throttle=0 1&amp;gt;&amp;amp;2 '  ]Aside from the above, some other small fixes were made, including ensuring that all temporary files created on the database host that you're backing up are created in the defined &quot;staging_tmpdir&quot; -- This is a parameter that is set at the host level in XtraBackup Manager.eg.&amp;nbsp;shell&amp;gt; xbm host edit hostname staging_tmpdir /path/to/useI encourage you to check out the XtraBackup Manager Project and open issues with any problems you encounter or other feedback.Cheers,Lachlan</description>
    <content:encoded><![CDATA[Hi Everyone,<br /><br />Just a quick note to let you know that I've just finished up adding some new features to <a href="http://code.google.com/p/xtrabackup-manager/" target="_blank">XtraBackup Manager</a>.<br /><br />You can now get better visibility into what is going on inside <a href="http://code.google.com/p/xtrabackup-manager/" target="_blank">XtraBackup Manager</a> with the "xbm status" command.<br /><br />It will allow you to see which backup jobs are running and also those which may be waiting to start, due to the maximum number of concurrent backup tasks already running.<br /><br />It looks/works as follows:<br /><br /><pre>[xbm@localhost ~]$ xbm status<br /><br />XtraBackup Manager v0.8 - Copyright 2011-2012 Marin Software<br /><br />Currently Running Backups:<br /><br />+--------+-----------+-------------+---------------------+-------------------+------+<br />| Job ID | &nbsp; Host &nbsp; &nbsp;| Backup Name | &nbsp; &nbsp; Start Time &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp;Status &nbsp; &nbsp; &nbsp; | PID &nbsp;|<br />+--------+-----------+-------------+---------------------+-------------------+------+<br />| 14 &nbsp; &nbsp; | localhost | test-backup | 2012-02-07 14:19:19 | Performing Backup | 2525 |<br />+--------+-----------+-------------+---------------------+-------------------+------+<br /></pre><br />Note: I have to thank a tiny little BSD-licensed project I found on Google Code called <a href="http://code.google.com/p/php-text-table/" target="_blank">PHP text table</a> for saving me the need to reinvent the wheel in providing this very mysql command-line client-styled table output.<br /><br /><br />In addition to seeing which jobs are running/queued, if there is a backup job you would like to abort for some reason, then you can now simply use the "xbm kill" command with a Job ID taken from the "xbm status" output:<br /><br /><pre>[xbm@localhost ~]$ xbm kill 14<br /><br />XtraBackup Manager v0.8 - Copyright 2011-2012 Marin Software<br /><br />Action: Backup Job ID 14 was killed.<br /></pre><br />The backup job itself will log an event at the ERROR level, like:<br /><br /><pre>2012-02-07 14:19:30 -0800 [ERROR] : [ The backup job was killed by an administrator. Aborting... ]<br />2012-02-07 14:19:30 -0800 [INFO] : [ Cleaning up files... ]<br />2012-02-07 14:19:30 -0800 [INFO] : [ Released lock on port 10000. ]<br />2012-02-07 14:19:31 -0800 [ERROR] : [ Exiting after the backup job was killed... ]<br /></pre><br />I'm still not 100% on whether an aborted backup message should be considered an "Error" level event or an "Info" level event. My thinking is that I'd prefer to know if a job was aborted, so I figure putting it at the ERROR level will ensure it is always logged.<br /><br />Now speaking quickly of the log levels -- it is now useful to increase your logging level in config.php from INFO to DEBUG.<br /><br />You will see the exact commands used for running backups by <a href="http://code.google.com/p/xtrabackup-manager/" target="_blank">XtraBackup Manager</a>, which can be useful when troubleshooting XBM-related issues.<br /><br />It will enable logging like the below -- Note: The password is _actually_ masked when writing the command to the log. You're welcome ;-)<br /><br /><pre>2012-02-07 14:19:19 -0800 [INFO] : [ Staging an INCREMENTAL xtrabackup snapshot of /var/lib/mysql via ssh: mysql@localhost to /tmp/xbm-3592510/deltas... ]<br />2012-02-07 14:19:19 -0800 [DEBUG] : [ Attempting to run the incremental backup with command:<br />ssh -o StrictHostKeyChecking=no -p 22 mysql@localhost 'cd /tmp/xbm-3592510 ; innobackupex --ibbackup=xtrabackup --slave-info --incremental-lsn=2325647 /tmp/xbm-3592510/deltas --user=root --safe-slave-backup  --password=XXXXXXX --no-timestamp --incremental --throttle=0 1&gt;&amp;2 ' <br /> ]<br /></pre><br />Aside from the above, some other small fixes were made, including ensuring that all temporary files created on the database host that you're backing up are created in the defined "staging_tmpdir" -- This is a parameter that is set at the host level in <a href="http://code.google.com/p/xtrabackup-manager/" target="_blank">XtraBackup Manager</a>.<br /><br />eg.&nbsp;<span>shell&gt; xbm host edit hostname staging_tmpdir /path/to/use</span><br /><br />I encourage you to check out the <a href="http://code.google.com/p/xtrabackup-manager/" target="_blank">XtraBackup Manager Project</a> and open issues with any problems you encounter or other feedback.<br /><br />Cheers,<br />Lachlan<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/8394358003318535041-7615223664898014526?l=mysqlsoapbox.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31939&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31939&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Tue, 07 Feb 2012 22:45:00 +0000</pubDate>
    <dc:creator>Lachlan Mulcahy</dc:creator>
    <category>xtrabackup_manager xbm xtrabackup mysql</category>
  </item>

  <item>
    <title>Announcing the SkySQL &amp;amp; MariaDB Solutions Day for the MySQL® Database:  Free Training for Developers, DBAs, &amp;amp; IT Architects</title>
    <guid isPermaLink="false">816 at http://www.skysql.com</guid>
    <link>http://www.skysql.com/blogs/kathoneil27/announcing-skysql-mariadb-solutions-day-mysql-database-free-training-developers-db</link>
    <description>SkySQL and MariaDB are delighted to announce that we&amp;rsquo;ll be co-hosting our first Solutions Day for the MySQL&amp;reg; Database on 13 April, 2012, at the Hyatt Regency Santa Clara.

	During this one day event, attendees will receive free, hands-on training on MySQL database solutions from the experts at SkySQL, MariaDB, Continuent, ScaleDB, Severalnines, Sphinx, and Webyog, among others.
	As well, SkySQL and MariaDB will bring together industry visionaries, including Michael (Monty) Widenius and David Axmark, the original authors of the MySQL database, to share their insights on current and future trends pertaining to the world&amp;rsquo;s most popular open source database.
Register Now!
Benefits of Attending:


		Obtain free training and hands-on experience that will help you optimize, scale, and enhance your MySQL database deployments

		Learn how to integrate your applications with popular MySQL solutions from Sphinx, ScaleDB, among others

		Learn how to create a high availability (HA) environment for your MySQL databases using the latest HA solutions

		Gain valuable insights into how to adapt your MySQL solutions to the Cloud

		Hear from industry leaders about current and future trends surrounding the MySQL database and technology ecosystem

		Network with and learn from your peers in the MySQL Community

Who Should Attend:


		MySQL Database Administrators

		Application Developers building solutions on MySQL

		Development/Engineering Management

		IT Architects

Cost of Attending:


		The SkySQL &amp;amp; MariaDB: Solutions Day for the MySQL Database &amp;ndash; featuring keynotes from industry visionaries, six intensive tutorials, and lunch &amp;ndash; is absolutely free to attendees.

To learn more, take a look at our event schedule, featured speakers, the venue. &amp;nbsp;As well, follow our discussions on Twitter @skysql #mysqlday, and on Facebook.
Register Now!
&amp;nbsp;</description>
    <content:encoded><![CDATA[<p>SkySQL and MariaDB are delighted to announce that we&rsquo;ll be co-hosting our first <a href="http://www.skysql.com/events/mysql-solutions-day">Solutions Day for the MySQL&reg; Database</a> on 13 April, 2012, at the <a href="http://www.skysql.com/events/mysql-solutions-day/venue">Hyatt Regency Santa Clara</a>.</p>
<p>
	During this one day event, attendees will receive <a href="http://www.skysql.com/events/mysql-solutions-day/schedule">free, hands-on training</a> on MySQL database solutions from the experts at SkySQL, MariaDB, Continuent, ScaleDB, Severalnines, Sphinx, and Webyog, among others.</p>
<p>	As well, SkySQL and MariaDB will bring together <a href="http://www.skysql.com/events/mysql-solutions-day/speakers">industry visionaries</a>, including Michael (Monty) Widenius and David Axmark, the original authors of the MySQL database, to share their insights on current and future trends pertaining to the world&rsquo;s most popular open source database.</p>
<p><a href="http://www.skysql.com/events/mysql-solutions-day"><strong>Register Now!</strong></a></p>
<p><strong>Benefits of Attending:</strong></p>
<ul>
<li>
		Obtain free training and hands-on experience that will help you optimize, scale, and enhance your MySQL database deployments</li>
<li>
		Learn how to integrate your applications with popular MySQL solutions from Sphinx, ScaleDB, among others</li>
<li>
		Learn how to create a high availability (HA) environment for your MySQL databases using the latest HA solutions</li>
<li>
		Gain valuable insights into how to adapt your MySQL solutions to the Cloud</li>
<li>
		Hear from industry leaders about current and future trends surrounding the MySQL database and technology ecosystem</li>
<li>
		Network with and learn from your peers in the MySQL Community</li>
</ul>
<p><strong>Who Should Attend:</strong></p>
<ul>
<li>
		MySQL Database Administrators</li>
<li>
		Application Developers building solutions on MySQL</li>
<li>
		Development/Engineering Management</li>
<li>
		IT Architects</li>
</ul>
<p><strong>Cost of Attending:</strong></p>
<ul>
<li>
		The SkySQL &amp; MariaDB: Solutions Day for the MySQL Database &ndash; featuring keynotes from industry visionaries, six intensive tutorials, and lunch &ndash; is absolutely free to attendees.</li>
</ul>
<p>To learn more, take a look at our event <a href="http://www.skysql.com/events/mysql-solutions-day/schedule">schedule</a>, featured <a href="http://%20http:0//www.skysql.com/events/mysql-solutions-day/speakers">speakers</a>, the <a href="http://www.skysql.com/events/mysql-solutions-day/venue">venue</a>. &nbsp;As well, follow our discussions on Twitter @skysql #mysqlday, and on <a href="http://www.faceook.com/skysql">Facebook</a>.</p>
<p><a href="http://www.skysql.com/events/mysql-solutions-day"><b>Register Now!</b></a></p>
<p>&nbsp;</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31921&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31921&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Tue, 07 Feb 2012 13:00:00 +0000</pubDate>
    <dc:creator>SkySQL</dc:creator>
    <category>MariaDB</category>
    <category>MySQL</category>
    <category>SkySQL</category>
  </item>

  <item>
    <title>LOAD DATA INFILE to resolve locks</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-375697951860081841.post-7406409195557081590</guid>
    <link>http://www.jonathanlevin.co.uk/2012/02/load-data-infile-to-resolve-locks.html</link>
    <description>In relation to this MPB post, there is a command to output data into a file and then to load it back into MySQL to resolve locks.&amp;nbsp;(An example of a really big reporting query that could be quite heavy, can be found here.)

There is an issue with outputting&amp;nbsp;data into a file&amp;nbsp;through&amp;nbsp;MySQL if the file already&amp;nbsp;exists. For example:


mysql&amp;gt; use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed&amp;nbsp;mysql&amp;gt; select * from user into outfile '/tmp/user.sql';
Query OK, 10 rows affected (0.00 sec)&amp;nbsp;mysql&amp;gt; select * from user into outfile '/tmp/user.sql';
ERROR 1086 (HY000): File '/tmp/user.sql' already exists

So to resolve this, I played around with the \! command (which lets you run commands on your OS):

mysql&amp;gt; \! rm -rf /tmp/user.sql
mysql&amp;gt; select * from user into outfile '/tmp/user.sql';
Query OK, 10 rows affected (0.00 sec)&amp;nbsp;mysql&amp;gt; \! rm -rf /tmp/user.sql
mysql&amp;gt; select * from user into outfile '/tmp/user.sql';
Query OK, 10 rows affected (0.00 sec)This seemed to have worked.
Apart from security issues and OS specific commands, anyone see anything&amp;nbsp;wrong with this approach?Perhaps I should wrap it around in a stored procedure..
</description>
    <content:encoded><![CDATA[In relation to <a href="http://www.mysqlperformanceblog.com/2006/07/12/insert-into-select-performance-with-innodb-tables/">this MPB post</a>, there is a command to output data into a file and then to load it back into MySQL to resolve locks.&nbsp;(An example of a really big reporting query that could be quite heavy, can be found <a href="http://stackoverflow.com/questions/1414794/create-table-as-select-killing-mysql">here</a>.)<br />
<br />
There is an issue with outputting&nbsp;data into a file&nbsp;through&nbsp;MySQL if the file already&nbsp;exists. For example:<br />
<br />
<br />
<blockquote>mysql&gt; use mysql<br />
Reading table information for completion of table and column names<br />
You can turn off this feature to get a quicker startup with -A<br />
Database changed&nbsp;</blockquote><blockquote>mysql&gt; select * from user into outfile '/tmp/user.sql';<br />
Query OK, 10 rows affected (0.00 sec)&nbsp;</blockquote><blockquote>mysql&gt; select * from user into outfile '/tmp/user.sql';<br />
ERROR 1086 (HY000): File '/tmp/user.sql' already exists</blockquote><br />
<br />
So to resolve this, I played around with the \! command (which lets you run commands on your OS):<br />
<br />
<blockquote>mysql&gt; \! rm -rf /tmp/user.sql<br />
mysql&gt; select * from user into outfile '/tmp/user.sql';<br />
Query OK, 10 rows affected (0.00 sec)&nbsp;</blockquote><blockquote>mysql&gt; \! rm -rf /tmp/user.sql<br />
mysql&gt; select * from user into outfile '/tmp/user.sql';<br />
Query OK, 10 rows affected (0.00 sec)</blockquote><div><br class="Apple-interchange-newline" /></div><div>This seemed to have worked.</div><div><br />
</div><div>Apart from security issues and OS specific commands, anyone see anything&nbsp;wrong with this approach?</div><div>Perhaps I should wrap it around in a stored procedure..</div><div><br />
</div><div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/375697951860081841-7406409195557081590?l=www.jonathanlevin.co.uk" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31922&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31922&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Tue, 07 Feb 2012 12:58:00 +0000</pubDate>
    <dc:creator>Jonathan Levin</dc:creator>
  </item>

  <item>
    <title>Meet The MySQL Experts Podcast: MySQL &amp; PHP</title>
    <guid isPermaLink="false">http://blogs.oracle.com/MySQL/entry/meet_the_mysql_experts_podcast</guid>
    <link>http://blogs.oracle.com/MySQL/entry/meet_the_mysql_experts_podcast</link>
    <description>The latest episode of our “Meet The MySQL Experts”
podcast focuses on MySQL &amp;amp; PHP! Andrey Hristov and Johannes Schlüter
from the MySQL Connectors Team talk about various ways PHP developers can use
MySQL, and also how they can leverage the MySQL Query Analyzer to optimize
queries. 
    
    
  Enjoy the podcast! 
    
    
  For additional information about MySQL &amp;amp; PHP, check out our
last special
edition newsletter. 
   </description>
    <content:encoded><![CDATA[<p><span>The latest episode of our <a href="http://feeds.feedburner.com/MeetTheMysqlExperts">“Meet The MySQL Experts”
podcast</a> focuses on MySQL &amp; PHP! </span><span>Andrey Hristov and Johannes Schlüter
from the MySQL Connectors Team talk about various ways PHP developers can use
MySQL, and also how they can leverage the MySQL Query Analyzer to optimize
queries.</span></p> 
  <p> </p> 
  <p><span><span> </span></span></p> 
  <p><span>Enjoy the <a href="http://streaming.oracle.com/ebn/podcasts/media/11369638_PHP_020612.mp3">podcast!</a></span></p> 
  <p> </p> 
  <p><span> </span></p> 
  <p><span>For additional information about MySQL &amp; PHP, check out our
last <a href="http://www.oracle.com/us/dm/100031315-oem-index-1400497.html?msgid=3-5564091171">special
edition newsletter</a>.</span></p> 
  <p><span> </span></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31920&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31920&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Tue, 07 Feb 2012 08:17:04 +0000</pubDate>
    <dc:creator>MySQL Community</dc:creator>
    <category>MySQL</category>
    <category>mysql</category>
    <category>php</category>
  </item>

  <item>
    <title>Announcing Percona Toolkit Release 2.0.3</title>
    <guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=8462</guid>
    <link>http://www.mysqlperformanceblog.com/2012/02/06/announcing-percona-toolkit-release-2-0-3/</link>
    <description>We&amp;#8217;ve released Percona Toolkit 2.0.3, with a couple of major improvements and many minor ones.  You can download it, read the documentation, and get support for it.
What&amp;#8217;s new? You can read the changelog for the details, but here are the highlights:
Brand new pt-diskstats, thanks to Brian Fraser. This tool is completely rewritten, and it&amp;#8217;s finally the iostat replacement I always wanted.  Not only does it have the functionality I want (interactive, slice and dice, smart defaults) but it has the detailed statistics on I/O, so you can see whether your reads are slow versus your writes, and whether things are waiting on the disk or waiting on the queue scheduler (cfq, hint hint).  Finally, it has transparency, so you can read the documentation and understand, really, what it&amp;#8217;s doing at the low level and what that means for your server. We really need specific, precise information on exactly how the I/O is behaving so we can make good decisions when there are problems or when doing things like capacity planning.
Brand new pt-stalk, courtesy of Daniel Nichter.  This tool is also completely rewritten.  Instead of a Bash script that you have to configure with environment variables and run in a screen session, this is now a first-class fault detection daemon. Everyone needs post-mortem forensic data when there is a problem, and pt-stalk aims to be a core part of your infrastructure that fills this gap.  It now supports things a &amp;#8220;real&amp;#8221; Percona Toolkit tool ought to have, such as command-line options and a configuration file.  In addition, we merged pt-collect into it, so as of Percona Toolkit 2.0.3, there isn&amp;#8217;t a separate pt-collect tool anymore.
There&amp;#8217;s a lot more to this release, but those are the major points.  Download it and let us know how it works, please!  If you find bugs, file them on Launchpad, and if you need support, you know where to get it.</description>
    <content:encoded><![CDATA[<p>We&#8217;ve released Percona Toolkit 2.0.3, with a couple of major improvements and many minor ones.  You can <a href="http://www.percona.com/downloads/percona-toolkit/">download</a> it, read the <a href="http://www.percona.com/doc/percona-toolkit/2.0/">documentation</a>, and get <a href="http://www.percona.com/mysql-support/">support</a> for it.</p>
<p>What&#8217;s new? You can read the <a href="http://www.percona.com/doc/percona-toolkit/2.0/release_notes.html#v2-0-3-released-2012-02-03">changelog</a> for the details, but here are the highlights:</p>
<p><strong>Brand new <a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-diskstats.html">pt-diskstats</a></strong>, thanks to Brian Fraser. This tool is completely rewritten, and it&#8217;s finally the iostat replacement I always wanted.  Not only does it have the functionality I want (interactive, slice and dice, smart defaults) but it has the detailed statistics on I/O, so you can see whether your reads are slow versus your writes, and whether things are waiting on the disk or waiting on the queue scheduler (<a href="http://www.mysqlperformanceblog.com/2010/05/25/flashcache-tpcc-workload/">cfq</a>, hint hint).  Finally, it has transparency, so you can read the documentation and understand, really, what it&#8217;s doing at the low level and what that means for your server. We really need specific, precise information on exactly how the I/O is behaving so we can make good decisions when there are problems or when doing things like capacity planning.</p>
<p><strong>Brand new <a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-stalk.html">pt-stalk</a></strong>, courtesy of Daniel Nichter.  This tool is also completely rewritten.  Instead of a Bash script that you have to configure with environment variables and run in a screen session, this is now a first-class fault detection daemon. Everyone needs post-mortem forensic data when there is a problem, and pt-stalk aims to be a core part of your infrastructure that fills this gap.  It now supports things a &#8220;real&#8221; Percona Toolkit tool ought to have, such as command-line options and a configuration file.  In addition, we merged pt-collect into it, so as of Percona Toolkit 2.0.3, there isn&#8217;t a separate pt-collect tool anymore.</p>
<p>There&#8217;s a lot more to this release, but those are the major points.  Download it and let us know how it works, please!  If you find bugs, <a href="https://bugs.launchpad.net/percona-toolkit">file them on Launchpad</a>, and if you need support, <a href="http://www.percona.com/mysql-support/">you know where to get it</a>.</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31919&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31919&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Mon, 06 Feb 2012 23:47:41 +0000</pubDate>
    <dc:creator>MySQL Performance Blog</dc:creator>
    <category>Events and Announcements</category>
    <category>Insight for DBAs</category>
    <category>MySQL</category>
    <category>Percona Software</category>
  </item>

  <item>
    <title>SpyMemcached Transcoder with PHP PDO Objects using ZLIB</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-31421954.post-844374301485812746</guid>
    <link>http://mysqldba.blogspot.com/2012/02/spymemcached-transcoder-with-php-pdo.html</link>
    <description>My technology stack services more then 2 Million Daily Active users. &amp;nbsp;Its very basic. PHP talks to mySQL, Memcache, RabbitMQ, Gearman and Facebook. &amp;nbsp;Now that we have more Java specifically to support our SmartFox Server and other services,&amp;nbsp;blurring&amp;nbsp;the lines between what data is set in PHP and what data is read in Java is very necessary.Java J-Connect makes reading mySQL Data as simple IMHO as PHP's PDO. What is hard is reading PHP's serialized format&amp;nbsp;from PHP's Memcache&amp;nbsp;library.In PHP there are two main C backed&amp;nbsp;Libraries. There is Memcache the&amp;nbsp;original&amp;nbsp;PHP library which I happen to use, and Memcached which is the library I wanted to use but didn't deploy since EC2 package system conflicted and cause issues (I fixed them but to late to deploy). Memcache stores data in PHP's serialized format and compresses it via ZLIB, while Memcached can store data as PHP's serialized format, JSON, Binary Serialized (which is rather awesome), JSON Array Notation and has a multitude of compressing formats none of which are pure ZLIB that I noticed.Here is the problem. Spymemcached is a lib for talking to memcache but can't unserialized PHP serialized format (or read it&amp;nbsp;natively&amp;nbsp;and return a string) and cannot Decompress ZLIB but can Decompress GZIP. Now a great speed up would be to use PHP's serialized data set from PHP and share memcache resources from PHP and Java just like what is done for the mySQL resources.What needs to be done? Well, build your own Transcoder for Spymemcached.&amp;nbsp;Fortunately Spymemcached documented an interface to do just that.What is needed. Implement the spymemcached Interface defined here. Use org.lorecraft.phparser to unserialize PHP data &amp;nbsp;defined here. Return the Object.&amp;nbsp;Below is the code.package com.schoolfeed.spymemcached;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.zip.InflaterInputStream;import net.spy.memcached.CachedData;import net.spy.memcached.compat.CloseUtil;import net.spy.memcached.transcoders.BaseSerializingTranscoder;import net.spy.memcached.transcoders.Transcoder;import org.lorecraft.phparser.*;public class PHPSerializedTranscoder extends BaseSerializingTranscoder implements Transcoder &amp;lt;Object&amp;gt; {  static final int COMPRESSED=2; /**  * Get a serializing transcoder with the default max data size.  */ public PHPSerializedTranscoder() {  this(CachedData.MAX_SIZE); } /**  * Get a serializing transcoder that specifies the max data size.  */ public PHPSerializedTranscoder(int max) {  super(max); }  /**  * decode the byte data from Memcache decompress it if necessary and return the Object  * @param CacheData - the byte data is turned into a object  * @returns Object   */ public Object decode(CachedData d){  byte[] data=d.getData();    Object rv=null;  String ds=&quot;N;&quot;;    if((d.getFlags() &amp;amp; COMPRESSED) != 0) {   getLogger().debug(&quot;Looks like d is compressed&quot;);   data=decompress(d.getData());  }    ds=decodeString(data);     getLogger().debug(&quot;DECODED: [&quot; + ds + &quot;] about to SerializedPhpParser&quot;);    SerializedPhpParser sp = new SerializedPhpParser(ds);    try {   rv = sp.parse();   getLogger().debug(&quot;Parse was cool!!&quot;);  } catch(Exception e){   getLogger().debug(&quot;Not a PHP Object? : &quot; +  ds);   rv = ds;  }    return rv; }  /**  * PHP Memcache stores compress data in ZLIB format override the base class decompress method to handle ZLIB  *   * @param byte array - raw data from Memcache  * @returns byte array  */ protected byte[] decompress(byte[] in) {  ByteArrayOutputStream bos=null;  final int BUFFER = 2048;  if(in != null) {   ByteArrayInputStream bis=new ByteArrayInputStream(in);   bos=new ByteArrayOutputStream();   InflaterInputStream iis = null;   try {    iis = new InflaterInputStream(bis);    byte[] buf=new byte[BUFFER];    int r=-1;    while((r=iis.read(buf, 0, BUFFER)) &amp;gt; 0) {     bos.write(buf, 0, r);    }   } catch (IOException e) {    getLogger().warn(&quot;Failed to decompress data&quot;, e);    bos = null;   } finally {    CloseUtil.close(iis);    CloseUtil.close(bis);    CloseUtil.close(bos);   }  }    return bos == null ? null : bos.toByteArray(); }  /**  * encode -- not implemented yet  *  */ public CachedData encode(Object o){  int flags = 0;  byte[] b=null;  return new CachedData(flags, b, getMaxSize()); }  /**  * no need to async Decode let's do it realtime  */ public boolean asyncDecode(CachedData d) {  return false; }}This is a stop-gap solution until we make the transition to Memcached with JSON encoding. Then I can use Jackson-JSON&amp;nbsp;- which is a fast JSON encoder/decoder for Java enabling a great portable&amp;nbsp;message protocol between the two stacks and nearly any other language we might add to the system (like Python).</description>
    <content:encoded><![CDATA[My technology stack services more then 2 Million Daily Active users. &nbsp;Its very basic. PHP talks to mySQL, Memcache, RabbitMQ, Gearman and Facebook. &nbsp;Now that we have more Java specifically to support our SmartFox Server and other services,&nbsp;blurring&nbsp;the lines between what data is set in PHP and what data is read in Java is very necessary.<br /><br />Java J-Connect makes reading mySQL Data as simple IMHO as PHP's PDO. What is hard is reading PHP's serialized format&nbsp;from PHP's Memcache&nbsp;library.<br /><br />In PHP there are two main C backed&nbsp;Libraries. There is <a href="http://php.net/manual/en/book.memcache.php" target="_blank">Memcache</a> the&nbsp;original&nbsp;PHP library which I happen to use, and <a href="http://php.net/manual/en/book.memcached.php" target="_blank">Memcached</a> which is the library I wanted to use but didn't deploy since EC2 package system conflicted and cause issues (I fixed them but to late to deploy). Memcache stores data in PHP's serialized format and compresses it via ZLIB, while Memcached can store data as PHP's serialized format, JSON, <a href="http://pecl.php.net/package/igbinary" target="_blank">Binary Serialized</a> (which is rather awesome), JSON Array Notation and has a multitude of compressing formats none of which are pure ZLIB that I noticed.<br /><br />Here is the problem. Spymemcached is a lib for talking to memcache but can't unserialized PHP serialized format (or read it&nbsp;natively&nbsp;and return a string) and cannot Decompress ZLIB but can Decompress GZIP. Now a great speed up would be to use PHP's serialized data set from PHP and share memcache resources from PHP and Java just like what is done for the mySQL resources.<br /><br />What needs to be done? Well, build your own Transcoder for Spymemcached.&nbsp;Fortunately Spymemcached documented an interface to do just that.<br /><br />What is needed. Implement the spymemcached Interface defined <a href="http://code.google.com/p/spymemcached/downloads/detail?name=spymemcached-2.8.0-javadoc.jar&amp;can=2&amp;q=" target="_blank">here</a>. Use org.lorecraft.phparser to unserialize PHP data &nbsp;defined <a href="http://code.google.com/p/serialized-php-parser/source/browse/trunk/src/org/lorecraft/phparser/SerializedPhpParser.java?r=15" target="_blank">here</a>. Return the Object.<br /><br /><br /><br /><br /><br />&nbsp;Below is the code.<br /><br /><br /><br /><br /><pre>package com.schoolfeed.spymemcached;<br /><br />import java.io.ByteArrayInputStream;<br />import java.io.ByteArrayOutputStream;<br />import java.io.IOException;<br />import java.util.zip.InflaterInputStream;<br /><br />import net.spy.memcached.CachedData;<br />import net.spy.memcached.compat.CloseUtil;<br />import net.spy.memcached.transcoders.BaseSerializingTranscoder;<br />import net.spy.memcached.transcoders.Transcoder;<br />import org.lorecraft.phparser.*;<br /><br /><br />public class PHPSerializedTranscoder extends BaseSerializingTranscoder implements Transcoder &lt;Object&gt; {<br /> <br /> static final int COMPRESSED=2;<br /> /**<br />  * Get a serializing transcoder with the default max data size.<br />  */<br /> public PHPSerializedTranscoder() {<br />  this(CachedData.MAX_SIZE);<br /> }<br /><br /> /**<br />  * Get a serializing transcoder that specifies the max data size.<br />  */<br /> public PHPSerializedTranscoder(int max) {<br />  super(max);<br /> }<br /> <br /> /**<br />  * decode the byte data from Memcache decompress it if necessary and return the Object<br />  * @param CacheData - the byte data is turned into a object<br />  * @returns Object <br />  */<br /> public Object decode(CachedData d){<br />  byte[] data=d.getData();<br />  <br />  Object rv=null;<br />  String ds="N;";<br />  <br />  if((d.getFlags() &amp; COMPRESSED) != 0) {<br />   getLogger().debug("Looks like d is compressed");<br />   data=decompress(d.getData());<br />  }<br />  <br />  ds=decodeString(data);<br />   <br />  getLogger().debug("DECODED: [" + ds + "] about to SerializedPhpParser");<br />  <br />  SerializedPhpParser sp = new SerializedPhpParser(ds);<br />  <br />  try {<br />   rv = sp.parse();<br />   getLogger().debug("Parse was cool!!");<br />  } catch(Exception e){<br />   getLogger().debug("Not a PHP Object? : " +  ds);<br />   rv = ds;<br />  }<br />  <br />  return rv;<br /> }<br /> <br /> /**<br />  * PHP Memcache stores compress data in ZLIB format override the base class decompress method to handle ZLIB<br />  * <br />  * @param byte array - raw data from Memcache<br />  * @returns byte array<br />  */<br /> protected byte[] decompress(byte[] in) {<br />  ByteArrayOutputStream bos=null;<br />  final int BUFFER = 2048;<br />  if(in != null) {<br />   ByteArrayInputStream bis=new ByteArrayInputStream(in);<br />   bos=new ByteArrayOutputStream();<br />   InflaterInputStream iis = null;<br />   try {<br />    iis = new InflaterInputStream(bis);<br /><br />    byte[] buf=new byte[BUFFER];<br />    int r=-1;<br />    while((r=iis.read(buf, 0, BUFFER)) &gt; 0) {<br />     bos.write(buf, 0, r);<br />    }<br />   } catch (IOException e) {<br />    getLogger().warn("Failed to decompress data", e);<br />    bos = null;<br />   } finally {<br />    CloseUtil.close(iis);<br />    CloseUtil.close(bis);<br />    CloseUtil.close(bos);<br />   }<br />  }<br />  <br />  return bos == null ? null : bos.toByteArray();<br /> }<br /> <br /> /**<br />  * encode -- not implemented yet<br />  *<br />  */<br /> public CachedData encode(Object o){<br />  int flags = 0;<br />  byte[] b=null;<br />  return new CachedData(flags, b, getMaxSize());<br /> }<br /> <br /> /**<br />  * no need to async Decode let's do it realtime<br />  */<br /> public boolean asyncDecode(CachedData d) {<br />  return false;<br /> }<br /><br />}<br /></pre><br /><br />This is a stop-gap solution until we make the transition to Memcached with JSON encoding. Then I can use <a href="http://jackson.codehaus.org/" target="_blank">Jackson-JSON</a>&nbsp;- which is a fast JSON encoder/decoder for Java enabling a great portable&nbsp;message protocol between the two stacks and nearly any other language we might add to the system (like Python).<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/31421954-844374301485812746?l=mysqldba.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31918&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31918&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Mon, 06 Feb 2012 22:40:00 +0000</pubDate>
    <dc:creator>Dathan Pattishall</dc:creator>
  </item>

  <item>
    <title>Dot-Org Pavilion at the Percona Live MySQL Conference</title>
    <guid isPermaLink="false">http://www.xaprb.com/blog/?p=2584</guid>
    <link>http://www.xaprb.com/blog/2012/02/06/dot-org-pavilion-at-the-percona-live-mysql-conference/</link>
    <description>Are you involved with an open-source project that&amp;#8217;s interesting to MySQL users, such as Nginx, PHPMyAdmin, Drupal, Jenkins, PHP, and so on?  Percona just published the application form for dot-org groups to have a free expo hall booth in the Percona Live MySQL Conference in April.  Please submit your applications now, and tell your friends about this, because a) the schedule for applying is very short, and b) space is limited.

For those of you who don&amp;#8217;t know what this is, it&amp;#8217;s another of the O&amp;#8217;Reilly traditions we&amp;#8217;re trying to continue.  (We are trying very hard to make this event as close to a clone of O&amp;#8217;Reilly&amp;#8217;s as we can.)  It&amp;#8217;s a free table in the expo hall where people who participate in a non-commercial open source project can exhibit.  I organized a Maatkit booth a few times in the past, and was always really grateful to O&amp;#8217;Reilly for making the space available.  Space in the expo hall is at a premium, but we think that these dot-org booths are even more valuable to the open-source projects and the conference attendees.

So, please tell your friends who care about open source, and ask them to tell their friends too.  Let&amp;#8217;s get some great open-source projects into the expo hall, alongside the commercial vendors!

Further Reading:Percona Live MySQL Conference comes to Washington DC
One-day Percona Live conference in San Francisco
Maatkit at the dot-org pavilion at MySQL Conference and Expo 2009
Schedule for MySQL-and-beyond conference is live
Percona Live from a community insider&amp;#8217;s perspective
</description>
    <content:encoded><![CDATA[<p>Are you involved with an open-source project that&#8217;s interesting to MySQL users, such as Nginx, PHPMyAdmin, Drupal, Jenkins, PHP, and so on?  Percona just published the application form for dot-org groups to have a <a href="http://www.percona.com/live/mysql-conference-2012/content/dot-org-pavilion">free expo hall booth</a> in the Percona Live MySQL Conference in April. <strong> Please submit your applications now, and tell your friends about this</strong>, because a) the schedule for applying is very short, and b) space is limited.</p>

<p>For those of you who don&#8217;t know what this is, it&#8217;s another of the O&#8217;Reilly traditions we&#8217;re trying to continue.  (We are trying very hard to make this event as close to a clone of O&#8217;Reilly&#8217;s as we can.)  It&#8217;s a free table in the expo hall where people who participate in a non-commercial open source project can exhibit.  I organized a Maatkit booth a few times in the past, and was always really grateful to O&#8217;Reilly for making the space available.  Space in the expo hall is at a premium, but we think that these dot-org booths are even more valuable to the open-source projects and the conference attendees.</p>

<p>So, please tell your friends who care about open source, and ask them to tell their friends too.  Let&#8217;s get some great open-source projects into the expo hall, alongside the commercial vendors!</p>

<p><strong>Further Reading:</strong><ul><li><a href="http://www.xaprb.com/blog/2011/12/20/percona-live-mysql-conference-comes-to-washington-dc/" rel="bookmark" title="Permanent Link: Percona Live MySQL Conference comes to Washington DC">Percona Live MySQL Conference comes to Washington DC</a></li>
<li><a href="http://www.xaprb.com/blog/2011/01/13/one-day-percona-live-conference-in-san-francisco/" rel="bookmark" title="Permanent Link: One-day Percona Live conference in San Francisco">One-day Percona Live conference in San Francisco</a></li>
<li><a href="http://www.xaprb.com/blog/2008/12/30/maatkit-at-the-dot-org-pavilion-at-mysql-conference-and-expo-2009/" rel="bookmark" title="Permanent Link: Maatkit at the dot-org pavilion at MySQL Conference and Expo 2009">Maatkit at the dot-org pavilion at MySQL Conference and Expo 2009</a></li>
<li><a href="http://www.xaprb.com/blog/2010/12/19/schedule-for-mysql-and-beyond-conference-is-live/" rel="bookmark" title="Permanent Link: Schedule for MySQL-and-beyond conference is live">Schedule for MySQL-and-beyond conference is live</a></li>
<li><a href="http://www.xaprb.com/blog/2011/08/18/percona-live-from-a-community-insiders-perspective/" rel="bookmark" title="Permanent Link: Percona Live from a community insider’s perspective">Percona Live from a community insider&#8217;s perspective</a></li>
</ul><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31917&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31917&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Mon, 06 Feb 2012 22:38:45 +0000</pubDate>
    <dc:creator>Baron Schwartz (xaprb)</dc:creator>
    <category>SQL</category>
  </item>

  <item>
    <title>MySQL progress in a year</title>
    <guid isPermaLink="false">389 at http://openlife.cc</guid>
    <link>http://openlife.cc/blogs/2012/february/mysql-progress-year</link>
    <description>Usually people do this around New Year, I will do it in February. Actually, I was inspired to do this after reviewing all the talks for this year's MySQL Conference - what a snapshot into the state of where we are! It made me realize we've made important progress in the past year, worth taking a moment to celebrate it. So here we go...
Diversification
In the past few years there was a lot of fear and doubt about MySQL due to Oracle taking over the ownership. But if you ask me, I was more worried for MySQL because of MySQL itself. I've often said that if MySQL had been a healthy open source project - like the other 3 components in the LAMP stack - then most of the NoSQL technologies we've seen come about would never have been started as their own projects, because it would have been more natural to build those needs on top of MySQL. You could have had a key-value store (HandlerSocket, Memcache API...), sharding (Spider) and clustering (Galera). You could have had a graph storage engine (OQGraph engine isn't quite it, I understand it is internally an InnoDB table still?). There could even have been MapReduce functionality, although I do think the Hadoop ecosystem targets problems that actually are better solved without MySQL.
read more</description>
    <content:encoded><![CDATA[<p>Usually people do this around New Year, I will do it in February. Actually, I was inspired to do this after reviewing all the talks for this year's <a href="http://www.percona.com/live/mysql-conference-2012/program/schedule/sessions-day-1">MySQL Conference</a> - what a snapshot into the state of where we are! It made me realize we've made important progress in the past year, worth taking a moment to celebrate it. So here we go...</p>
<h2>Diversification</h2>
<p>In the past few years there was a lot of fear and doubt about MySQL due to Oracle taking over the ownership. But if you ask me, I was more worried for MySQL because of MySQL itself. I've often said that if MySQL had been a healthy open source project - like the other 3 components in the LAMP stack - then most of the NoSQL technologies we've seen come about would never have been started as their own projects, because it would have been more natural to build those needs on top of MySQL. You could have had a key-value store (HandlerSocket, Memcache API...), sharding (Spider) and clustering (Galera). You could have had a graph storage engine (OQGraph engine isn't quite it, I understand it is internally an InnoDB table still?). There could even have been MapReduce functionality, although I do think the Hadoop ecosystem targets problems that actually are better solved without MySQL.</p>
<p><a href="http://openlife.cc/blogs/2012/february/mysql-progress-year" target="_blank">read more</a></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31916&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31916&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Mon, 06 Feb 2012 22:22:21 +0000</pubDate>
    <dc:creator>Henrik Ingo</dc:creator>
    <category>Drizzle</category>
    <category>Galera</category>
    <category>MySQL</category>
    <category>Percona</category>
    <category>Technology</category>
  </item>

  <item>
    <title>Upcoming talks at PHP UK, Confoo and your event</title>
    <guid isPermaLink="false">http://opensourcedba.wordpress.com/?p=573</guid>
    <link>http://opensourcedba.wordpress.com/2012/02/06/upcoming-talks-at-php-uk-confoo-and-your-event/</link>
    <description>I will be speaking on new MySQL features at the PHP UK conference on February 25th in London.  A few days later on march 3rd, I will be presenting the Care and Feeding of a MySQL Database at Confoo in Montreal.  If you are attending either event, please introduce yourself!  
Fellow Community Manager Keith Larson and I working hard to keep up with all the upcoming shows.  If you think we might have not notices your upcoming event, please drop us a line.  We will have thumb drive, baggage tags, stickers, and maybe (fingers crossed) t-shirts or plush dolphins soon.
         </description>
    <content:encoded><![CDATA[<p>I will be speaking on <a href="http://www.phpconference.co.uk/event/php-uk-conference-2012-saturday-early-afternoon-session">new MySQL features</a> at the PHP UK conference on February 25th in London.  A few days later on march 3rd, I will be presenting the <a href="http://confoo.ca/en/2012/schedule" target="_blank">Care and Feeding of a MySQL Database</a> at Confoo in Montreal.  If you are attending either event, please introduce yourself!  </p>
<p>Fellow Community Manager <a href="http://sqlhjalp.blogspot.com/" target="_blank">Keith Larson</a> and I working hard to keep up with all the upcoming shows.  If you think we might have not notices your upcoming event, please drop us a line.  We will have thumb drive, baggage tags, stickers, and maybe (fingers crossed) t-shirts or plush dolphins soon.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/opensourcedba.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/opensourcedba.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/opensourcedba.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/opensourcedba.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/opensourcedba.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/opensourcedba.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/opensourcedba.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/opensourcedba.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/opensourcedba.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/opensourcedba.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/opensourcedba.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/opensourcedba.wordpress.com/573/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/opensourcedba.wordpress.com/573/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/opensourcedba.wordpress.com/573/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=opensourcedba.wordpress.com&amp;blog=15386988&amp;post=573&amp;subd=opensourcedba&amp;ref=&amp;feed=1" width="1" height="1" /><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31915&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31915&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Mon, 06 Feb 2012 21:25:54 +0000</pubDate>
    <dc:creator>Dave Stokes</dc:creator>
    <category>community team</category>
    <category>MySQL</category>
  </item>

  <item>
    <title>New England’s Victory (for Big Data)</title>
    <guid isPermaLink="false">http://www.tokutek.com/?p=3736</guid>
    <link>http://www.tokutek.com/2012/02/new-england%E2%80%99s-victory-for-big-data/</link>
    <description>While it might not have been New England’s weekend on the Big Gridiron, it was certainly New England’s day for Big Data at the New England Database Summit on Friday at MIT.
The summit was well attended, with 350 registrants and keynotes from prominent MySQL users such as Mark Callaghan. The coverage was quite broad, with presentations running the gamut from grad students (complete with bodyguards and intimidating academic advisors) to established companies such as StreamBase. The sponsor list was an A-list this year as well, with EMC and Microsoft being the two biggest backers.
There were far too many and diverse topics to write about all of them. That said, here were a few of the notable ones.
Keynote #1: Johannes Gehrke (Cornell): Declarative Data-Driven Coordination
Johannes Gehrke of Cornell kicked off with the first keynote on Declarative-Driven Coordination. His methodology shed light on an alternative to out-of-band communication. The presentation focused on how to successfully handle entangled queries.

More Sleep for Tom and Meg if They Can Just Coordinate
In brief, what he showed is a way for someone to see if their friend is on a flight and have the database go about satisfying mutual constraints. With a proof that is outlined in his Sigmod paper, his main theorem is that any schedule that is entangled-isolated is also oracle-serializable. It’s a clever approach, as long as one’s set of friends being entangled remains small.
Keynote #2: Mark Callaghan (Facebook): Performance is Overrated
The room got a little quiet when Mark took the stage. Some people were expecting a possible rehash of this summer’s brouhaha between Mike Stonebraker and Facebook on the fate of MySQL. But, instead Mark jumped into some very practical discussions about managing MySQL at scale.
First, he noted that manageability needs more attention since…


The cost of extra hardware can be predicted
The cost of downtime cannot
Downtime comes in many forms (server down and server too busy)


For Mark, manageability has a number of meanings. This includes the rate of interrupts/server for the operations team. Mark finds that while the server count grows quickly, his operations team grows slowly. Hence, it is imperative that the quality-of-service improve over time (i.e., Does work get done? Does work get done on time?).
Mark and his team use MySQL for a number of reasons. First, it was there when Mark arrived. Second, Mark and his team made it scale 10x. Finally, Mark likes MySQL for OLTP.
As Facebook has grown though, so have the number of servers. This is due to &amp;#8220;Big Data&amp;#8221; x high QPS. Hence, they have had to add servers to add IOPs. To address this, Mark noted that flash memory (SSD) is very interesting as are (we blush) write-optimized databases.
The last part of his presentation focused on advice for scaling: More Data, More QPS. His tips were quite straightforward:


Fix stalls to make use of capacity

Don’t make MySQL faster, make it less slow



Improve efficiency to use less
Repeat


 Additional details can be found in Sheeri’s excellent live blog of the presentation.
New Tools and Systems Session: Willis Lang (University of Wisconsin): Energy-Conscious Data Management Systems
Just as Mark stressed that performance isn’t everything when he spoke about management, Willis Lang pointed out another key concern.  His slides noted that “three decades of database research has optimized for the highest possible performance possible regardless of energy consumption.” (We agree and have written about this topic as well).
Willis and his team have been looking at various techniques for addressing this such as using variable speed disks. He has been systematically studying the power/performance trade-offs of hardware components. The preliminary memory-based results showed that interesting trade-off opportunities exist if one rethinks database design principles. His presentation focused on the improvements that can be seen with memory parking. Additional details on his research can be found here.
As mentioned previously, there were many good talks &amp;#8212; much more could be written about the event. Other interesting speakers included David Karger who introduced Dido, which seeks to make database manipulation as easy as document editing, and Alvin Cheung whose Pyxis project eases application development with automatic code partitioning based on application and server characteristics.
Kudos to Samuel Madden (MIT) and Ugur Cetintemel (Brown University) for organizing the event. Additional details can also be found via the Twitter hashtag #nedb12 and the event homepage.
&amp;nbsp;</description>
    <content:encoded><![CDATA[<p>While it might not have been New England’s weekend on the <a href="http://www.boston.com/sports/football/patriots/articles/2012/02/05/giants_win_super_bowl_rematch_over_patriots/" target="_blank">Big Gridiron</a>, it was certainly New England’s day for Big Data at the <a href="http://db.csail.mit.edu/nedbday12/" target="_blank">New England Database Summit</a> on Friday at MIT.</p>
<p>The summit was well attended, with <a href="http://twitter.com/sheeri/statuses/165449298471944192" target="_blank">350 registrants</a> and keynotes from prominent MySQL users such as <a href="http://mysqlha.blogspot.com/" target="_blank">Mark Callaghan</a>. The coverage was quite broad, with presentations running the gamut from grad students (<a href="http://twitter.com/samrmadden/status/165530898035523584/photo/1" target="_blank">complete with bodyguards and intimidating academic advisors</a>) to established companies such as StreamBase. The sponsor list was an A-list this year as well, with EMC and Microsoft being the two biggest backers.</p>
<p>There were far <a href="http://db.csail.mit.edu/nedbday12/program.html" target="_blank">too many and diverse topics</a> to write about all of them. That said, here were a few of the notable ones.</p>
<p><strong>Keynote #1: Johannes Gehrke (Cornell): <em>Declarative Data-Driven Coordination</em></strong></p>
<p><a href="http://www.cs.cornell.edu/johannes/" target="_blank">Johannes Gehrke of Cornell</a> kicked off with the first keynote on Declarative-Driven Coordination. His methodology shed light on an alternative to out-of-band communication. The presentation focused on how to successfully handle entangled queries.</p>
<p align="center"><a href="http://www.tokutek.com/wp-content/uploads/2012/02/NEDBDAY12.jpg" rel="shadowbox[sbpost-3736];player=img;" target="_blank"><img class="aligncenter size-full wp-image-4364" title="NEDBDAY12" src="http://www.tokutek.com/wp-content/uploads/2012/02/NEDBDAY12.jpg" alt="" width="600" /></a></p>
<p align="center">More Sleep for Tom and Meg if They Can Just Coordinate</p>
<p>In brief, what he showed is a way for someone to see if their friend is on a flight and have the database go about satisfying mutual constraints. With a proof that is outlined in his <a href="http://www.cs.cornell.edu/~lucja/Publications/sigmod150-gupta.pdf" target="_blank">Sigmod paper</a>, <a href="http://twitter.com/tokutek/statuses/165448207617368065" target="_blank">his main theorem is that any schedule that is entangled-isolated is also oracle-serializable</a>. It’s a clever approach, as long as one’s set of friends being entangled remains small.</p>
<p><strong>Keynote #2: Mark Callaghan (Facebook): <em>Performance is Overrated</em></strong></p>
<p>The room got a little quiet when Mark took the stage. Some people were expecting a possible rehash of this summer’s brouhaha between <a href="http://www.theregister.co.uk/2011/07/13/mike_stonebraker_versus_facebook/" target="_blank">Mike Stonebraker and Facebook</a> on the fate of MySQL. But, instead Mark jumped into some very practical discussions about managing MySQL at scale.</p>
<p>First, he noted that manageability needs more attention since…</p>
<ul>
<ul>
<li>The cost of extra hardware can be predicted</li>
<li>The cost of downtime cannot</li>
<li>Downtime comes in many forms (server down and server too busy)</li>
</ul>
</ul>
<p>For Mark, manageability has a number of meanings. This includes the rate of interrupts/server for the operations team. Mark finds that while the server count grows quickly, his operations team grows slowly. Hence, it is imperative that the quality-of-service improve over time (i.e., Does work get done? Does work get done on time?).</p>
<p>Mark and his team use MySQL for a number of reasons. First, it was there when Mark arrived. Second, Mark and his team made it scale 10x. Finally, Mark likes MySQL for OLTP.</p>
<p>As Facebook has grown though, so have the number of servers. This is due to &#8220;Big Data&#8221; x high QPS. Hence, they have had to add servers to add IOPs. To address this, Mark noted that flash memory (SSD) is very interesting as are (we blush) write-optimized databases.</p>
<p>The last part of his presentation focused on advice for scaling: More Data, More QPS. His tips were quite straightforward:</p>
<ul>
<ul>
<li>Fix stalls to make use of capacity</li>
<ul>
<li>Don’t make MySQL faster, make it less slow</li>
</ul>
</ul>
<ul>
<li>Improve efficiency to use less</li>
<li>Repeat</li>
</ul>
</ul>
<p> Additional details can be found in <a href="http://sheeri.com/" target="_blank">Sheeri’s</a> excellent <a href="http://sheeri.com/content/liveblogging-performance-overrated-mark-ca" target="_blank">live blog of the presentation</a>.</p>
<p><strong>New Tools and Systems Session: Willis Lang (University of Wisconsin): <em>Energy-Conscious Data Management Systems</em></strong></p>
<p>Just as Mark stressed that performance isn’t everything when he spoke about management, <a href="http://pages.cs.wisc.edu/~wlang/" target="_blank">Willis Lang</a> pointed out another key concern.  His slides noted that “three decades of database research has optimized for the highest possible performance possible regardless of energy consumption.” (We agree and have <a href="http://t.co/znUcYdHx" target="_blank">written about this topic as well</a>).</p>
<p>Willis and his team have been looking at various techniques for addressing this such as using variable speed disks. He has been systematically studying the power/performance trade-offs of hardware components. The preliminary memory-based results showed that interesting trade-off opportunities exist if one rethinks database design principles. His presentation focused on the improvements that can be seen with memory parking. Additional details on his research can be found <a href="http://pages.cs.wisc.edu/~wlang/" target="_blank">here</a>.</p>
<p>As mentioned previously, there were many good talks &#8212; much more could be written about the event. Other interesting speakers included <a href="http://people.csail.mit.edu/karger/" target="_blank">David Karger</a> who introduced <a href="http://t.co/bsS7Stte" target="_blank">Dido</a>, which seeks to make database manipulation as easy as document editing, and <a href="http://people.csail.mit.edu/akcheung/" target="_blank">Alvin Cheung</a> whose Pyxis project eases application development with automatic code partitioning based on application and server characteristics.</p>
<p>Kudos to <a href="http://db.lcs.mit.edu/madden/" target="_blank">Samuel Madden (MIT)</a> and <a href="http://www.cs.brown.edu/people/faculty/ugur.html" target="_blank">Ugur Cetintemel (Brown University)</a> for organizing the event. Additional details can also be found <a href="http://twitter.com/search?q=%23nedb12" target="_blank">via the Twitter hashtag #nedb12</a> and the <a href="http://db.csail.mit.edu/nedbday12/" target="_blank">event homepage</a>.</p>
<p>&nbsp;</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31914&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31914&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Mon, 06 Feb 2012 17:06:01 +0000</pubDate>
    <dc:creator>Tokuview Blog</dc:creator>
    <category>TokuView</category>
    <category>big data</category>
    <category>conference</category>
    <category>InnoDB</category>
    <category>mysql</category>
    <category>nedb12</category>
    <category>NewSQL</category>
    <category>TokuDB</category>
    <category>Tokutek</category>
  </item>

  <item>
    <title>Building XtraDB on Windows</title>
    <guid isPermaLink="false">http://www.chriscalender.com/?p=820</guid>
    <link>http://www.chriscalender.com/?p=820</link>
    <description>As you may or may not know, Windows is not yet a supported platform for XtraDB.
I thought I&amp;#8217;d try to build it, and see what happens:

Download XtraDB 5.5 Source
cd C:\xtradb-5.5
mkdir bld
cd bld
cmake ..
VS08: File -&gt; Open -&gt; Solution -&gt; C:\xtradb-5.5\bld\MySQL.sln

Build Ended With:
========== Build: 70 succeeded, 17 failed, 2 up-to-date, 10 skipped ==========
The first failure had to do with innobase:
18&gt;Generating Code...
18&gt;Build log was saved at &quot;file://c:\..\innobase.dir\Debug\BuildLog.htm&quot;
18&gt;innobase - 9 error(s), 3 warning(s)
I checked the innobase build log and found this:
sql_prepare.cc
..\sql_prepare.cc(2199) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2232) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2639) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2672) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2808) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2848) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2940) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2973) : error C3861: 'gettimeofday': identifier not found
...
sql_parse.cc
..\sql_parse.cc(5750) : error C3861: 'gettimeofday': identifier not found
..\sql_parse.cc(5827) : error C3861: 'gettimeofday': identifier not found
The &amp;#8216;gettimeofday&amp;#8217; function is a Unix-only (i.e., there is no direct analog of the gettimeofday() in Windows) .. more details here.
So, this part of the code has simply not been ported to Windows yet.
I got to looking, and it is a reported bug already:
https://bugs.launchpad.net/percona-server/+bug/737895
https://bugs.launchpad.net/percona-patches/+bug/421925
https://bugs.launchpad.net/percona-patches/+bug/390156
But, do not worry.  If you want to take advantage of the InnoDB enhancements found in XtraDB on Windows, you can simply use MariaDB.
There are pre-built MariaDB binaries for Windows, and MariaDB contains XtraDB+ (which is XtraDB plus some additional enhancements on top of it).
Hope this helps.</description>
    <content:encoded><![CDATA[<p>As you may or may not know, Windows is <a href="https://bugs.launchpad.net/percona-patches/+bug/421925">not yet a supported platform</a> for XtraDB.</p>
<p>I thought I&#8217;d try to build it, and see what happens:</p>
<ol>
<li>Download <a href="http://www.percona.com/downloads/Percona-Server-5.5/Percona-Server-5.5.19-24.0/source/">XtraDB 5.5 Source</a>
<li>cd C:\xtradb-5.5
<li>mkdir bld
<li>cd bld
<li>cmake ..
<li>VS08: File -> Open -> Solution -> C:\xtradb-5.5\bld\MySQL.sln
</ol>
<p>Build Ended With:</p>
<pre>========== Build: 70 succeeded, 17 failed, 2 up-to-date, 10 skipped ==========</pre>
<p>The first failure had to do with innobase:</p>
<pre>18>Generating Code...
18>Build log was saved at "file://c:\..\innobase.dir\Debug\BuildLog.htm"
18>innobase - 9 error(s), 3 warning(s)</pre>
<p>I checked the innobase build log and found this:</p>
<pre>sql_prepare.cc
..\sql_prepare.cc(2199) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2232) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2639) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2672) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2808) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2848) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2940) : error C3861: 'gettimeofday': identifier not found
..\sql_prepare.cc(2973) : error C3861: 'gettimeofday': identifier not found
...
sql_parse.cc
..\sql_parse.cc(5750) : error C3861: 'gettimeofday': identifier not found
..\sql_parse.cc(5827) : error C3861: 'gettimeofday': identifier not found</pre>
<p>The &#8216;gettimeofday&#8217; function is a Unix-only (i.e., there is no direct analog of the gettimeofday() in Windows) .. more details <a href="http://suacommunity.com/dictionary/gettimeofday-entry.php">here</a>.</p>
<p>So, this part of the code has simply not been ported to Windows yet.</p>
<p>I got to looking, and it is a reported bug already:</p>
<p><a href="https://bugs.launchpad.net/percona-server/+bug/737895">https://bugs.launchpad.net/percona-server/+bug/737895</a><br />
<a href="https://bugs.launchpad.net/percona-patches/+bug/421925">https://bugs.launchpad.net/percona-patches/+bug/421925</a><br />
<a href="https://bugs.launchpad.net/percona-patches/+bug/390156">https://bugs.launchpad.net/percona-patches/+bug/390156</a></p>
<p>But, do not worry.  If you want to take advantage of the InnoDB enhancements found in XtraDB on Windows, you can simply use MariaDB.</p>
<p>There are pre-built <a href="http://downloads.askmonty.org/mariadb/">MariaDB binaries</a> for Windows, and MariaDB contains XtraDB+ (which is XtraDB plus some additional enhancements on top of it).</p>
<p>Hope this helps.</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31913&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31913&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Mon, 06 Feb 2012 16:19:41 +0000</pubDate>
    <dc:creator>Chris Calender</dc:creator>
    <category>MySQL</category>
    <category>build xtradb</category>
    <category>compile xtradb</category>
    <category>error C3861: 'gettimeofday': identifier not found</category>
    <category>gettimeofday</category>
    <category>windows xtradb</category>
    <category>XtraDB</category>
    <category>xtradb windows</category>
  </item>

  <item>
    <title>Speaking at MySQL Meetup in Charlotte,NC</title>
    <guid isPermaLink="false">http://www.mysqlperformanceblog.com/?p=8458</guid>
    <link>http://www.mysqlperformanceblog.com/2012/02/06/speaking-at-mysql-meetup-in-charlottenc/</link>
    <description>February is going to be a busy meetup month for me. In addition to speaking in Raleigh I will visit Charlotte to speak at Meetup out there on February 23rd.  Last year I visited Charlotte meetup was in the great place and we had great food and great crowd of people showing up.  I will talk about Optimizing MySQL Configuration which I believe is a great topic for this meetup as it will be helpful for developers to learn basics MySQL configuration as well as for Advanced MySQL DBAs to learn a trick or two they did not know. As an extra treat for attendees  I will bring exclusive discount to  MySQL Conference and Expo as well as some signed High Performance MySQL 2nd Edition books to give away. See you there. </description>
    <content:encoded><![CDATA[<p>February is going to be a busy meetup month for me. In addition to <a href="http://www.mysqlperformanceblog.com/2012/01/30/speaking-at-mysql-meetup-in-raleighnc/">speaking in Raleigh</a> I will visit Charlotte to speak at <a href="http://meetup.qcphp.org/events/50899992/?eventId=50899992&amp;action=detail">Meetup</a> out there on February 23rd.  Last year I visited Charlotte meetup was in the great place and we had great food and great crowd of people showing up.  I will talk about Optimizing MySQL Configuration which I believe is a great topic for this meetup as it will be helpful for developers to learn basics MySQL configuration as well as for Advanced MySQL DBAs to learn a trick or two they did not know. As an extra treat for attendees  I will bring exclusive discount to  <a href="http://www.percona.com/live/mysql-conference-2012/">MySQL Conference and Expo</a> as well as some signed <a href="http://www.amazon.com/High-Performance-MySQL-Optimization-Replication/dp/0596101716">High Performance MySQL 2nd Edition</a> books to give away. See you there. </p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31912&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31912&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Mon, 06 Feb 2012 14:50:30 +0000</pubDate>
    <dc:creator>MySQL Performance Blog</dc:creator>
    <category>Events and Announcements</category>
    <category>MySQL</category>
  </item>

  <item>
    <title>On datatypes, domains and why I think it's time we reconsidered</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-9144505959002328789.post-1645100099897170997</guid>
    <link>http://karlssonondatabases.blogspot.com/2012/02/on-datatypes-domains-and-why-i-think.html</link>
    <description>What's in a datatype then? A MySQL SMALLINT? A C int? An Oracle BLOB? One thing is for sure, they are not very well standardized,  not even within the same environment, and much less so across them. And what does it means, really? When should I use a BLOB, when a BINARY VARCHAR and when to use a long long?A datatype defines many attributes:What data I can store in it: Only numbers? Printable alaphanumeric characters? Unicode? Binary data? An object?What I can do with a value of that particular type and how does it behave? Can I concatenate two values? Add them (that is NOT the same as concatenate! The same operator (+) may be used, but it's not the same thing!)? Save it to a file?How is it stored and represented in technical terms. And this can be argued, a C int doesn't define how it is stored on disk, but a MySQL INT does! And a BLOB is a type that is largely there just because it defines how to handle things on disk!To link this up with MySQL, let's look at the built-in MySQL datatypes. Some of them are rarely used, and for all intents and purposes, many of them are overlapping and in some cases they are there JUST BECAUSE they have different semantics and behaviour! I am, for example, not a big fan of all the different INT types that MySQL supports; tinyint, smallint mediuming, bigint all in signed and unsigned shape. Why is this useful? Yes, I know a smallint is smaller on disk so there is 2 bytes less to read from disk compared to an int. Yeah right, big deal: Look now, if that is a big deal for your application, then you have bigger problems. Which doesn't mean that using a smallint isn't a means of, in some cases, improve performance a small bit. And that this is sometimes useful. But really, this should be hidden somewhere, we just have too many datatypes. The same goes for all the different BLOB datatypes! The BLOB datatypes has another issue by the way, the names of them a a bit silly: &quot;TINYBLOB&quot; is a contradiction, as BLOB stands for Binary LARGE Object! A Large object that is Tiny? And a something that is at the most 255 bytes isn't really &quot;Large&quot; anymore, that was way back in the 1970's or so.No, I'm not a big fan of determining which datatype to use by considering storage requirements to optimize performance. That is something you might do as a performance enhancing measure after the job is done, possibly. In C, which is a language I have used longer than I care to remember, int seems to serve the role of being the default numeric integer datatype, which is not a bad thing, in particular not in C as C is a language used to write low-level stuff in, stuff that is performance sensitive, and a C int is linked to hardware specific integers.FLOAT is another issue altogether. In very few business applications is there a need for FLOAT or DOUBLE in terms of IEEE floating point values. Really!  This is a scientific number format, that is also supported by the Floating point unit in most computers of today, so operations on them are pretty fast these days. But I have seen too many business applications where the developer uses a FLOAT in the database for any kind of numeric value that is not an integer, which is a distinctly bad idea! It works as long as the numbers aren't too big, and when the operations on them are reasonably simple. This is not to say a FLOAT or DOUBLE isn’t useful, just that they are more targeted for scientific programming (Hey, they are after all defined by IEEE!). What most people really should use is DECIMAL (I'm using MySQL datatypes for reference, but you know what I mean). This is a datatype that accepts (hey, big surprise coming up here) decimal numbers, fixed point decimal numbers! Operations on DECIMAL are slower though, as they aren't really supported directly by either C (which is the language that MySQL is largely written in) or by the CPU / FPU. But they are better for business applications (for scientific applications, use FLOAT or DOUBLE. And continue to write your code in Fortran by all means!)But all these datatype are increasingly used also to define the domain of the data in them! The SQL DOMAIN feature is in the SQL Standard but is largely forgotten. It is there in PostgreSQL  for you to try. The advantage of this, in my mind, isn't just that you can define in more exact terms what data should go into a database column, without writing code to do that, and to make it apparent in the database schema what data is expected, it also means that we can get away from the wide array of different built-in datatypes in, say, MySQL. Instead we can stick with a few optimized ones, let them have a simple inherent domain and then we can define the application specific domains in application code. Anyone for a IP_ADDRESS datatype? A ZIPCODE datatype? An URL type. All those a reasonable requests from the application POV, but it really shouldn't (in my mind) be defined by the database server (As: What are the semantics of a ZIP-code? They are different in different countries, and the post-office can change their minds (although that is something that takes a long time I guess)). Why? As this is application specific domain! And application specifics should be in application code! Simple as that!So what datatypes are useful then, the way I look at it:RAW Data - This should be a basic type. As long as can be, or as short. Any data can be stored in it, and nearly as much as you would like.Integers - Although an integer can be considered to be a special case of a more generic number, the integer domain is so generic, and the integer is such a common and basic type that is deserves a place here.Decimal – Fixed point decimal numbers.Float - Now we are getting close to the application domain here, but these guys deserve a place here anyway, as they are so common and hooked up to the programming languages and hardware.DATETIME - Only one of them is really needed. One of DATETIME, DATE, YEAR, MONTH, TIMESTAMP, TIME etc etc. that is. Just one, very generic base type, where the specific domain is, you've heard it before, application specific!Text - Reluctantly I add this to the list. Although this is just a RAW with some limitations (usually only UTF8 or ISO8859-15 or something characters), there are some operations and attributes that are so tied up with text strings that a TEXT type is reasonable to include.And that's about it! Yes! We could add a few standard domains of top of all this, like FLOAT and DOUBLE, SMALLINT, TINYINT etc etc. But as for the basic types, this is what I would like to see. As for the weirdo TIMESTAMP semantics in MySQL, add them as triggers on your table, in application code or, best, as a specific domain (I do know that not all weirdiness of TIMESTAMP can be represented by a standard SQL DOMAIN, which is both a sign of just how weird TIMESTAMP is, and of some of the limitation of the SQL DOMAIN).I have now mentioned SQL DOMAINs a few times, so lets spend some quality time with them right now before closing up, here is a simple session using PostgreSQL 8.4:First we create a domain:CREATE DOMAIN yesno AS CHAR(1)DEFAULT 'N'NOT NULL CHECK (VALUE = 'Y' OR VALUE = 'N');Then we create a table that uses that domain:CREATE TABLE user_active(username CHAR(10), is_active YESNO);And then we check if it works using a few SQL statements:INSERT INTO user_active VALUES('foo', NULL);ERROR:  domain yesno does not allow null valuesINSERT INTO user_active VALUES('foo', 'Y');INSERT 0 1INSERT INTO user_active VALUES('foo', 'N');INSERT 0 1INSERT INTO user_active VALUES('foo', 'A');ERROR:  value for domain yesno violates check constraint &quot;yesno_check&quot;Before I wrap this up, I want to say one more thing on the issue of SQL Domains: There is an alternative n PostgreSQL, which is user defined datatypes using a CREATE TYPE SQL command. To begin with, I like domains much better as they are declarative, which means I don’t have to read a whole bunch of (usually uncommented and undocumented) code to understand what they type does. Secondly, this little warning in the PostgreSQL 9.1 manual isn’t too encouraging (page 1289): “To create a new base type, you must be a superuser. (This restriction is made because an erroneous type definition could confuse or even crash the server.)”I have more to say on types, and I will follow up with a new post on this subject eventually, but this is enough for now./Karlsson</description>
    <content:encoded><![CDATA[What's in a datatype then? A MySQL SMALLINT? A C <span>int</span>? An Oracle <span>BLOB</span>? One thing is for sure, they are not very well standardized,  not even within the same environment, and much less so across them. And what does it means, really? When should I use a BLOB, when a BINARY VARCHAR and when to use a long long?<br /><br />A datatype defines many attributes:<br /><ul><li>What data I can store in it: Only numbers? Printable alaphanumeric characters? Unicode? Binary data? An object?</li><li>What I can do with a value of that particular type and how does it behave? Can I concatenate two values? Add them (that is NOT the same as concatenate! The same operator (+) may be used, but it's not the same thing!)? Save it to a file?</li><li>How is it stored and represented in technical terms. And this can be argued, a C <span>int </span>doesn't define how it is stored on disk, but a MySQL INT does! And a BLOB is a type that is largely there just because it defines how to handle things on disk!</li></ul>To link this up with MySQL, let's look at the built-in MySQL datatypes. Some of them are rarely used, and for all intents and purposes, many of them are overlapping and in some cases they are there <span>JUST BECAUSE</span> they have different semantics and behaviour! I am, for example, not a big fan of all the different INT types that MySQL supports; tinyint, smallint mediuming, bigint all in signed and unsigned shape. Why is this useful? Yes, I know a smallint is smaller on disk so there is 2 bytes less to read from disk compared to an int. Yeah right, big deal: Look now, if that is a big deal for your application, then you have bigger problems. Which doesn't mean that using a smallint isn't a means of, in some cases, improve performance a small bit. And that this is sometimes useful. But really, this should be hidden somewhere, we just have too many datatypes. The same goes for all the different BLOB datatypes! The BLOB datatypes has another issue by the way, the names of them a a bit silly: "TINYBLOB" is a contradiction, as BLOB stands for Binary LARGE Object! A Large object that is Tiny? And a something that is at the most 255 bytes isn't really "Large" anymore, that was way back in the 1970's or so.<br /><br />No, I'm not a big fan of determining which datatype to use by considering storage requirements to optimize performance. That is something you might do as a performance enhancing measure after the job is done, possibly. In C, which is a language I have used longer than I care to remember, int seems to serve the role of being the default numeric integer datatype, which is not a bad thing, in particular not in C as C is a language used to write low-level stuff in, stuff that is performance sensitive, and a C int is linked to hardware specific integers.<br /><br />FLOAT is another issue altogether. In very few business applications is there a need for FLOAT or DOUBLE in terms of IEEE floating point values. Really!  This is a scientific number format, that is also supported by the Floating point unit in most computers of today, so operations on them are pretty fast these days. But I have seen too many business applications where the developer uses a FLOAT in the database for any kind of numeric value that is not an integer, which is a distinctly bad idea! It works as long as the numbers aren't too big, and when the operations on them are reasonably simple. This is not to say a FLOAT or DOUBLE isn’t useful, just that they are more targeted for scientific programming (Hey, they are after all defined by IEEE!). What most people really should use is DECIMAL (I'm using MySQL datatypes for reference, but you know what I mean). This is a datatype that accepts (<span>hey, big surprise coming up here</span>) decimal numbers, fixed point decimal numbers! Operations on DECIMAL are slower though, as they aren't really supported directly by either C (which is the language that MySQL is largely written in) or by the CPU / FPU. But they are better for business applications (for scientific applications, use FLOAT or DOUBLE. And continue to write your code in <span>Fortran </span>by all means!)<br /><br />But all these datatype are increasingly used also to define the domain of the data in them! The SQL DOMAIN feature is in the SQL Standard but is largely forgotten. It is there in PostgreSQL  for you to try. The advantage of this, in my mind, isn't just that you can define in more exact terms what data should go into a database column, without writing code to do that, and to make it apparent in the database schema what data is expected, it also means that we can get away from the wide array of different built-in datatypes in, say, MySQL. Instead we can stick with a few optimized ones, let them have a simple inherent domain and then we can define the application specific domains in application code. Anyone for a IP_ADDRESS datatype? A ZIPCODE datatype? An URL type. All those a reasonable requests from the application POV, but it really shouldn't (in my mind) be defined by the database server (As: What are the semantics of a ZIP-code? They are different in different countries, and the post-office can change their minds (although that is something that takes a long time I guess)). Why? As this is application specific domain! And application specifics should be in application code! Simple as that!<br /><br />So what datatypes are useful then, the way I look at it:<br /><ul><li><span>RAW</span> Data - This should be a basic type. As long as can be, or as short. Any data can be stored in it, and nearly as much as you would like.</li><li><span>Integers</span> - Although an integer can be considered to be a special case of a more generic number, the integer domain is so generic, and the integer is such a common and basic type that is deserves a place here.</li><li><span>Decimal </span>– Fixed point decimal numbers.</li><li><span>Float</span> - Now we are getting close to the application domain here, but these guys deserve a place here anyway, as they are so common and hooked up to the programming languages and hardware.</li><li><span>DATETIME </span>- Only one of them is really needed. One of DATETIME, DATE, YEAR, MONTH, TIMESTAMP, TIME etc etc. that is. Just one, very generic base type, where the specific domain is, you've heard it before, application specific!</li><li><span>Text</span> - Reluctantly I add this to the list. Although this is just a RAW with some limitations (usually only UTF8 or ISO8859-15 or something characters), there are some operations and attributes that are so tied up with text strings that a TEXT type is reasonable to include.</li></ul>And that's about it! Yes! We could add a few standard domains of top of all this, like FLOAT and DOUBLE, SMALLINT, TINYINT etc etc. But as for the basic types, this is what I would like to see. As for the weirdo TIMESTAMP semantics in MySQL, add them as triggers on your table, in application code or, best, as a specific domain (I do know that not all weirdiness of TIMESTAMP can be represented by a standard SQL DOMAIN, which is both a sign of just how weird TIMESTAMP is, and of some of the limitation of the SQL DOMAIN).<br /><br />I have now mentioned SQL DOMAINs a few times, so lets spend some quality time with them right now before closing up, here is a simple session using PostgreSQL 8.4:<br /><ul><li>First we create a domain:<br /><span>CREATE DOMAIN yesno AS CHAR(1)</span><br><span>DEFAULT 'N'</span><br><span>NOT NULL CHECK (VALUE = 'Y' OR VALUE = 'N');</span></li><li>Then we create a table that uses that domain:<br /><span>CREATE TABLE user_active(username CHAR(10), is_active YESNO);</span></li><li>And then we check if it works using a few SQL statements:<br /><span>INSERT INTO user_active VALUES('foo', NULL);</span><br /><span>ERROR:  domain yesno does not allow null values</span><br /><span>INSERT INTO user_active VALUES('foo', 'Y');</span><br /><span>INSERT 0 1</span><br /><span>INSERT INTO user_active VALUES('foo', 'N');</span><br /><span>INSERT 0 1</span><br /><span>INSERT INTO user_active VALUES('foo', 'A');</span><br /><span>ERROR:  value for domain yesno violates check constraint "yesno_check"</span></li></ul>Before I wrap this up, I want to say one more thing on the issue of SQL Domains: There is an alternative n PostgreSQL, which is user defined datatypes using a CREATE TYPE SQL command. To begin with, I like domains much better as they are declarative, which means I don’t have to read a whole bunch of (usually uncommented and undocumented) code to understand what they type does. Secondly, this little warning in the PostgreSQL 9.1 manual isn’t too encouraging (page 1289): “<span>To create a new base type, you must be a superuser. (This restriction is made because an erroneous type definition could confuse or even crash the server.)</span>”<br /><br />I have more to say on types, and I will follow up with a new post on this subject eventually, but this is enough for now.<br /><br />/Karlsson<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/9144505959002328789-1645100099897170997?l=karlssonondatabases.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31911&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31911&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Mon, 06 Feb 2012 10:34:00 +0000</pubDate>
    <dc:creator>Anders Karlsson</dc:creator>
    <category>type</category>
    <category>mysql</category>
    <category>postgresql</category>
  </item>

  <item>
    <title>The Agony of Big Transactions in the MySQL Binlog</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-768233104244702633.post-2348884547821051952</guid>
    <link>http://scale-out-blog.blogspot.com/2012/02/agony-of-big-transactions-in-mysql.html</link>
    <description>Databases fail in interesting ways. &amp;nbsp;About a week ago I was called in on a support case for Tungsten Enterprise. &amp;nbsp;We were getting failures in which the master MySQL 5.1.50 server would run out of connections, block applications for 5 to 10 minutes and eventually trigger automated failover to a slave. &amp;nbsp;Running out of database connections is a classic symptom of blocking on a shared resource inside the server. &amp;nbsp;The blocked transactions hold onto their connections, which are quickly exhausted if new transactions constantly arrive from applications. &amp;nbsp;So where was the hold-up?Our first clue was to notice that Tungsten Replicator was processing a huge transaction at the time of one of the failovers. &amp;nbsp;To find out more I dug into the MySQL binlog using the handy mysqlbinlog utility and looked at transactions committed around the time of the failure. &amp;nbsp;The following pattern quickly became apparent across hundreds of transactions. &amp;nbsp; The timestamps show that the commit occurred over 8 minutes after the first statement. #120201 11:57:59 server id 313819 &amp;nbsp;end_log_pos 215822862 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query &amp;nbsp; thread_id=55165463 &amp;nbsp; &amp;nbsp; &amp;nbsp;exec_time=0 &amp;nbsp; &amp;nbsp; error_code=0SET TIMESTAMP=1328119079/*!*/;BEGIN/*!*/;# at 215822862#120201 11:49:23 server id 313819 &amp;nbsp;end_log_pos 215823092 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Query &amp;nbsp; thread_id=55165463 &amp;nbsp; &amp;nbsp; &amp;nbsp;exec_time=1 &amp;nbsp; &amp;nbsp; error_code=0SET TIMESTAMP=1328118563/*!*/;(SQL statement)/*!*/;# at 215823092#120201 11:57:59 server id 313819 &amp;nbsp;end_log_pos 215823119 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Xid = 32444278496COMMIT/*!*/;The root cause turned out to be simple. &amp;nbsp;The large transaction we found in the Tungsten log resulted in over 1.3Gb of data in the MySQL binlog. &amp;nbsp;Mysqld took several minutes to write this into the log. &amp;nbsp;Meanwhile, since &amp;nbsp;transactions apply serially into the binlog, every other transaction had to wait instead of just committing and releasing its connection. &amp;nbsp;New transactions quickly consumed the spare connections up to the max_connections limit. &amp;nbsp;Problem explained. The MySQL binlog is a wonderful thing but the fact that it is a serial resource has important consequences for busy servers that use replication. &amp;nbsp;First, if you run out of connections, look at the binlog. &amp;nbsp; Tungsten makes large transactions fairly easy to detect because they are fragmented in the replicator log. &amp;nbsp; We noticed a transaction with 1300 fragments, which tipped us off to the problem. &amp;nbsp;However, you can also find the problem by looking at the binlog directly as I did above. &amp;nbsp;Or you can use any of several tools to analyze the binlog and look for periods of time with no transactions committed. Second, big transactions are a problem for MySQL. &amp;nbsp;Admin operations or application bulk loads through web APIs can easily create huge numbers of updates. &amp;nbsp; Break them up into pieces and do a chunk at a time. &amp;nbsp;This is also better for slaves, which may end up lagging badly when large transactions reach them. &amp;nbsp;Increasing max_connections to a high number is incidentally not a solution. &amp;nbsp;It just makes problems with transactions less visible and will not help anyway if you have high transaction throughput. Third, if you have updates or deletes that affect many rows, use statement replication. &amp;nbsp;Row replication is a great thing. &amp;nbsp;We use it regularly in Tungsten deployments, especially for heterogeneous replication, e.g., from MySQL to Oracle. &amp;nbsp;However, we have also seen customers write 5Gb or more into the binlog without even realizing it. &amp;nbsp;Statement replication can write as little as a single statement. &amp;nbsp;This flexibility is one of the outstanding features of MySQL replication.A possible fourth suggestion is to put the binlog on faster storage. &amp;nbsp;However, it is unclear whether that would help--the binlogs in this case were already on fast, separate disk storage with large caches and sync_binlog=0. &amp;nbsp;It seems MySQL writes large transactions rather slowly into the binlog for reasons that may not have much to do with storage speed. &amp;nbsp;I hope to understand why that is at some later time. &amp;nbsp;Perhaps somebody reading this article can suggest a reason.</description>
    <content:encoded><![CDATA[Databases fail in interesting ways. &nbsp;About a week ago I was called in on a support case for <a href="http://www.continuent.com/solutions/overview">Tungsten Enterprise</a>. &nbsp;We were getting failures in which the master MySQL 5.1.50 server would run out of connections, block applications for 5 to 10 minutes and eventually trigger automated failover to a slave. &nbsp;Running out of database connections is a classic symptom of blocking on a shared resource inside the server. &nbsp;The blocked transactions hold onto their connections, which are quickly exhausted if new transactions constantly arrive from applications. &nbsp;So where was the hold-up?<br /><br />Our first clue was to notice that <a href="http://code.google.com/p/tungsten-replicator/">Tungsten Replicator</a> was processing a huge transaction at the time of one of the failovers. &nbsp;To find out more I dug into the MySQL binlog using the handy <span><a href="http://dev.mysql.com/doc/refman/5.1/en/mysqlbinlog.html">mysqlbinlog</a></span> utility and looked at transactions committed around the time of the failure. &nbsp;The following pattern quickly became apparent across hundreds of transactions. &nbsp; The timestamps show that the commit occurred over 8 minutes after the first statement. <br /><br /><div>#120201 <b>11:57:59</b> server id 313819 &nbsp;end_log_pos 215822862 &nbsp; &nbsp; &nbsp; &nbsp;Query &nbsp; thread_id=55165463 &nbsp; &nbsp; &nbsp;exec_time=0 &nbsp; &nbsp; error_code=0</div><div>SET TIMESTAMP=1328119079/*!*/;</div><div>BEGIN</div><div>/*!*/;</div><div># at 215822862</div><div>#120201 <b>11:49:23</b> server id 313819 &nbsp;end_log_pos 215823092 &nbsp; &nbsp; &nbsp; &nbsp;Query &nbsp; thread_id=55165463 &nbsp; &nbsp; &nbsp;exec_time=1 &nbsp; &nbsp; error_code=0</div><div>SET TIMESTAMP=1328118563/*!*/;</div><div><i>(SQL statement)</i></div><div>/*!*/;</div><div># at 215823092</div><div>#120201 <b>11:57:59</b> server id 313819 &nbsp;end_log_pos 215823119 &nbsp; &nbsp; &nbsp; &nbsp;Xid = 32444278496</div><div>COMMIT/*!*/;</div><br />The root cause turned out to be simple. &nbsp;The large transaction we found in the Tungsten log resulted in over 1.3Gb of data in the MySQL binlog. &nbsp;Mysqld took several minutes to write this into the log. &nbsp;Meanwhile, since &nbsp;transactions apply serially into the binlog, every other transaction had to wait instead of just committing and releasing its connection. &nbsp;New transactions quickly consumed the spare connections up to the <a href="http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_max_connections">max_connections</a> limit. &nbsp;Problem explained. <br /><br />The MySQL binlog is a wonderful thing but the fact that it is a serial resource has important consequences for busy servers that use replication. &nbsp;<br /><br />First, if you run out of connections, look at the binlog. &nbsp; Tungsten makes large transactions fairly easy to detect because they are fragmented in the replicator log. &nbsp; We noticed a transaction with 1300 fragments, which tipped us off to the problem. &nbsp;However, you can also find the problem by looking at the binlog directly as I did above. &nbsp;Or you can use any of several tools to analyze the binlog and look for periods of time with no transactions committed. <br /><br />Second, big transactions are a problem for MySQL. &nbsp;Admin operations or application bulk loads through web APIs can easily create huge numbers of updates. &nbsp; Break them up into pieces and do a chunk at a time. &nbsp;This is also better for slaves, which may end up lagging badly when large transactions reach them. &nbsp;Increasing max_connections to a high number is incidentally not a solution. &nbsp;It just makes problems with transactions less visible and will not help anyway if you have high transaction throughput. <br /><br />Third, if you have updates or deletes that affect many rows, use statement replication. &nbsp;Row replication is a great thing. &nbsp;We use it regularly in Tungsten deployments, especially for heterogeneous replication, e.g., from MySQL to Oracle. &nbsp;However, we have also seen customers write 5Gb or more into the binlog without even realizing it. &nbsp;Statement replication can write as little as a single statement. &nbsp;This flexibility is one of the outstanding features of MySQL replication.<br /><br />A possible fourth suggestion is to put the binlog on faster storage. &nbsp;However, it is unclear whether that would help--the binlogs in this case were already on fast, separate disk storage with large caches and sync_binlog=0. &nbsp;It seems MySQL writes large transactions rather slowly into the binlog for reasons that may not have much to do with storage speed. &nbsp;I hope to understand why that is at some later time. &nbsp;Perhaps somebody reading this article can suggest a reason.<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/768233104244702633-2348884547821051952?l=scale-out-blog.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31909&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31909&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Mon, 06 Feb 2012 04:31:00 +0000</pubDate>
    <dc:creator>Robert Hodges</dc:creator>
    <category>MySQL</category>
    <category>Replication</category>
  </item>

  <item>
    <title>Managing MySQL with Percona Toolkit by Frédéric Descamps</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2298</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/managing-mysql-with-percona-toolkit-by-frederic-descamps</link>
    <description>Frédéric Descamps of Percona.
Percona Toolkit is Maatkit &amp;amp; Aspersa combined. Opensource and the tools are very useful for a DBA.
You need Perl, DBI, DBD::mysql, Term::ReadKey. Most tools are written in Perl, and whatever is in Bash is being re-written in Perl. There is also a tarball or RPM or DEB packages.
Know your environment. The hardware &amp;amp; OS are crucial for you to know. How much memory/CPU do you use? Do you use swap? Is this a physical/virtual machine? Do you have free space? What kind of RAID controller? Volumes? Disk? What about the network interfaces? What IO schedulers are used? Which filesystem is the data stored on? To answer all that, just use pt-summary.
Know your MySQL environment. Version? Build? How many databases? Where is the data directory? What about replication? What are key InnoDB settings? Storage engine in use? Index type? Foreign keys? Full text indexes? To answer all this and more use pt-mysql-summary.
pt-slave-find shows you the topology and replication hierarchy of your MySQL replication instances. An inventory of replicas!
Where is my disk I/O going? Use pt-diskstats which is an improved iostat. There is pt-ioprofile but it can be dangerous in production.
Now its time to get more intimate with your database. Let&amp;#8217;s try to find the answer to these questions: how are the indexes used? Are there duplicate keys? Which queries are eating most of the resources? You can use pt-duplicate-key-checker to check for duplicate/redundant indexes or foreign keys. pt-index-usage can tell you which indexes are unused. If you think you have bad SQL, check out pt-query-advisor.
You can use pt-query-digest to analyze the slow query log and show a profile of the workload. You mostly use this with slow query logs &amp;amp; tcpdump&amp;#8217;s. Be careful when you have dropped packets &amp;#8212; results may tend to be fake then!
After all this, its time to maintain your environment.
pt-deadlock-logger checks InnoDB status to log MySQL deadlock information. It needs to run continually to capture things.
pt-fk-error-logger extracts and logs MySQL foreign key errors.
pt-online-schema-change to alter tables. It makes a &amp;#8220;shadow copy&amp;#8221; and swaps them. Extremely useful for large, long-running ALTER. Facebook uses the same technique.
Validate your upgrades as upgrades are the leading cause of downtime. Are queries using different indexes? Is query execution plan different? New errors? See pt-upgrade for this. Best to run this on a third machine (i.e. the old machine and a new machine to see how it goes).
Verify replication integrity &amp;#8211; pt-table-checksum. Perform an online replication consistency check or checksum MySQL tables efficiently on one or many servers. Use it routinely (mandatory for 95% of MySQL users). Put it in a weekly crontab. Repair differences with pt-table-sync.
Repair out-of-sync replicas &amp;#8211; pt-table-sync
Measure delay acfurately &amp;#8211; pt-heartbeat
Deliberately delay replication &amp;#8211; pt-slave-delay
Watch &amp;amp; restart MySQL replication after errors &amp;#8211; pt-slave-restart
When there are problems, get the symptoms when it hurts. Look at pt-stalk (wait for a condition to occur them begin collecting data &amp;#8211; eg. everytime the threads go over 2,000 you have a problem, so it collects stuff &amp;#8211; it calls pt-collect), pt-collect (collect information from a server for some period of time), and pt-sift.
pt-mext looks at many samples of MySQL SHOW GLOBAL STATUS side-by-side. Default STATUS shows counter since the MySQL instances started. It is very helpful to see a delta of recent activity.
The future: pt-query-digest will do query reviews; pt-stalk will do &amp;#8220;magical fault detection algorithm&amp;#8221;. Its all opensource and its all on Launchpad at lp:percona-toolkit.


Related posts:Practical MySQL Indexing guidelines by Stéphane Combaudon
Replication features of 2011 by Sergey Petrunia
MySQL synchronous replication in practice with Galera by Oli Sennhauser
</description>
    <content:encoded><![CDATA[<p>Frédéric Descamps of <a href="http://www.percona.com/">Percona</a>.</p>
<p>Percona Toolkit is Maatkit &amp; Aspersa combined. Opensource and the tools are very useful for a DBA.</p>
<p>You need Perl, DBI, DBD::mysql, Term::ReadKey. Most tools are written in Perl, and whatever is in Bash is being re-written in Perl. There is also a tarball or RPM or DEB packages.</p>
<p>Know your environment. The hardware &amp; OS are crucial for you to know. How much memory/CPU do you use? Do you use swap? Is this a physical/virtual machine? Do you have free space? What kind of RAID controller? Volumes? Disk? What about the network interfaces? What IO schedulers are used? Which filesystem is the data stored on? To answer all that, just use <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-summary.html">pt-summary</a></tt>.</p>
<p>Know your MySQL environment. Version? Build? How many databases? Where is the data directory? What about replication? What are key InnoDB settings? Storage engine in use? Index type? Foreign keys? Full text indexes? To answer all this and more use <a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-mysql-summary.html"><tt>pt-mysql-summary</tt></a>.</p>
<p>pt-slave-find shows you the topology and replication hierarchy of your MySQL replication instances. An inventory of replicas!</p>
<p>Where is my disk I/O going? Use <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-diskstats.html">pt-diskstats</a></tt> which is an improved iostat. There is <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-ioprofile.html">pt-ioprofile</a></tt> but it can be dangerous in production.</p>
<p>Now its time to get more intimate with your database. Let&#8217;s try to find the answer to these questions: how are the indexes used? Are there duplicate keys? Which queries are eating most of the resources? You can use <a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-duplicate-key-checker.html"><tt>pt-duplicate-key-checker</tt></a> to check for duplicate/redundant indexes or foreign keys. <a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-index-usage.html"><tt>pt-index-usage</tt></a> can tell you which indexes are unused. If you think you have bad SQL, check out <a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-query-advisor.html"><tt>pt-query-advisor</tt></a>.</p>
<p>You can use <a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-query-digest.html"><tt>pt-query-digest</tt></a> to analyze the slow query log and show a profile of the workload. You mostly use this with slow query logs &amp; tcpdump&#8217;s. Be careful when you have dropped packets &#8212; results may tend to be fake then!</p>
<p>After all this, its time to maintain your environment.</p>
<p><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-deadlock-logger.html"><tt>pt-deadlock-logger</tt></a> checks InnoDB status to log MySQL deadlock information. It needs to run continually to capture things.</p>
<p><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-fk-error-logger.html"><tt>pt-fk-error-logger</tt></a> extracts and logs MySQL foreign key errors.</p>
<p><tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-online-schema-change.html">pt-online-schema-change</a></tt> to alter tables. It makes a &#8220;shadow copy&#8221; and swaps them. Extremely useful for large, long-running ALTER. Facebook uses the same technique.</p>
<p>Validate your upgrades as upgrades are the leading cause of downtime. Are queries using different indexes? Is query execution plan different? New errors? See <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-upgrade.html">pt-upgrade</a></tt> for this. Best to run this on a third machine (i.e. the old machine and a new machine to see how it goes).</p>
<p>Verify replication integrity &#8211; <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-table-checksum.html">pt-table-checksum</a></tt>. Perform an online replication consistency check or checksum MySQL tables efficiently on one or many servers. Use it routinely (mandatory for 95% of MySQL users). Put it in a weekly crontab. Repair differences with <tt>pt-table-sync</tt>.</p>
<p>Repair out-of-sync replicas &#8211; <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-table-sync.html">pt-table-sync</a></tt></p>
<p>Measure delay acfurately &#8211; <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-heartbeat.html">pt-heartbeat</a></tt></p>
<p>Deliberately delay replication &#8211; <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-slave-delay.html">pt-slave-delay</a></tt></p>
<p>Watch &amp; restart MySQL replication after errors &#8211; <a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-slave-restart.html"><tt>pt-slave-restart</tt></a></p>
<p>When there are problems, get the symptoms when it hurts. Look at <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-stalk.html">pt-stalk</a></tt> (wait for a condition to occur them begin collecting data &#8211; eg. everytime the threads go over 2,000 you have a problem, so it collects stuff &#8211; it calls <tt>pt-collect</tt>), <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-collect.html">pt-collect</a></tt> (collect information from a server for some period of time), and <tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-sift.html">pt-sift</a></tt>.</p>
<p><tt><a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-mext.html">pt-mext</a></tt> looks at many samples of MySQL <tt>SHOW GLOBAL STATUS</tt> side-by-side. Default STATUS shows counter since the MySQL instances started. It is very helpful to see a delta of recent activity.</p>
<p>The future: <a href="http://www.percona.com/doc/percona-toolkit/2.0/pt-query-digest.html"><tt>pt-query-digest</tt></a> will do query reviews; <tt>pt-stalk</tt> will do &#8220;magical fault detection algorithm&#8221;. Its all opensource and its all on Launchpad at <a href="https://launchpad.net/percona-toolkit">lp:percona-toolkit</a>.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/practical-mysql-indexing-guidelines-by-stephane-combaudon" rel="bookmark" title="Permanent Link: Practical MySQL Indexing guidelines by Stéphane Combaudon">Practical MySQL Indexing guidelines by Stéphane Combaudon</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/replication-features-of-2011-by-sergey-petrunia" rel="bookmark" title="Permanent Link: Replication features of 2011 by Sergey Petrunia">Replication features of 2011 by Sergey Petrunia</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser" rel="bookmark" title="Permanent Link: MySQL synchronous replication in practice with Galera by Oli Sennhauser">MySQL synchronous replication in practice with Galera by Oli Sennhauser</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31907&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31907&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 15:58:15 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>Frédéric Descamps</category>
    <category>Percona Toolkit</category>
  </item>

  <item>
    <title>Replication features of 2011 by Sergey Petrunia</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2295</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/replication-features-of-2011-by-sergey-petrunia</link>
    <description>Sergey Petrunia of the MariaDB project &amp;amp; Monty Program.
MySQL 5.5 GA at the end of 2010. MariaDB 5.3 RC towards the end of 2011 (beta in June 2011).
MySQL 5.5 is merged to Percona Server 5.5 which included semi-sync replication, slave fsync options, atuomatic relay log recovery, RBR slave type conversions (question if this is useful or not), individual log flushing (very useful, but not many using), replication heartbeat, SHOW RELAYLOG EVENTS. About 2/3rds of the audience use MySQL 5.5 in production, with only 2 people using semi-sync replication.
MariaDB 5.3 brings replication features brings group commit in the binary log, which is merged into Percona Server 5.5. Checksums for binlog events which is merged from MySQL 5.6. Sergey goes in-depth about the group commit for the binary log. To find out a little more about MariaDB replication changes, see Replication in the Knowledgebase.
There are several implementations of group commit. Facebook started it, followed by MariaDB &amp;amp; Oracle. Percona 5.5 is GA so the feature is there, its not in MySQL 5.6 (yet?), and MariaDB 5.3 is where its at. Seems like the MariaDB implementation is the best so far &amp;#8211; refer to the Facebook benchmark performed by Mark Callaghan.
Annotated RBR poses a compatibility problem. MariaDB 5.3 has annotate_rows, while MySQL 5.6 has rows_query event. They are different events. So you cannot have a MariaDB 5.3 master and a MySQL 5.6 slave at this moment. So MySQL 5.6 will have a flag to mark &amp;#8220;ignorable&amp;#8221; binlog events which will be merged into MariaDB and this will make binary logs compatible again.
There is now also optimized RBR for tables with no primary key.
MySQL 5.6 also has crash-safe slave (replication information stored in tables). Crash-safe master (binary log recovery if the server starts &amp;amp; sees the binary log is corrupted). Parallel event execution is something that is new in MySQL 5.6 which is the most important feature for Sergey.
Pre-heating: There is mk-slave-prefetch (famous quote: &amp;#8220;Please don&amp;#8217;t use mk-slave-prefetch on #MySQL unless you are Facebook.&amp;#8221;). There is replication booster by Yoshinori Matsunobu. There is a Python version of mk-slave-prefetch that Facebook uses.


Related posts:MariaDB 5.3 query optimizer by Sergey Petrunia
Where is MariaDB today?
Building simple &amp;#038; complex replication clusters with Tungsten Replicator by Giuseppe Maxia
</description>
    <content:encoded><![CDATA[<p><a href="http://s.petrunia.net/blog/">Sergey Petrunia</a> of the <a href="http://mariadb.org/">MariaDB</a> project &amp;<a href="http://montyprogram.com/"> Monty Program</a>.</p>
<p>MySQL 5.5 GA at the end of 2010. MariaDB 5.3 RC towards the end of 2011 (beta in June 2011).</p>
<p>MySQL 5.5 is merged to Percona Server 5.5 which included semi-sync replication, slave fsync options, atuomatic relay log recovery, RBR slave type conversions (question if this is useful or not), individual log flushing (very useful, but not many using), replication heartbeat, SHOW RELAYLOG EVENTS. About 2/3rds of the audience use MySQL 5.5 in production, with only 2 people using semi-sync replication.</p>
<p>MariaDB 5.3 brings replication features brings group commit in the binary log, which is merged into Percona Server 5.5. Checksums for binlog events which is merged from MySQL 5.6. Sergey goes in-depth about the <a href="http://kb.askmonty.org/en/group-commit-for-the-binary-log">group commit for the binary log</a>. To find out a little more about MariaDB replication changes, see <a href="http://kb.askmonty.org/en/replication">Replication</a> in the Knowledgebase.</p>
<p>There are several implementations of group commit. Facebook started it, followed by MariaDB &amp; Oracle. Percona 5.5 is GA so the feature is there, its not in MySQL 5.6 (yet?), and MariaDB 5.3 is where its at. Seems like the MariaDB implementation is the best so far &#8211; refer to the <a href="https://www.facebook.com/note.php?note_id=10150261692455933">Facebook benchmark</a> performed by Mark Callaghan.</p>
<p><a href="http://kb.askmonty.org/en/annotate_rows_log_event">Annotated RBR</a> poses a compatibility problem. MariaDB 5.3 has annotate_rows, while MySQL 5.6 has rows_query event. They are different events. So you cannot have a MariaDB 5.3 master and a MySQL 5.6 slave at this moment. So MySQL 5.6 will have a flag to mark &#8220;ignorable&#8221; binlog events which will be merged into MariaDB and this will make binary logs compatible again.</p>
<p>There is now also optimized <a href="http://kb.askmonty.org/en/row-based-replication-with-no-primary-key">RBR for tables with no primary key</a>.</p>
<p>MySQL 5.6 also has crash-safe slave (replication information stored in tables). Crash-safe master (binary log recovery if the server starts &amp; sees the binary log is corrupted). <a href="http://dev.mysql.com/doc/refman/5.6/en/news-5-6-3.html">Parallel event execution</a> is something that is new in MySQL 5.6 which is the most important feature for Sergey.</p>
<p>Pre-heating: There is mk-slave-prefetch (<a href="https://twitter.com/#!/xaprb/status/128876485472829440">famous quote</a>: &#8220;Please don&#8217;t use mk-slave-prefetch on #MySQL unless you are Facebook.&#8221;). There is <a href="http://yoshinorimatsunobu.blogspot.com/2011/10/making-slave-pre-fetching-work-better.html">replication booster</a> by Yoshinori Matsunobu. There is a <a href="http://dom.as/2011/12/03/replication-prefetching/">Python version</a> of mk-slave-prefetch that Facebook uses.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mariadb-5-3-query-optimizer-by-sergey-petrunia" rel="bookmark" title="Permanent Link: MariaDB 5.3 query optimizer by Sergey Petrunia">MariaDB 5.3 query optimizer by Sergey Petrunia</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2011/04/20/where-is-mariadb-today" rel="bookmark" title="Permanent Link: Where is MariaDB today?">Where is MariaDB today?</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/building-simple-complex-replication-clusters-with-tungsten-replicator-by-giuseppe-maxia" rel="bookmark" title="Permanent Link: Building simple &amp; complex replication clusters with Tungsten Replicator by Giuseppe Maxia">Building simple &#038; complex replication clusters with Tungsten Replicator by Giuseppe Maxia</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31906&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31906&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 14:32:45 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MariaDB</category>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>replication</category>
    <category>Sergey Petrunia</category>
  </item>

  <item>
    <title>MySQL Creatively in a Sandbox by Giuseppe Maxia</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2292</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/mysql-creatively-in-a-sandbox-by-giuseppe-maxia</link>
    <description>Giuseppe Maxia of Continuent and long time creator of MySQL Sandbox.
Only works on Unix-like servers. Works with MySQL, Percona &amp;amp; MariaDB servers. MySQL server has the data directory, the port and the socket &amp;#8211; you can&amp;#8217;t share these.
To use it: make_sandbox foo.tar.gz. Then just do ./use.
$SANDBOX_HOME is ~/sandboxes. You can also create ~/opt/mysql/ and if you have MySQL 5.0.91 binary in that directory, you can just do &amp;#8220;sb 5.1.91&amp;#8243;.
Sandbox has features to start replication systems as well. You can have varying master/slave setups with varying versions as well (good idea to test from MySQL -&amp;gt; MariaDB master-&amp;gt;slave for migration).
You can now also play with tungsten-sandbox, which is a great way to start playing with Tungsten Replicator (see documentation and tungsten-toolbox). There is apparently also a MySQL Cluster sandbox tool that someone is working on.
 


Related posts:Building simple &amp;#038; complex replication clusters with Tungsten Replicator by Giuseppe Maxia
MySQL HA reloaded by Ivan Zoratti
MySQL synchronous replication in practice with Galera by Oli Sennhauser
</description>
    <content:encoded><![CDATA[<p><a href="http://datacharmer.blogspot.com/">Giuseppe Maxia</a> of <a href="http://continuent.com/">Continuent</a> and long time creator of <a href="http://mysqlsandbox.net/">MySQL Sandbox</a>.</p>
<p>Only works on Unix-like servers. Works with MySQL, Percona &amp; MariaDB servers. MySQL server has the data directory, the port and the socket &#8211; you can&#8217;t share these.</p>
<p>To use it: make_sandbox foo.tar.gz. Then just do ./use.</p>
<p>$SANDBOX_HOME is ~/sandboxes. You can also create ~/opt/mysql/ and if you have MySQL 5.0.91 binary in that directory, you can just do &#8220;sb 5.1.91&#8243;.</p>
<p>Sandbox has features to start replication systems as well. You can have varying master/slave setups with varying versions as well (good idea to test from MySQL -&gt; MariaDB master-&gt;slave for migration).</p>
<p>You can now also play with tungsten-sandbox, which is a great way to start playing with Tungsten Replicator (see <a href="http://code.google.com/p/tungsten-toolbox/wiki/TungstenSandbox">documentation</a> and <a href="http://code.google.com/p/tungsten-toolbox/">tungsten-toolbox</a>). There is apparently also a MySQL Cluster sandbox tool that someone is working on.</p>
<p> </p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/building-simple-complex-replication-clusters-with-tungsten-replicator-by-giuseppe-maxia" rel="bookmark" title="Permanent Link: Building simple &amp; complex replication clusters with Tungsten Replicator by Giuseppe Maxia">Building simple &#038; complex replication clusters with Tungsten Replicator by Giuseppe Maxia</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-ha-reloaded-by-ivan-zoratti" rel="bookmark" title="Permanent Link: MySQL HA reloaded by Ivan Zoratti">MySQL HA reloaded by Ivan Zoratti</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser" rel="bookmark" title="Permanent Link: MySQL synchronous replication in practice with Galera by Oli Sennhauser">MySQL synchronous replication in practice with Galera by Oli Sennhauser</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31905&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31905&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 13:57:47 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>giuseppe maxia</category>
    <category>MySQL Sandbox</category>
  </item>

  <item>
    <title>Optimizing your InnoDB buffer pool usage by Steve Hardy</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2289</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/optimizing-your-innodb-buffer-pool-usage-by-steve-hardy</link>
    <description>Steve Hardy of Zarafa.
Work that has been done to make Zarafa better. Why do you optimise your buffer pool? To decrease your I/O load. How can you do it? Buy more RAM, page compression, less (smaller) data, rearrange data.
MariaDB or Percona Server allows you to inspect your buffer pool (unsure if this is now available in MySQL 5.6). Giuseppe in the audience says this is available in MySQL 5.6, but Steve used this on MariaDB 5.2.
Strategies to fix it: Make records smaller. Remove indexes if you can use others almost as efficiently. Make records that are accessed around the same time have a higher chance of being on the same page. Use page compression. Buy more RAM. Try Batched Key Access (BKA) in MariaDB 5.3+.
Best to view the presentation since there are specific examples that speak about how Zarafa solves their problems like a user trying to sort their email, etc.


Related posts:Batched Key Access Join Previews available
MariaDB 5.3 query optimizer by Sergey Petrunia
MariaDB/MySQL users in Paris &amp;#038; Brussels
</description>
    <content:encoded><![CDATA[<p>Steve Hardy of <a href="http://www.zarafa.com/">Zarafa</a>.</p>
<p>Work that has been done to make Zarafa better. Why do you optimise your buffer pool? To decrease your I/O load. How can you do it? Buy more RAM, page compression, less (smaller) data, rearrange data.</p>
<p>MariaDB or Percona Server allows you to inspect your <a href="http://www.percona.com/docs/wiki/percona-server%3Afeatures%3Ainnodb_buffer_pool_pages">buffer pool</a> (unsure if this is now available in MySQL 5.6). Giuseppe in the audience says this is available in MySQL 5.6, but Steve used this on MariaDB 5.2.</p>
<p>Strategies to fix it: Make records smaller. Remove indexes if you can use others almost as efficiently. Make records that are accessed around the same time have a higher chance of being on the same page. Use page compression. Buy more RAM. Try Batched Key Access (BKA) in MariaDB 5.3+.</p>
<p>Best to view the presentation since there are specific examples that speak about how Zarafa solves their problems like a user trying to sort their email, etc.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2008/04/09/batched-key-access-join-previews-available" rel="bookmark" title="Permanent Link: Batched Key Access Join Previews available">Batched Key Access Join Previews available</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mariadb-5-3-query-optimizer-by-sergey-petrunia" rel="bookmark" title="Permanent Link: MariaDB 5.3 query optimizer by Sergey Petrunia">MariaDB 5.3 query optimizer by Sergey Petrunia</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/01/30/mariadbmysql-users-in-paris-brussels" rel="bookmark" title="Permanent Link: MariaDB/MySQL users in Paris &amp; Brussels">MariaDB/MySQL users in Paris &#038; Brussels</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31904&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31904&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 13:29:02 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MariaDB</category>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>Steve Hardy</category>
  </item>

  <item>
    <title>Practical MySQL Indexing guidelines by Stéphane Combaudon</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2286</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/practical-mysql-indexing-guidelines-by-stephane-combaudon</link>
    <description>Stéphane Combaudon of Dailymotion.
Index: separate data structure to speed up SELECTs. Think of index in a book. In MySQL, key=index. Consider that indexes are trees.
InnoDB&amp;#8217;s clustered index &amp;#8211; data is stored with the Primary Key (PK) so PK lookups are fast. Secondary keys hold the PK values. Designing InnoDB PK&amp;#8217;s with care is critical for performance.
An index can filter and/or sort values. An index can contain all the fields needed for the query you don&amp;#8217;t need to go to the table (a covering index).
MySQL only uses 1 index per table per query (not 100% true &amp;#8211; OR clauses), so think of a composite index when you can. Can&amp;#8217;t index TEXT fields (use a prefix). Same for BLOBs and long VARCHARs.
Indexes: speed up queries, increases the size of your dataset, slows down writes. How big is the write slowdown? Simple test by Stephane, for in-memory workloads he says adding 2 keys makes performance 2x worse; for on-disk workloads he says its 40x worse. Never neglect the slowdown of your writes when you have an index. There is a graph in the slidedeck.
What is a bad index? Unused indexes. Redundant indexes. Duplicate indexes.
Indexing is not an exact science, but guessing is probably not the best way to design indexes. Always check your assumptions &amp;#8211; EXPLAIN does not tell you everything, time your queries with different index combinations, SHOW PROFILES is often valuable. Slow query log is a good place to start.
Many slides with examples, so I hope Stephane posts the deck soon. If possible, try to sort &amp;amp; filter (an index is not always the best for sorting).
InnoDB&amp;#8217;s clustered index is always covering. SELECT by PK is the fastest access with InnoDB.
An index can give you 3 benefits: filtering, sorting, covering.
See Userstats v2 - you need Percona Server or MariaDB 5.2+. See also pt-duplicate-key-checker to find redundant indexes easily. See also pt-index-usage to help answer questions not covered by userstats.


Related posts:Sphinx user stories by Stéphane Varoqui
Managing MySQL with Percona Toolkit by Frédéric Descamps
MySQL Full Text Search by Alex Rubin
</description>
    <content:encoded><![CDATA[<p>Stéphane Combaudon of Dailymotion.</p>
<p>Index: separate data structure to speed up SELECTs. Think of index in a book. In MySQL, key=index. Consider that indexes are trees.</p>
<p>InnoDB&#8217;s clustered index &#8211; data is stored with the Primary Key (PK) so PK lookups are fast. Secondary keys hold the PK values. Designing InnoDB PK&#8217;s with care is critical for performance.</p>
<p>An index can filter and/or sort values. An index can contain all the fields needed for the query you don&#8217;t need to go to the table (a covering index).</p>
<p>MySQL only uses 1 index per table per query (not 100% true &#8211; OR clauses), so think of a composite index when you can. Can&#8217;t index TEXT fields (use a prefix). Same for BLOBs and long VARCHARs.</p>
<p>Indexes: speed up queries, increases the size of your dataset, slows down writes. How big is the write slowdown? Simple test by Stephane, for in-memory workloads he says adding 2 keys makes performance 2x worse; for on-disk workloads he says its 40x worse. Never neglect the slowdown of your writes when you have an index. There is a graph in the slidedeck.</p>
<p>What is a bad index? Unused indexes. Redundant indexes. Duplicate indexes.</p>
<p>Indexing is not an exact science, but guessing is probably not the best way to design indexes. Always check your assumptions &#8211; EXPLAIN does not tell you everything, time your queries with different index combinations, SHOW PROFILES is often valuable. Slow query log is a good place to start.</p>
<p>Many slides with examples, so I hope Stephane posts the deck soon. If possible, try to sort &amp; filter (an index is not always the best for sorting).</p>
<p>InnoDB&#8217;s clustered index is always covering. SELECT by PK is the fastest access with InnoDB.</p>
<p>An index can give you 3 benefits: filtering, sorting, covering.</p>
<p>See <a href="http://kb.askmonty.org/en/user-statistics">Userstats v2 </a>- you need Percona Server or MariaDB 5.2+. See also pt-duplicate-key-checker to find redundant indexes easily. See also pt-index-usage to help answer questions not covered by userstats.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/sphinx-user-stories-by-stephane-varoqui" rel="bookmark" title="Permanent Link: Sphinx user stories by Stéphane Varoqui">Sphinx user stories by Stéphane Varoqui</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/managing-mysql-with-percona-toolkit-by-frederic-descamps" rel="bookmark" title="Permanent Link: Managing MySQL with Percona Toolkit by Frédéric Descamps">Managing MySQL with Percona Toolkit by Frédéric Descamps</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2008/04/15/mysql-full-text-search-by-alex-rubin" rel="bookmark" title="Permanent Link: MySQL Full Text Search by Alex Rubin">MySQL Full Text Search by Alex Rubin</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31903&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31903&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 13:01:06 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MariaDB</category>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>Stéphane Combaudon</category>
  </item>

  <item>
    <title>MySQL synchronous replication in practice with Galera by Oli Sennhauser</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2283</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser</link>
    <description>Oli Sennhauser of FromDual.
Synchronous multi-master replication with the Galera plugin. Your application connects to the load balancer and it redirects read/write traffic to the various MySQL Galera nodes. Tested a setup with 17 SQL nodes and you can have even more. Scaling reads and also a little bit for scaling writes is what Galera is good for.
If one node fails, the other two nodes still communicates with each other and the load balancer is aware of the failed node.
Why Galera? There is master-slave replication but its not multi-master, and its asynchronous and you can get inconsistencies. There is master-master replication but its asynchronous and can have inconsistencies and conflicts if you write on both nodes. MHA/MMM/Tungsten are not providing new technology but are based on the MySQL replication technology. MySQL Cluster is another solution but its not InnoDB storage &amp;amp; your need new know-how for Cluster. Also Cluster has problems with fast JOINs. Active/Passive failover clustering, but too often you have resources idling. Schooner being closed &amp;amp; expensive is hard to know much about what they&amp;#8217;re doing.
Galera is synchronous &amp;amp; based on InnoDB (others should in theory be possible). Active-active real multi-master topology. True parallel replication on row level. Cluster speaks with each other. There is no slave lag. Won&amp;#8217;t lose transactions. Read/write scalability, write throughput can be improved but can&amp;#8217;t scale in the way like MySQL Cluster.
Disadvantages? Its not native MySQL binaries/sources but a patch. Codership provides binaries. Higher probability of deadlocks. When you do a full sync (like when a node comes back after downtime), one node is blocked. This is why the minimum you need a 3-node cluster. Also if you do a full sync with a database larger than 50GB, the recommended method is to use mysqldump (which can be very slow). You can use rsync. Percona is working on xtrabackup to do a full sync between nodes.
Setup: 3 nodes are recommended. Or just 2 nodes and one for garbd (Galera Arbitrator Daemon). 2 nodes works but pay attention to a split brain scenario. Go to the Codership website, download their binaries and wsrep (the Galera plug-in). Create your own user on all nodes (don&amp;#8217;t use the default root user). You then need to configure my.cnf (there have been discussions for a galera.conf, but Oli just uses my.cnf). Galera works only with InnoDB, so in my.cnf make the default storage engine InnoDB (don&amp;#8217;t for example, by accident have MyISAM tables).
The demo has a strange Galera start script, but its not been easy to work. Just start MySQL usually like you would do.
SST is Snapshot State Transfer (SST). Its the initial full sync between the 1st and the other node. SST blocks the donor node (hence why you need 3 nodes). With Galera v2.0, there is also incremental state transfer. It should be GA in February 2012. You can get deltas as opposed to the full sync. You can configure which will be the donor node.
Currently there are 27 variables about Galera in v1.1. You can do it just by doing SHOW GLOBAL VARIABLES LIKE &amp;#8216;wsrep%&amp;#8217;;. The plugin itself, wsrep_provider_options has plenty of options &amp;amp; plenty of room for tuning. SHOW GLOBAL STATUS LIKE &amp;#8216;wsrep%&amp;#8217;; currently has 38 status information fields in Galera v1.1.
For load balancing, you can do it in your application (on your own). You can also use Connector/J which provides load balancing. There is also a PHP MySQLnd that works.


Related posts:MySQL HA reloaded by Ivan Zoratti
Ticketmaster thrives on MySQL Replication
New MySQL 5.6 Features by Oli Sennhauser
</description>
    <content:encoded><![CDATA[<p><a href="http://www.shinguz.ch/">Oli Sennhauser</a> of <a href="http://fromdual.com/">FromDual</a>.</p>
<p>Synchronous multi-master replication with the Galera plugin. Your application connects to the load balancer and it redirects read/write traffic to the various MySQL Galera nodes. Tested a setup with 17 SQL nodes and you can have even more. Scaling reads and also a little bit for scaling writes is what Galera is good for.</p>
<p>If one node fails, the other two nodes still communicates with each other and the load balancer is aware of the failed node.</p>
<p>Why Galera? There is master-slave replication but its not multi-master, and its asynchronous and you can get inconsistencies. There is master-master replication but its asynchronous and can have inconsistencies and conflicts if you write on both nodes. MHA/MMM/Tungsten are not providing new technology but are based on the MySQL replication technology. MySQL Cluster is another solution but its not InnoDB storage &amp; your need new know-how for Cluster. Also Cluster has problems with fast JOINs. Active/Passive failover clustering, but too often you have resources idling. Schooner being closed &amp; expensive is hard to know much about what they&#8217;re doing.</p>
<p>Galera is synchronous &amp; based on InnoDB (others should in theory be possible). Active-active real multi-master topology. True parallel replication on row level. Cluster speaks with each other. There is no slave lag. Won&#8217;t lose transactions. Read/write scalability, write throughput can be improved but can&#8217;t scale in the way like MySQL Cluster.</p>
<p>Disadvantages? Its not native MySQL binaries/sources but a patch. Codership provides binaries. Higher probability of deadlocks. When you do a full sync (like when a node comes back after downtime), one node is blocked. This is why the minimum you need a 3-node cluster. Also if you do a full sync with a database larger than 50GB, the recommended method is to use mysqldump (which can be very slow). You can use rsync. Percona is working on xtrabackup to do a full sync between nodes.</p>
<p>Setup: 3 nodes are recommended. Or just 2 nodes and one for garbd (Galera Arbitrator Daemon). 2 nodes works but pay attention to a split brain scenario. Go to the Codership website, download their binaries and wsrep (the Galera plug-in). Create your own user on all nodes (don&#8217;t use the default root user). You then need to configure my.cnf (there have been discussions for a galera.conf, but Oli just uses my.cnf). Galera works only with InnoDB, so in my.cnf make the default storage engine InnoDB (don&#8217;t for example, by accident have MyISAM tables).</p>
<p>The demo has a strange Galera start script, but its not been easy to work. Just start MySQL usually like you would do.</p>
<p>SST is Snapshot State Transfer (SST). Its the initial full sync between the 1st and the other node. SST blocks the donor node (hence why you need 3 nodes). With Galera v2.0, there is also incremental state transfer. It should be GA in February 2012. You can get deltas as opposed to the full sync. You can configure which will be the donor node.</p>
<p>Currently there are 27 variables about Galera in v1.1. You can do it just by doing SHOW GLOBAL VARIABLES LIKE &#8216;wsrep%&#8217;;. The plugin itself, wsrep_provider_options has plenty of options &amp; plenty of room for tuning. SHOW GLOBAL STATUS LIKE &#8216;wsrep%&#8217;; currently has 38 status information fields in Galera v1.1.</p>
<p>For load balancing, you can do it in your application (on your own). You can also use Connector/J which provides load balancing. There is also a PHP MySQLnd that works.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-ha-reloaded-by-ivan-zoratti" rel="bookmark" title="Permanent Link: MySQL HA reloaded by Ivan Zoratti">MySQL HA reloaded by Ivan Zoratti</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2007/06/05/ticketmaster-thrives-on-mysql-replication" rel="bookmark" title="Permanent Link: Ticketmaster thrives on MySQL Replication">Ticketmaster thrives on MySQL Replication</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/new-mysql-5-6-features-by-oli-sennhauser" rel="bookmark" title="Permanent Link: New MySQL 5.6 Features by Oli Sennhauser">New MySQL 5.6 Features by Oli Sennhauser</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31902&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31902&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 12:30:42 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>Galera</category>
    <category>Oli Sennhauser</category>
  </item>

  <item>
    <title>Optimising SQL applications by using client side tools by Mark Riddoch</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2280</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/optimising-sql-applications-by-using-client-side-tools-by-mark-riddoch</link>
    <description>Mark Riddoch of SkySQL.
This was a talk about the future in general. What people would like. Etc. Not about something that exists yet, hence the sparse notes.
Trace statements are good for the &amp;#8220;why&amp;#8221;. You move on to the debugger, but what is a useful SQL debugger? Profilers addresses the &amp;#8220;when&amp;#8221;.
SQL developer tools: manually run queries (traditional route for development, effective way to test SQL statements, some indication of performance), server logs (alerts developers of serious issues like the slow query log &amp;#8211; identify poorly written queries, requires server access, not effective in a cloud environment (?)), external monitoring (network sniffing of connection packets, Ethereal dissectors &amp;#8211; allow individual connections to be traced, no server access, privileged network access, complex to interpret, possibility of packet loss), intrusive tools (insert &amp;#8220;proxy&amp;#8221; between client &amp;amp; server to intercept all traffic, imposes delay &amp;amp; requires setup modification).
Client-side tools &amp;#8211; client modification or hook via connectors (query logging, profiling). The Java connector has profiling. Should there be a connector slow query log? So there&amp;#8217;s no requirement for server access and its per client rather than per server.
Plans: roll out connector query logs for Java, C, and scripting languages built on Connector/C. SQL Parser for report generation/fuzzy matching. Create post-processing tools. Query log comparisons &amp;#8211; detect fluctuation in execution time, plan flip alerting, replay log.


Related posts:Managing MySQL with Percona Toolkit by Frédéric Descamps
Open source tools to run a small-medium sized business
Practical MySQL Indexing guidelines by Stéphane Combaudon
</description>
    <content:encoded><![CDATA[<p>Mark Riddoch of <a href="http://www.skysql.com/">SkySQL</a>.</p>
<p>This was a talk about the future in general. What people would like. Etc. Not about something that exists yet, hence the sparse notes.</p>
<p>Trace statements are good for the &#8220;why&#8221;. You move on to the debugger, but what is a useful SQL debugger? Profilers addresses the &#8220;when&#8221;.</p>
<p>SQL developer tools: manually run queries (traditional route for development, effective way to test SQL statements, some indication of performance), server logs (alerts developers of serious issues like the slow query log &#8211; identify poorly written queries, requires server access, not effective in a cloud environment (?)), external monitoring (network sniffing of connection packets, Ethereal dissectors &#8211; allow individual connections to be traced, no server access, privileged network access, complex to interpret, possibility of packet loss), intrusive tools (insert &#8220;proxy&#8221; between client &amp; server to intercept all traffic, imposes delay &amp; requires setup modification).</p>
<p>Client-side tools &#8211; client modification or hook via connectors (query logging, profiling). The Java connector has profiling. Should there be a connector slow query log? So there&#8217;s no requirement for server access and its per client rather than per server.</p>
<p>Plans: roll out connector query logs for Java, C, and scripting languages built on Connector/C. SQL Parser for report generation/fuzzy matching. Create post-processing tools. Query log comparisons &#8211; detect fluctuation in execution time, plan flip alerting, replay log.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/managing-mysql-with-percona-toolkit-by-frederic-descamps" rel="bookmark" title="Permanent Link: Managing MySQL with Percona Toolkit by Frédéric Descamps">Managing MySQL with Percona Toolkit by Frédéric Descamps</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2007/01/31/open-source-tools-to-run-a-small-medium-sized-business" rel="bookmark" title="Permanent Link: Open source tools to run a small-medium sized business">Open source tools to run a small-medium sized business</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/practical-mysql-indexing-guidelines-by-stephane-combaudon" rel="bookmark" title="Permanent Link: Practical MySQL Indexing guidelines by Stéphane Combaudon">Practical MySQL Indexing guidelines by Stéphane Combaudon</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31901&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31901&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 11:54:14 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>Mark Riddoch</category>
  </item>

  <item>
    <title>MySQL Cluster by Ralf Gebhardt</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2265</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/mysql-cluster-by-ralf-gebhardt</link>
    <description>Ralf Gebhardt of SkySQL.
Cluster: shared nothing architecture (no single point of failure), synchronous replication between nodes, ACID transactions, row level locking. In-memory storage (some data can be stored on disk, but indexes must be in-memory). Checkpointing to disk for durability. It supports two types of indexes &amp;#8211; ordered T-trees, unique hash indexes. Online operations like adding node groups, software upgrades, table alterations. Quick standard architecture diagram displayed about MySQL Cluster.
Network partitioning protocol is designed to avoid a split brain scenario. Is there at least one node from each node group? If not then this part cannot continue &amp;#8211; graceful shutdown. Are all nodes present from any node group? If so, then this is the only viable cluster &amp;#8211; continue to operate. Ask the arbitrator &amp;#8211; the arbitrator which parts will continue if no arbitrator is available the cluster shuts down.
Durability &amp;#8211; in order for a node to recover fast some data is stored locally. The REDO log is synchronized by global checkpoints (GCP). The DataMemory is synchronized by local checkpoints (LCP).
I agree with Ralf &amp;#8212; almost impossible to talk about NDB in 25 minutes. Its very deep, you&amp;#8217;d need at least three hours to grasp it well.


Related posts:MySQL synchronous replication in practice with Galera by Oli Sennhauser
Practical MySQL Indexing guidelines by Stéphane Combaudon
Managing MySQL with Percona Toolkit by Frédéric Descamps
</description>
    <content:encoded><![CDATA[<p>Ralf Gebhardt of <a href="http://www.skysql.com/">SkySQL</a>.</p>
<p>Cluster: shared nothing architecture (no single point of failure), synchronous replication between nodes, ACID transactions, row level locking. In-memory storage (some data can be stored on disk, but indexes must be in-memory). Checkpointing to disk for durability. It supports two types of indexes &#8211; ordered T-trees, unique hash indexes. Online operations like adding node groups, software upgrades, table alterations. Quick standard architecture diagram displayed about MySQL Cluster.</p>
<p>Network partitioning protocol is designed to avoid a split brain scenario. Is there at least one node from each node group? If not then this part cannot continue &#8211; graceful shutdown. Are all nodes present from any node group? If so, then this is the only viable cluster &#8211; continue to operate. Ask the arbitrator &#8211; the arbitrator which parts will continue if no arbitrator is available the cluster shuts down.</p>
<p>Durability &#8211; in order for a node to recover fast some data is stored locally. The REDO log is synchronized by global checkpoints (GCP). The DataMemory is synchronized by local checkpoints (LCP).</p>
<p>I agree with Ralf &#8212; almost impossible to talk about NDB in 25 minutes. Its very deep, you&#8217;d need at least three hours to grasp it well.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser" rel="bookmark" title="Permanent Link: MySQL synchronous replication in practice with Galera by Oli Sennhauser">MySQL synchronous replication in practice with Galera by Oli Sennhauser</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/practical-mysql-indexing-guidelines-by-stephane-combaudon" rel="bookmark" title="Permanent Link: Practical MySQL Indexing guidelines by Stéphane Combaudon">Practical MySQL Indexing guidelines by Stéphane Combaudon</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/managing-mysql-with-percona-toolkit-by-frederic-descamps" rel="bookmark" title="Permanent Link: Managing MySQL with Percona Toolkit by Frédéric Descamps">Managing MySQL with Percona Toolkit by Frédéric Descamps</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31900&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31900&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 11:25:32 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>mysql cluster</category>
    <category>ndb</category>
    <category>NDBCLUSTER</category>
    <category>Ralf Gebhardt</category>
  </item>

  <item>
    <title>Building simple &amp;amp; complex replication clusters with Tungsten Replicator by Giuseppe Maxia</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2262</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/building-simple-complex-replication-clusters-with-tungsten-replicator-by-giuseppe-maxia</link>
    <description>Giuseppe Maxia of Continuent.
MySQL replication is single threaded. Multi-master replication is complex with MySQL. Circular replication works but is very fragile. Once you&amp;#8217;ve achieved the feat, how do you avoid conflicts? The lack of global transaction ID today also means you may have slaves that may not be synchronized fully. Finally, some people like to replicate to PostgreSQL, Oracle and MongoDB.
This is where Tungsten Replicator comes into place. Opensource. 100% GPLv2. You can do easy failover (no need to synchronize the slaves manually when a master dies), have multiple masters, multiple sources to a single slave, conflict prevention, parallel replication, and replicate to Oracle/PostgreSQL database (heterogeneous replication &amp;#8211; Oracle-&amp;gt;MySQL is not opensource, but MySQL-&amp;gt;Oracle is).
Parallel replication: ability to replicate with multiple thread at once. Sharded by database (all big sites already use this naturally). Good choice for slave lag problems. Bad choice for single database projects. In their tests to measure slave catch up time between standard MySQL &amp;amp; Tungsten slave with 1hr of sysbench and some 130GB of data, MySQL replication takes 4.5h to catchup, and Tungsten takes less than 1 hour to catchup. This comparison was not made with MySQL 5.6 (the same parallel replication feature at this moment in 5.6 is quite buggy). No need to install Tungsten on the master (Tungsten needs to be on slave). Replication can revert to native salve with 2 commands, but the failover is an issue &amp;#8212; so install Tungsten on both!
Conflict prevention. When you have multiple masters you are tempted to do many things that you shouldn&amp;#8217;t. Tungsten provides the multi-master topology. Tungsten can help you avoid conflicts. Decide you want to shard your information by database &amp;#8211; Tungsten can enforce such rules. Define the rules, applied to either the master or the slave and you can then state to make replication fail or drop silently or drop with a warning.
You can create clusters very quickly with Tungsten. You can install from a centralized point to many servers. You need Java, Ruby, SSH access and a MySQL user with all privileges (used for replication).


Related posts:MySQL Creatively in a Sandbox by Giuseppe Maxia
MySQL HA reloaded by Ivan Zoratti
Replication features of 2011 by Sergey Petrunia
</description>
    <content:encoded><![CDATA[<p><a href="http://datacharmer.blogspot.com/">Giuseppe Maxia</a> of <a href="http://continuent.com/">Continuent</a>.</p>
<p>MySQL replication is single threaded. Multi-master replication is complex with MySQL. Circular replication works but is very fragile. Once you&#8217;ve achieved the feat, how do you avoid conflicts? The lack of global transaction ID today also means you may have slaves that may not be synchronized fully. Finally, some people like to replicate to PostgreSQL, Oracle and MongoDB.</p>
<p>This is where <a href="http://code.google.com/p/tungsten-replicator/">Tungsten Replicator</a> comes into place. Opensource. 100% GPLv2. You can do easy failover (no need to synchronize the slaves manually when a master dies), have multiple masters, multiple sources to a single slave, conflict prevention, parallel replication, and replicate to Oracle/PostgreSQL database (heterogeneous replication &#8211; Oracle-&gt;MySQL is not opensource, but MySQL-&gt;Oracle is).</p>
<p>Parallel replication: ability to replicate with multiple thread at once. Sharded by database (all big sites already use this naturally). Good choice for slave lag problems. Bad choice for single database projects. In their tests to measure slave catch up time between standard MySQL &amp; Tungsten slave with 1hr of sysbench and some 130GB of data, MySQL replication takes 4.5h to catchup, and Tungsten takes less than 1 hour to catchup. This comparison was not made with MySQL 5.6 (the same parallel replication feature at this moment in 5.6 is quite buggy). No need to install Tungsten on the master (Tungsten needs to be on slave). Replication can revert to native salve with 2 commands, but the failover is an issue &#8212; so install Tungsten on both!</p>
<p>Conflict prevention. When you have multiple masters you are tempted to do many things that you shouldn&#8217;t. Tungsten provides the multi-master topology. Tungsten can help you avoid conflicts. Decide you want to shard your information by database &#8211; Tungsten can enforce such rules. Define the rules, applied to either the master or the slave and you can then state to make replication fail or drop silently or drop with a warning.</p>
<p>You can create clusters very quickly with Tungsten. You can install from a centralized point to many servers. You need Java, Ruby, SSH access and a MySQL user with all privileges (used for replication).</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-creatively-in-a-sandbox-by-giuseppe-maxia" rel="bookmark" title="Permanent Link: MySQL Creatively in a Sandbox by Giuseppe Maxia">MySQL Creatively in a Sandbox by Giuseppe Maxia</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-ha-reloaded-by-ivan-zoratti" rel="bookmark" title="Permanent Link: MySQL HA reloaded by Ivan Zoratti">MySQL HA reloaded by Ivan Zoratti</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/replication-features-of-2011-by-sergey-petrunia" rel="bookmark" title="Permanent Link: Replication features of 2011 by Sergey Petrunia">Replication features of 2011 by Sergey Petrunia</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31899&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31899&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 11:01:26 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>giuseppe maxia</category>
    <category>replication</category>
    <category>Tungsten Replicator</category>
  </item>

  <item>
    <title>How to offload MySQL server with Sphinx by Vladimir Fedorkov</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2259</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/how-to-offload-mysql-server-with-sphinx-by-vladimir-fedorkov</link>
    <description>Vladimir Fedorkov of Sphinx.
Presentation started out with a very nice presentation of candies to all the audience members.
What is Sphinx? Another (C++) daemon on your boxes. Can be queried via API (PHP, Python, etc.) or MySQL-compatible protocol and SQL queries (SphinxQL). Some query examples are in the slides, here&amp;#8217;s one about SphinxSE in the KB.
MyISAM FTS is good but becomes slow with half a million documents. InnoDB has FTS now but he&amp;#8217;s not tried it (and neither has anyone in the audience to see it compare with MyISAM FTS).
Geographical distance is the distance measuring the surface of the earth (two pairs of float values &amp;#8211; latitude, longitude). In Sphinx, there is support for GEODIST(Lat,Long,Lat2,Long2) in Sphinx.
Segments are good for price ranges on a site, date ranges, etc. Use INTERVAL(field, x0, x1, …, xN).
Keep huge text collections out of the database. sql_field = path_to_file_text. Tell Sphinx to index text not from MySQL but out in the filesystem. Keep the metadata inside the database but keep the actual data outside of the database. max_file_field_buffer needs to be set properly.
You can do proximity search with Sphinx &amp;#8212; find the words &amp;#8220;hello world&amp;#8221; within a ten word block, for example.
Resources: the documentation, a book by O&amp;#8217;Reilly: Introduction to Search with Sphinx: From installation to relevance tuning (sold out at the FOSDEM O&amp;#8217;Reilly booth!), and their community page including wiki, forum, etc.


Related posts:MySQL Full Text Search by Alex Rubin
Sphinx user stories by Stéphane Varoqui
Morning sessions at MySQL MiniConf
</description>
    <content:encoded><![CDATA[<p>Vladimir Fedorkov of <a href="http://sphinxsearch.com/">Sphinx</a>.</p>
<p>Presentation started out with a very nice presentation of candies to all the audience members.</p>
<p>What is Sphinx? Another (C++) daemon on your boxes. Can be queried via API (PHP, Python, etc.) or MySQL-compatible protocol and SQL queries (SphinxQL). Some query examples are in the slides, here&#8217;s one about <a href="http://kb.askmonty.org/en/about-sphinxse">SphinxSE in the KB</a>.</p>
<p>MyISAM FTS is good but becomes slow with half a million documents. InnoDB has FTS now but he&#8217;s not tried it (and neither has anyone in the audience to see it compare with MyISAM FTS).</p>
<p>Geographical distance is the distance measuring the surface of the earth (two pairs of float values &#8211; latitude, longitude). In Sphinx, there is support for GEODIST(Lat,Long,Lat2,Long2) in Sphinx.</p>
<p>Segments are good for price ranges on a site, date ranges, etc. Use INTERVAL(field, x0, x1, …, xN).</p>
<p>Keep huge text collections out of the database. sql_field = path_to_file_text. Tell Sphinx to index text not from MySQL but out in the filesystem. Keep the metadata inside the database but keep the actual data outside of the database. max_file_field_buffer needs to be set properly.</p>
<p>You can do proximity search with Sphinx &#8212; find the words &#8220;hello world&#8221; within a ten word block, for example.</p>
<p>Resources: the <a href="http://sphinxsearch.com/docs/">documentation</a>, a book by O&#8217;Reilly: <a href="http://www.amazon.com/gp/product/0596809557/ref=as_li_ss_tl?ie=UTF8&amp;tag=colincharles-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=0596809557">Introduction to Search with Sphinx: From installation to relevance tuning</a><img style="border: none !important; margin: 0px !important;" src="http://www.assoc-amazon.com/e/ir?t=colincharles-20&amp;l=as2&amp;o=1&amp;a=0596809557" border="0" alt="" width="1" height="1" /> (sold out at the FOSDEM O&#8217;Reilly booth!), and their <a href="http://sphinxsearch.com/community/">community</a> page including wiki, forum, etc.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2008/04/15/mysql-full-text-search-by-alex-rubin" rel="bookmark" title="Permanent Link: MySQL Full Text Search by Alex Rubin">MySQL Full Text Search by Alex Rubin</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/sphinx-user-stories-by-stephane-varoqui" rel="bookmark" title="Permanent Link: Sphinx user stories by Stéphane Varoqui">Sphinx user stories by Stéphane Varoqui</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2008/01/28/morning-sessions-at-mysql-miniconf" rel="bookmark" title="Permanent Link: Morning sessions at MySQL MiniConf">Morning sessions at MySQL MiniConf</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31898&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31898&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 10:29:05 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>Sphinx</category>
    <category>Vladimir Fedorkov</category>
  </item>

  <item>
    <title>MariaDB 5.3 query optimizer by Sergey Petrunia</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2256</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/mariadb-5-3-query-optimizer-by-sergey-petrunia</link>
    <description>Sergey Petrunia of the MariaDB project.
What exactly is not working in MySQL? MySQL is poor at decision support/analytics. With large datasets you need special disk access strategies. Complex queries like insufficient subquery support and big joins are common int he MySQL world.
DBT-3 is used, scale=30, with a 75GB database and run a query &amp;#8220;average price of item between a range of dates&amp;#8221;. Query time took some 45 minutes to execute. Why? Run iostat -x to see what is going on. See that the CPU is mostly idle, so its an IO-bound load. Next you run SHOW ENGINE INNODB STATUS and you&amp;#8217;ll see how many reads per second is happening. Possible solution is to get more RAM or get an SSD (good to speedup OLTP workloads, but analytics over data is probably not viable since SSDs are small and not cheap).
The MySQL/MariaDB solution to the above problem is improved disk access strategies: multi-range read (MRR) and batched key access (BKA). In MariaDB, MRR/BKA need to be enabled (they are not turned on by default). The query time only took 3 minutes 48 seconds, which is some 11.8x faster than the previous 45 minutes.If you look at EXPLAIN output, its almost as same as before, expect the Extra filed. iostat -x will now show some CPU load, svctm down as well (so its not random disk seeks anymore &amp;#8212; some 8ms seek time on a regular 7,200rpm disk), SHOW ENGINE INNODB STATUS will show some 10,000 reads per second rather than the previous 200.
If you are on Fedora, check out the Systemtap feature to look at I/O patterns. stap deviceseeks.stp -c &amp;#8220;sleep 60&amp;#8243;.
Subqueries handling in MariaDB 5.3: check out the Subquery Optimizations Map. Only about 10% of the audience use optimizer hints in MySQL.


Related posts:Replication features of 2011 by Sergey Petrunia
MariaDB 5.1.42 released!
MariaDB 5.1.44 released
</description>
    <content:encoded><![CDATA[<p><a href="http://s.petrunia.net/blog/">Sergey Petrunia</a> of the <a href="http://mariadb.org/">MariaDB</a> project.</p>
<p>What exactly is not working in MySQL? MySQL is poor at decision support/analytics. With large datasets you need special disk access strategies. Complex queries like insufficient subquery support and big joins are common int he MySQL world.</p>
<p>DBT-3 is used, scale=30, with a 75GB database and run a query &#8220;average price of item between a range of dates&#8221;. Query time took some 45 minutes to execute. Why? Run iostat -x to see what is going on. See that the CPU is mostly idle, so its an IO-bound load. Next you run SHOW ENGINE INNODB STATUS and you&#8217;ll see how many reads per second is happening. Possible solution is to get more RAM or get an SSD (good to speedup OLTP workloads, but analytics over data is probably not viable since SSDs are small and not cheap).</p>
<p>The MySQL/MariaDB solution to the above problem is improved disk access strategies: <a href="http://kb.askmonty.org/en/multi-range-read-optimization">multi-range read (MRR)</a> and batched key access (BKA). In MariaDB, MRR/BKA need to be enabled (they are not turned on by default). The query time only took 3 minutes 48 seconds, which is some 11.8x faster than the previous 45 minutes.If you look at EXPLAIN output, its almost as same as before, expect the Extra filed. iostat -x will now show some CPU load, svctm down as well (so its not random disk seeks anymore &#8212; some 8ms seek time on a regular 7,200rpm disk), SHOW ENGINE INNODB STATUS will show some 10,000 reads per second rather than the previous 200.</p>
<p>If you are on Fedora, check out the Systemtap feature to look at I/O patterns. stap <a href="http://sourceware.org/systemtap/examples/io/deviceseeks.stp">deviceseeks.stp</a> -c &#8220;sleep 60&#8243;.</p>
<p>Subqueries handling in MariaDB 5.3: check out the <a href="http://kb.askmonty.org/en/subquery-optimizations-map">Subquery Optimizations Map</a>. Only about 10% of the audience use optimizer hints in MySQL.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/replication-features-of-2011-by-sergey-petrunia" rel="bookmark" title="Permanent Link: Replication features of 2011 by Sergey Petrunia">Replication features of 2011 by Sergey Petrunia</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2010/02/05/mariadb-5-1-42-released" rel="bookmark" title="Permanent Link: MariaDB 5.1.42 released!">MariaDB 5.1.42 released!</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2010/04/02/mariadb-5-1-44-released" rel="bookmark" title="Permanent Link: MariaDB 5.1.44 released">MariaDB 5.1.44 released</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31897&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31897&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 09:59:23 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MariaDB</category>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>Optimizer</category>
    <category>Sergey Petrunia</category>
  </item>

  <item>
    <title>MySQL HA reloaded by Ivan Zoratti</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2253</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/mysql-ha-reloaded-by-ivan-zoratti</link>
    <description>MySQL HA reloaded &amp;#8211; old tricks and cool new tools to guarantee high availability to your MySQL Servers by Ivan Zoratti of SkySQL. This talk is a little longer, so check out: HA Reloaded &amp;#8211; many ways to provide High Availability. The slides are already online.
Questions to ask: which level of high availability do I need? Do I require no loss of data? Do I need failover or is switchover enough? Can I provide a reasonable service when a component is down? Remember, five nine&amp;#8217;s high availability also means a lot of infrastructure costs.
Other things to clarify: availability vs scalability. HA costs. HA for your entire architecture, not just for your database servers. Review your SLAs.
The best high availability solution today is combined solutions.
MySQL replication &amp;#8211; asynchronous &amp;amp; semi-synchronous (lots of people use MySQL 5.5, about 4 people in room were on Percona Server &amp;#8211; question asked due to semi-sync replication only being available in 5.5 &amp;amp; greater), there are pros &amp;amp; cons of row based replication vs statement based replication.
MySQL Replication via Multi-Master replication Manager (MMM). Features such as monitoring, automatic failover, data backup &amp;amp; resync. Unfortunately, it has some problems with the stability &amp;amp; automatic failover. The project is not improved anymore, so there are other solutions that you should consider today.
MySQL Replication with MHA is a preferred solution. Something to consider: &amp;#8211;read-only=1 and log-bin on slaves. Master IP failover. FIltering rules. Multi-tier replication.
Tungsten Replicator &amp;#8211; open source, heterogenous replication. Truly multi-master and fan-in with Global ID. Per-schema multi-thread. You can also use it to replicate to Postgresql, Oracle and other databases. There is also Tungsten Enterprise.
Synchronous replication with DRBD is typical for active/standby environments. People don&amp;#8217;t really like this because they feel that there is a server doing nothing. You can always do it active/passive. It works with InnoDB only.
Synchronous replication with Galera works for InnoDB. Its multi-master with no SPOF. Its new/young technology so you may find some issues with it. Application failover must be managed, but the conflict resolution is quite tricky (when you commit a transaction you might be fine, but you may have transactions that are removed due to conflicts).
There is a commercial SchoonerSQL that provides synchronous master-slave replication for InnoDB. Its defined explicitly as a master-slave solution.
Active/Passive clusters using Shared Storage. Points to consider are the fact that redundancy &amp;amp; replication must be guaranteed by the shared storage. InnoDB only. What about filesystems?
Virtualized environments &amp;#8211; data storage, high availability &amp;amp; load balancing are provided and managed by the virtualized software. The faults are handled by the software, not the database.
There is also geographical replication for disaster recovery, having a master-master asynchronous replication is used to update the backup data centre. There is also storage snapshots for disaster recovery (not-specific to MySQL, its storage systems based, use only InnoDB).
There is also MySQL Cluster but there is another presentation about this later at FOSDEM. Very nice closing slide, &amp;#8220;The absolutely necessary comparison chart&amp;#8221; which some may disagree, but Ivan thinks is the best way forward.


Related posts:MySQL synchronous replication in practice with Galera by Oli Sennhauser
MySQL at Google
Building simple &amp;#038; complex replication clusters with Tungsten Replicator by Giuseppe Maxia
</description>
    <content:encoded><![CDATA[<p>MySQL HA reloaded &#8211; old tricks and cool new tools to guarantee high availability to your MySQL Servers by <a href="http://mysql4all.wordpress.com/">Ivan Zoratti</a> of <a href="http://www.skysql.com/">SkySQL</a>. This talk is a little longer, so check out: <a href="http://mysql4all.wordpress.com/2012/01/18/ha-reloaded/">HA Reloaded &#8211; many ways to provide High Availability</a>. The slides are already online.</p>
<p>Questions to ask: which level of high availability do I need? Do I require no loss of data? Do I need failover or is switchover enough? Can I provide a reasonable service when a component is down? Remember, five nine&#8217;s high availability also means a lot of infrastructure costs.</p>
<p>Other things to clarify: availability vs scalability. HA costs. HA for your entire architecture, not just for your database servers. Review your SLAs.</p>
<p>The best high availability solution today is combined solutions.</p>
<p>MySQL replication &#8211; asynchronous &amp; semi-synchronous (lots of people use MySQL 5.5, about 4 people in room were on Percona Server &#8211; question asked due to semi-sync replication only being available in 5.5 &amp; greater), there are pros &amp; cons of row based replication vs statement based replication.</p>
<p>MySQL Replication via Multi-Master replication Manager (MMM). Features such as monitoring, automatic failover, data backup &amp; resync. Unfortunately, it has some problems with the stability &amp; automatic failover. The project is not improved anymore, so there are other solutions that you should consider today.</p>
<p>MySQL Replication with <a href="http://code.google.com/p/mysql-master-ha/">MHA</a> is a preferred solution. Something to consider: &#8211;read-only=1 and log-bin on slaves. Master IP failover. FIltering rules. Multi-tier replication.</p>
<p>Tungsten Replicator &#8211; open source, heterogenous replication. Truly multi-master and fan-in with Global ID. Per-schema multi-thread. You can also use it to replicate to Postgresql, Oracle and other databases. There is also Tungsten Enterprise.</p>
<p>Synchronous replication with DRBD is typical for active/standby environments. People don&#8217;t really like this because they feel that there is a server doing nothing. You can always do it active/passive. It works with InnoDB only.</p>
<p>Synchronous replication with Galera works for InnoDB. Its multi-master with no SPOF. Its new/young technology so you may find some issues with it. Application failover must be managed, but the conflict resolution is quite tricky (when you commit a transaction you might be fine, but you may have transactions that are removed due to conflicts).</p>
<p>There is a commercial SchoonerSQL that provides synchronous master-slave replication for InnoDB. Its defined explicitly as a master-slave solution.</p>
<p>Active/Passive clusters using Shared Storage. Points to consider are the fact that redundancy &amp; replication must be guaranteed by the shared storage. InnoDB only. What about filesystems?</p>
<p>Virtualized environments &#8211; data storage, high availability &amp; load balancing are provided and managed by the virtualized software. The faults are handled by the software, not the database.</p>
<p>There is also geographical replication for disaster recovery, having a master-master asynchronous replication is used to update the backup data centre. There is also storage snapshots for disaster recovery (not-specific to MySQL, its storage systems based, use only InnoDB).</p>
<p>There is also MySQL Cluster but there is another presentation about this later at FOSDEM. Very nice closing slide, &#8220;The absolutely necessary comparison chart&#8221; which some may disagree, but Ivan thinks is the best way forward.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser" rel="bookmark" title="Permanent Link: MySQL synchronous replication in practice with Galera by Oli Sennhauser">MySQL synchronous replication in practice with Galera by Oli Sennhauser</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2007/04/26/mysql-at-google" rel="bookmark" title="Permanent Link: MySQL at Google">MySQL at Google</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/building-simple-complex-replication-clusters-with-tungsten-replicator-by-giuseppe-maxia" rel="bookmark" title="Permanent Link: Building simple &amp; complex replication clusters with Tungsten Replicator by Giuseppe Maxia">Building simple &#038; complex replication clusters with Tungsten Replicator by Giuseppe Maxia</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31896&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31896&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 09:32:10 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>Ivan Zoratti</category>
    <category>MySQL HA</category>
  </item>

  <item>
    <title>Sphinx user stories by Stéphane Varoqui</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2250</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/sphinx-user-stories-by-stephane-varoqui</link>
    <description>Stephane Varoqui, Field Services SkySQL, Vlad Fedorkov, Director of PS, Sphinx Inc, Christophe Gesche, LAMP Expert, Delcampe, Herve Seignole, Web Architect, Groupe Pierre &amp;amp; Vacances Center Parcs &amp;#8211; this is a big talk!
Pros: Filtering takes place on attributes in separate tables. Rely on the optimizer choice. HASH JOIN can help (MariaDB 5.3). Table elimination can help (MariaDB 5.2). ICP Index Condition Pushdown can help (MariaDB 5.3/MySQL 5.6). Max 80M documents at Pixmania, all queries come in less than 1s using 128GB of RAM (MariaDB 5.2). At PAP.fr, there is 16GB RAM with MariaDB 5.2.
Cons: CPU intensive (replication with many slaves). Need covering indexes to cover various !filter !order. Join &amp;amp; sorting cost on lazy filtering.
The more indexes you have in the system, the more you need to increase the main memory of the server. Keep the Btree&amp;#8217;s in memory.
What about denormalized schemas? Not really CPU intensive, just IO. Can go to disk, full partition scan with filtering taking place on record order using covering index. Can shard but not that easy. Use the spider storage engine or shard-query. Can use memory engine for isolation. There are cons like duplicate data, duplicate indexes, missing material views, merge index cost, impact on write performance, and can consume a lot of memory with many indexes.
MySQL can push hardware, so read less/do less/read serialized/map reduce to get better latency. Chose data type wisely, replace string with numeric, vertical &amp;amp; horizontal sharing, snowflake compression (combination of attributes, build a table of the combination and replace it with an ID). If you are lazy, just use Sphinx!
Sphinx is just another daemon that can serve queries. Its easy to setup, easy to scale, storage engine makes it accessible to current MySQL users, API in core MariaDB (SphinxSE), SphinxQL, SphinxSE is transparent to the application layer of MySQL protocol.
Demo done using the Employees DB.
Pierre &amp;amp; Vacances &amp;#8211; Centerparcs. Free text search, they use MariaDB using Levenshtein UDF implementation. Went live 01/2011. First implementation of Sphinx (12 indexes). Its grown, they use PHP API. The new goal is to never send an empty result. 1 index per website/market, with a total of 15 million docs. Index built on standalone server. Using internal gearman job schedule to generate index before cache generated. Current monitoring is via Nagios &amp;amp; perl, but the next step is to use Monyog &amp;amp; MariaDB INFORMATION_SCHEMA plugin.
Delcampe is an auction website with 45M &amp;#8216;active&amp;#8217; items. Its dedicated for collectors. 3 string fields, and 15 attributes. 40-120K new items daily. Started with mysql fulltext in 2007, moved to Sphinx in 2008. There was a need to have more filters. Now they have 5 sphinx servers + 1 MySQL server. HAproxy to load balance.


Related posts:Practical MySQL Indexing guidelines by Stéphane Combaudon
How to offload MySQL server with Sphinx by Vladimir Fedorkov
MySQL Full Text Search by Alex Rubin
</description>
    <content:encoded><![CDATA[<p><a href="http://varokism.blogspot.com/">Stephane Varoqui</a>, Field Services <a href="http://www.skysql.com/">SkySQL</a>, Vlad Fedorkov, Director of PS, Sphinx Inc, Christophe Gesche, LAMP Expert, Delcampe, Herve Seignole, Web Architect, Groupe Pierre &amp; Vacances Center Parcs &#8211; this is a big talk!</p>
<p>Pros: Filtering takes place on attributes in separate tables. Rely on the optimizer choice. HASH JOIN can help (MariaDB 5.3). Table elimination can help (MariaDB 5.2). ICP Index Condition Pushdown can help (MariaDB 5.3/MySQL 5.6). Max 80M documents at Pixmania, all queries come in less than 1s using 128GB of RAM (MariaDB 5.2). At PAP.fr, there is 16GB RAM with MariaDB 5.2.</p>
<p>Cons: CPU intensive (replication with many slaves). Need covering indexes to cover various !filter !order. Join &amp; sorting cost on lazy filtering.</p>
<p>The more indexes you have in the system, the more you need to increase the main memory of the server. Keep the Btree&#8217;s in memory.</p>
<p>What about denormalized schemas? Not really CPU intensive, just IO. Can go to disk, full partition scan with filtering taking place on record order using covering index. Can shard but not that easy. Use the <a href="http://spiderformysql.com/">spider storage engine</a> or <a href="http://code.google.com/p/shard-query/">shard-query</a>. Can use memory engine for isolation. There are cons like duplicate data, duplicate indexes, missing material views, merge index cost, impact on write performance, and can consume a lot of memory with many indexes.</p>
<p>MySQL can push hardware, so read less/do less/read serialized/map reduce to get better latency. Chose data type wisely, replace string with numeric, vertical &amp; horizontal sharing, snowflake compression (combination of attributes, build a table of the combination and replace it with an ID). If you are lazy, just use Sphinx!</p>
<p>Sphinx is just another daemon that can serve queries. Its easy to setup, easy to scale, storage engine makes it accessible to current MySQL users, API in core MariaDB (SphinxSE), SphinxQL, SphinxSE is transparent to the application layer of MySQL protocol.</p>
<p>Demo done using the <a href="http://dev.mysql.com/doc/employee/en/employee.html">Employees DB</a>.</p>
<p>Pierre &amp; Vacances &#8211; Centerparcs. Free text search, they use MariaDB using Levenshtein UDF implementation. Went live 01/2011. First implementation of Sphinx (12 indexes). Its grown, they use PHP API. The new goal is to never send an empty result. 1 index per website/market, with a total of 15 million docs. Index built on standalone server. Using internal gearman job schedule to generate index before cache generated. Current monitoring is via Nagios &amp; perl, but the next step is to use Monyog &amp; MariaDB INFORMATION_SCHEMA plugin.</p>
<p>Delcampe is an auction website with 45M &#8216;active&#8217; items. Its dedicated for collectors. 3 string fields, and 15 attributes. 40-120K new items daily. Started with mysql fulltext in 2007, moved to Sphinx in 2008. There was a need to have more filters. Now they have 5 sphinx servers + 1 MySQL server. HAproxy to load balance.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/practical-mysql-indexing-guidelines-by-stephane-combaudon" rel="bookmark" title="Permanent Link: Practical MySQL Indexing guidelines by Stéphane Combaudon">Practical MySQL Indexing guidelines by Stéphane Combaudon</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/how-to-offload-mysql-server-with-sphinx-by-vladimir-fedorkov" rel="bookmark" title="Permanent Link: How to offload MySQL server with Sphinx by Vladimir Fedorkov">How to offload MySQL server with Sphinx by Vladimir Fedorkov</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2008/04/15/mysql-full-text-search-by-alex-rubin" rel="bookmark" title="Permanent Link: MySQL Full Text Search by Alex Rubin">MySQL Full Text Search by Alex Rubin</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31895&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31895&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 09:01:25 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MariaDB</category>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>Sphinx</category>
    <category>Stéphane Varoqui</category>
  </item>

  <item>
    <title>New MySQL 5.6 Features by Oli Sennhauser</title>
    <guid isPermaLink="false">http://www.bytebot.net/blog/?p=2247</guid>
    <link>http://www.bytebot.net/blog/archives/2012/02/05/new-mysql-5-6-features-by-oli-sennhauser</link>
    <description>First talk at FOSDEM MySQL Devroom by Oli Sennhauser, of FromDual. Quick notes/liveblog of the talk, plus links from a quick search.
New Release Model: starts with at least in beta quality, milestone releases are RC quality (every 3-6 months), between milestones new features are allowed, GA releases every 12-18 months, no more than 2 releases in active support. There is also MySQL Labs, in where features can make it into a release model, but not necessarily.
Oli&amp;#8217;s guess: MySQL 5.6 GA in April 2012 (Collaborate) or June 2012. As a consequence, MySQL 5.0 and MySQL 5.1 will be EOL probably by April this year.
New improvements in partitioning: explicit partition selection, exchanging partitions (good for ETL jobs).
New improvements in InnoDB: InnoDB INFORMATION_SCHEMA has got some new entries. Buffer (INNODB_BUFFER), Fulltext (INNODB_FT), Metrics (INNODB_METRICS), Data Dictionary (INNODB_SYS). The InnoDB Monitor is now obsolete. innodb_purge_threads can be set &amp;gt; 1. Kernel mutex split which should lead to improved concurrency. Persistent optimizer statistics (since InnoDB used to do random dives, so when you do a mysqldump, things can be different) &amp;#8211; you can do SET GLOBAL innodb_analyze_is_persistent = 1; (read more: InnoDB Persistent Statistics at last, InnoDB Persistent Statistics Save the Day).
New improvements in optimizer: ORDER by on non-indexed columns, Multi Range Read (MRR), Index Condition Pushdown (ICP), query execution plan for DML statements, Batched Key Access (BKA). There is also optimizer tracing.
There is now some new instrumentations in Performance Schema (introduced in MySQL 5.5). There is also improved replication features, but that will be covered in a later talk.
Fractional seconds (microseconds) is introduced in MySQL 5.6. GET DIAGNOSTICS for stored procedures. Pluggable authentication (socket). memcached/InnoDB still in labs, hasn&amp;#8217;t made it to a milestone release. Some 400+ bugs have been fixed. Lots of cleanup&amp;#8217;s (old unused variables, commands removed).
Pay attention to MySQL 5.6 incompatible changes when you plan to upgrade.
Probably some good resources: What&amp;#8217;s New in MySQL 5.6, MySQL 5.6 (Early Access Features) &amp;#8211; InnoDB &amp;amp; Replication.


Related posts:MySQL synchronous replication in practice with Galera by Oli Sennhauser
MySQL HA reloaded by Ivan Zoratti
MariaDB/MySQL users in Paris &amp;#038; Brussels
</description>
    <content:encoded><![CDATA[<p>First talk at FOSDEM MySQL Devroom by <a href="http://www.shinguz.ch/">Oli Sennhauser</a>, of <a href="http://fromdual.com/">FromDual</a>. Quick notes/liveblog of the talk, plus links from a quick search.</p>
<p>New Release Model: starts with at least in beta quality, milestone releases are RC quality (every 3-6 months), between milestones new features are allowed, GA releases every 12-18 months, no more than 2 releases in active support. There is also MySQL Labs, in where features can make it into a release model, but not necessarily.</p>
<p>Oli&#8217;s guess: MySQL 5.6 GA in April 2012 (Collaborate) or June 2012. As a consequence, MySQL 5.0 and MySQL 5.1 will be EOL probably by April this year.</p>
<p>New improvements in partitioning: explicit partition selection, exchanging partitions (good for ETL jobs).</p>
<p>New improvements in InnoDB: InnoDB INFORMATION_SCHEMA has got some new entries. Buffer (INNODB_BUFFER), Fulltext (INNODB_FT), Metrics (INNODB_METRICS), Data Dictionary (INNODB_SYS). The InnoDB Monitor is now obsolete. innodb_purge_threads can be set &gt; 1. Kernel mutex split which should lead to improved concurrency. Persistent optimizer statistics (since InnoDB used to do random dives, so when you do a mysqldump, things can be different) &#8211; you can do SET GLOBAL innodb_analyze_is_persistent = 1; (read more: <a href="http://blogs.innodb.com/wp/2011/04/innodb-persistent-statistics-at-last/">InnoDB Persistent Statistics at last</a>, <a href="http://oysteing.blogspot.com/2011/05/innodb-persistent-statistics-save-day.html">InnoDB Persistent Statistics Save the Day</a>).</p>
<p>New improvements in optimizer: ORDER by on non-indexed columns, Multi Range Read (MRR), Index Condition Pushdown (ICP), query execution plan for DML statements, Batched Key Access (BKA). There is also optimizer tracing.</p>
<p>There is now some new instrumentations in Performance Schema (introduced in MySQL 5.5). There is also improved replication features, but that will be covered in a later talk.</p>
<p>Fractional seconds (microseconds) is introduced in MySQL 5.6. GET DIAGNOSTICS for stored procedures. Pluggable authentication (socket). memcached/InnoDB still in labs, hasn&#8217;t made it to a milestone release. Some 400+ bugs have been fixed. Lots of cleanup&#8217;s (old unused variables, commands removed).</p>
<p>Pay attention to MySQL 5.6 incompatible changes when you plan to upgrade.</p>
<p>Probably some good resources: <a href="http://dev.mysql.com/tech-resources/articles/whats-new-in-mysql-5.6.html">What&#8217;s New in MySQL 5.6</a>, <a href="http://dev.mysql.com/tech-resources/articles/mysql56-labs-july2011.html">MySQL 5.6 (Early Access Features) &#8211; InnoDB &amp; Replication</a>.</p>


<p>Related posts:<ol><li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-synchronous-replication-in-practice-with-galera-by-oli-sennhauser" rel="bookmark" title="Permanent Link: MySQL synchronous replication in practice with Galera by Oli Sennhauser">MySQL synchronous replication in practice with Galera by Oli Sennhauser</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/02/05/mysql-ha-reloaded-by-ivan-zoratti" rel="bookmark" title="Permanent Link: MySQL HA reloaded by Ivan Zoratti">MySQL HA reloaded by Ivan Zoratti</a></li>
<li><a href="http://www.bytebot.net/blog/archives/2012/01/30/mariadbmysql-users-in-paris-brussels" rel="bookmark" title="Permanent Link: MariaDB/MySQL users in Paris &amp; Brussels">MariaDB/MySQL users in Paris &#038; Brussels</a></li>
</ol></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31894&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31894&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 08:33:08 +0000</pubDate>
    <dc:creator>Colin Charles</dc:creator>
    <category>MySQL</category>
    <category>FOSDEM</category>
    <category>MySQL 5.6</category>
    <category>Oli Sennhauser</category>
  </item>

  <item>
    <title>Consistent transactions between storage engines</title>
    <guid isPermaLink="false">815 at http://www.skysql.com</guid>
    <link>http://www.skysql.com/blogs/634448736facebook/consistent-transactions-between-storage-engines</link>
    <description>You may not realize it, but in MariaDB 5.2 and earlier and in MySQL up to version 5.5, START TRANSACTION WITH CONSISTENT SNAPSHOT does not give any guarantees of consistency between different storage engines.
For example, suppose you have two transactions which run in parallel:
Transaction T1:

BEGIN;
    SET @t = NOW();
    UPDATE xtradb_table SET a= @t WHERE id = 5;
    UPDATE pbxt_table SET b= @t WHERE id = 5;
    COMMIT;

Transaction T2:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
    START TRANSACTION WITH CONSISTENT SNAPSHOT;
    SELECT t1.a, t2.b
      FROM xtradb_table t1 INNER JOIN pbxt_table t2 ON t1.id=t2.id
    WHERE t1.id = 5;

In the above case, it is possible, even with a &quot;consistent&quot; snapshot, to see the changes in a transaction only in InnoDB/XtraDB tables, and not in PBXT tables.
Naturally, it would be much better if the changes were visible no matter the storage engine used by the table. Thankfully this is possible, thanks to the introduction in MariaDB 5.3
 of group commit
 and an enhanced storage engine API for COMMIT which allows storage engines to coordinate commit ordering and visibility with each other and with the binary log.
With these improvements, the START TRANSACTION WITH CONSISTENT SNAPSHOT statement in MariaDB 5.3 has been enhanced to ensure consistency in-between storage engines which support the new API. Currently the storage engines which support this are XtraDB (MariaDB's enhanced version of InnoDB) and PBXT. In addition, the binary log, while not a storage engine as such, also supports the new API and can provide a binlog position consistent with storage engine transaction snapshots.
This means that with transaction isolation level at least REPEATABLE READ, the START TRANSACTION WITH CONSISTENT SNAPSHOT statement can be used to ensure that queries will see a transaction-consistent view of the database between storage engines.
No longer is it possible for a query to see the changes from some transaction T in XtraDB tables without also seeing the changes T makes to PBXT tables.
More information on this can be found in the AskMonty Knowledgebase
.</description>
    <content:encoded><![CDATA[<p>You may not realize it, but in <a href="http://www.skysql.com/partners/partner-products/mariadb">MariaDB</a> 5.2 and earlier and in MySQL up to version 5.5, <tt>START TRANSACTION WITH CONSISTENT SNAPSHOT</tt> does <em>not</em> give any guarantees of consistency between different storage engines.</p>
<p>For example, suppose you have two transactions which run in parallel:</p>
<p>Transaction T1:</p>
<pre>
BEGIN;
    SET @t = NOW();
    UPDATE xtradb_table SET a= @t WHERE id = 5;
    UPDATE pbxt_table SET b= @t WHERE id = 5;
    COMMIT;

</pre><p>Transaction T2:</p>
<pre>
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
    START TRANSACTION WITH CONSISTENT SNAPSHOT;
    SELECT t1.a, t2.b
      FROM xtradb_table t1 INNER JOIN pbxt_table t2 ON t1.id=t2.id
    WHERE t1.id = 5;

</pre><p>In the above case, it is possible, even with a "consistent" snapshot, to see the changes in a transaction only in InnoDB/XtraDB tables, and not in PBXT tables.</p>
<p>Naturally, it would be much better if the changes were visible no matter the storage engine used by the table. Thankfully this is possible, thanks to the introduction in <a href="http://kb.askmonty.org/en/what-is-mariadb-53">MariaDB 5.3
</a> of <a href="http://kb.askmonty.org/en/group-commit-for-the-binary-log">group commit
</a> and an enhanced storage engine API for COMMIT which allows storage engines to coordinate commit ordering and visibility with each other and with the binary log.</p>
<p>With these improvements, the <tt>START TRANSACTION WITH CONSISTENT SNAPSHOT</tt> statement in MariaDB 5.3 has been enhanced to ensure consistency in-between storage engines which <a href="http://www.skysql.com/services/mysql/support">support</a> the new API. Currently the storage engines which support this are XtraDB (MariaDB's enhanced version of InnoDB) and PBXT. In addition, the binary log, while not a storage engine as such, also supports the new API and can provide a binlog position consistent with storage engine transaction snapshots.</p>
<p>This means that with transaction isolation level at least <tt>REPEATABLE READ</tt>, the <tt>START TRANSACTION WITH CONSISTENT SNAPSHOT</tt> statement can be used to ensure that queries will see a transaction-consistent view of the database <em>between</em> storage engines.</p>
<p>No longer is it possible for a query to see the changes from some transaction T in XtraDB tables without also seeing the changes T makes to PBXT tables.</p>
<p>More information on this can be found in the <a href="http://kb.askmonty.org/en/enhancements-for-start-transaction-with-consistent-snapshot">AskMonty Knowledgebase
</a>.</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31893&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31893&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sun, 05 Feb 2012 01:40:12 +0000</pubDate>
    <dc:creator>SkySQL</dc:creator>
    <category>MariaDB</category>
    <category>MySQL</category>
    <category>Tips and Tricks</category>
    <category>transactions</category>
  </item>

  <item>
    <title>OurSQL Episode 77: Removing Evil Queries, part 1</title>
    <guid isPermaLink="false">1148 at http://technocation.org</guid>
    <link>http://technocation.org/content/oursql-episode-77%3A-removing-evil-queries,-part-1</link>
    <description>Registration for Percona Live: MySQL Conference and Expo is open!  The conference is from Tuesday, April 10th through Thursday, April 12th.  Early bird pricing ends March 12th, 2012.
Use code PL-pod and save 10% off the early bird prices!.
The 1st Latin American Conference about MySQL, NoSQL and Cloud technologies  will be held in Buenos Aires in June. It is called the MariaDB NoSQL &amp;amp; Cloud Latin American Conference and we'll bring you more information as it becomes available.
read more</description>
    <content:encoded><![CDATA[<p>Registration for Percona Live: MySQL Conference and Expo is open!  The conference is from Tuesday, April 10th through Thursday, April 12th.  Early bird pricing ends March 12th, 2012.<br />
<a href="http://perconalive-mysql-conference-expo-2012.eventbrite.com/event/2596588466?discount=PL-pod">Use code PL-pod and save 10% off the early bird prices!</a>.</p>
<p>The 1st Latin American Conference about MySQL, NoSQL and Cloud technologies  will be held in Buenos Aires in June. It is called the <a href="http://mariadbnosqlcloud.com/?conference=mariadb-nosql-cloud-latin-american-conference">MariaDB NoSQL &amp; Cloud Latin American Conference</a> and we'll bring you more information as it becomes available.</p>
<p><a href="http://technocation.org/content/oursql-episode-77%3A-removing-evil-queries,-part-1">read more</a></p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31892&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31892&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Sat, 04 Feb 2012 15:42:15 +0000</pubDate>
    <dc:creator>Technocation</dc:creator>
    <category>Podcasts</category>
    <category>Query Optimization</category>
  </item>

  <item>
    <title>Stripping Comments so Query Cache Works in MariaDB and XtraDB</title>
    <guid isPermaLink="false">http://www.chriscalender.com/?p=813</guid>
    <link>http://www.chriscalender.com/?p=813</link>
    <description>I recently noticed both MariaDB and XtraDB (not MySQL yet) have a (newer) variable query_cache_strip_comments.
This variable is great for those who want to append comments to various queries, but still want the query cache to be able to serve such queries.  Unfortunately, with MySQL, this is not currently possible.
In the past, I wrote a post on using MySQL Proxy which described a technique of monitoring queries through the proxy by appending IP addresses to the queries so one could track where they originated from.  However, one pitfall to that was the MySQL query cache *does not* ignore the comment and treats them all as different queries (see the user comments for further discussion).  (I did subsequently enhance that functionality implementing the SHOW PROXY PROCESSLIST command (often used in the Proxy Admin module), in large part because of this limitation.)
To enable it (in MariaDB 5.3+ and XtraDB), just add query_cache_strip_comments under the [mysqld] section in your my.cnf file and restart mysqld.
Alternatively, you can also set it dynamically:
mysql&gt; set @@global.query_cache_strip_comments=1;
Query OK, 0 rows affected (0.04 sec)

mysql&gt; show global variables like 'query_cache_strip_comments';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| query_cache_strip_comments | ON    |
+----------------------------+-------+

mysql&gt; select version();
+---------------+
| version()     |
+---------------+
| 5.3.3-MariaDB |
+---------------+
Fwiw, from examining the source code, both implementations seemed to differ, but the end result is the same, and it&amp;#8217;s a welcome addition, if you ask me.  </description>
    <content:encoded><![CDATA[<p>I recently noticed both MariaDB and XtraDB (not MySQL yet) have a (newer) variable <i>query_cache_strip_comments</i>.</p>
<p>This variable is great for those who want to append comments to various queries, but still want the query cache to be able to serve such queries.  Unfortunately, with MySQL, this is not currently possible.</p>
<p>In the past, I wrote a <a href="http://www.chriscalender.com/?p=6">post on using MySQL Proxy</a> which described a technique of monitoring queries through the proxy by appending IP addresses to the queries so one could track where they originated from.  However, one pitfall to that was the MySQL query cache *does not* ignore the comment and treats them all as different queries (see the <a href="http://www.chriscalender.com/?p=6#comments">user comments</a> for further discussion).  (I did subsequently enhance that functionality implementing the <a href="http://www.chriscalender.com/?p=41">SHOW PROXY PROCESSLIST</a> command (often used in the <a href="http://dev.mysql.com/doc/refman/5.5/en/mysql-proxy-using-admin.html">Proxy Admin module</a>), in large part because of this limitation.)</p>
<p>To enable it (in MariaDB 5.3+ and XtraDB), just add <i>query_cache_strip_comments</i> under the <i>[mysqld]</i> section in your my.cnf file and restart mysqld.</p>
<p>Alternatively, you can also set it dynamically:</p>
<pre>mysql> set @@global.query_cache_strip_comments=1;
Query OK, 0 rows affected (0.04 sec)

mysql> show global variables like 'query_cache_strip_comments';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| query_cache_strip_comments | ON    |
+----------------------------+-------+

mysql> select version();
+---------------+
| version()     |
+---------------+
| 5.3.3-MariaDB |
+---------------+</pre>
<p>Fwiw, from examining the source code, both implementations seemed to differ, but the end result is the same, and it&#8217;s a welcome addition, if you ask me. <img src="http://www.chriscalender.com/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31890&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31890&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Fri, 03 Feb 2012 22:16:54 +0000</pubDate>
    <dc:creator>Chris Calender</dc:creator>
    <category>MySQL</category>
    <category>mariadb comments</category>
    <category>mariadb query cache</category>
    <category>mysql comments</category>
    <category>mysql query cache</category>
    <category>query cache</category>
    <category>query cache comments</category>
    <category>query cache skip comments</category>
    <category>query cache strip comments</category>
    <category>query_cache_strip_comments</category>
    <category>skip comments</category>
    <category>strip comments</category>
    <category>xtradb comments</category>
    <category>xtradb query cache</category>
  </item>

  <item>
    <title>Forums.MySQL.Com as a gym for mental exercise</title>
    <guid isPermaLink="false">http://opensourcedba.wordpress.com/?p=566</guid>
    <link>http://opensourcedba.wordpress.com/2012/02/03/forums-mysql-com-as-a-gym-for-mental-exercise/</link>
    <description>The MySQL Forums seem to be have been around forever.  There are groups for announcements, performance, InnoDB, Cluster, Replication, Certification, Events, questions in German, partitioning, and just under a hundred MySQL related subjects in total.  Most folks in the MySQLverse seem to regularly lurk in one or more of the forums.  There area great source of information and sometimes humor.  But are you using the forums to help build your MySQL mental muscle? Ask yourself how would you solve the problem or how would you guide a junior DBA or developer to fix an issue posted in a forum.
Try reading the groups that are not in your regular reading list. Is there a question in there you can not answer even after a peek at the documentation?  
After running MySQL for a few years, it is easy to skip over the problems of novices found in the Newbie section. But like the old story of the Emperor&amp;#8217;s New Clothes, a new set of eyes can point out things we do not notice.  Recently someone in the Newbie group wanted to set up a round robin for inserts over eight disks in an attempt to get 8x performance gain.  Hmmm, if that did scale would it scale linearly(1) or close to it?  Too bad I do not have the hardware or spare cycles to give it a try.
Or question on how to remove a &amp;#8216;width=xxx&amp;#8217; pattern from a text field.  Hmm, the old GIGO rules would dictate that some sort of ETL tool or script remove the unwanted chaff before it goes into the database.  Do you use regular expressions in a PHP, Perl, or Java hack? Could a column oriented editor let you WYSIWYG the data?  Maybe a trigger on insert that culls the unwanted width data?  Hey, does your data have anything hidden in a text filed that should not be there and how best to get rid of it?
So read through a few forums and use them to exercise you mind.  And if you see something in a question that you can answer, please do so.

 Nothing scales linearly that you need to scale linearly. At least not on your budget and or schedule. 

         </description>
    <content:encoded><![CDATA[<p>The <a href="http://forums.mysql.com" target="_blank">MySQL Forums</a> seem to be have been around forever.  There are groups for announcements, performance, InnoDB, Cluster, Replication, Certification, Events, questions in German, partitioning, and just under a hundred MySQL related subjects in total.  Most folks in the MySQLverse seem to regularly lurk in one or more of the forums.  There area great source of information and sometimes humor.  But are you using the forums to help build your MySQL mental muscle? Ask yourself how would you solve the problem or how would you guide a junior DBA or developer to fix an issue posted in a forum.</p>
<p>Try reading the groups that are not in your regular reading list. Is there a question in there you can not answer even after a peek at the documentation?  </p>
<p>After running MySQL for a few years, it is easy to skip over the problems of novices found in the <a href="http://forums.mysql.com/list.php?10" target="_blank">Newbie</a> section. But like the old story of the Emperor&#8217;s New Clothes, a new set of eyes can point out things we do not notice.  Recently someone in the Newbie group wanted to set up a <a href="http://forums.mysql.com/read.php?10,513522,513522#msg-513522" target="_blank">round robin for inserts</a> over eight disks in an attempt to get 8x performance gain.  Hmmm, if that did scale would it scale linearly(1) or close to it?  Too bad I do not have the hardware or spare cycles to give it a try.</p>
<p>Or question on how to remove a <a href="http://forums.mysql.com/read.php?10,513208" target="_blank">&#8216;width=xxx&#8217; pattern</a> from a text field.  Hmm, the old GIGO rules would dictate that some sort of ETL tool or script remove the unwanted chaff before it goes <em>into</em> the database.  Do you use regular expressions in a PHP, Perl, or Java hack? Could a column oriented editor let you WYSIWYG the data?  Maybe a trigger on insert that culls the unwanted width data?  Hey, does your data have anything hidden in a text filed that should not be there and how best to get rid of it?</p>
<p>So read through a few forums and use them to exercise you mind.  And if you see something in a question that you can answer, please do so.</p>
<ol>
<li> Nothing scales linearly that you <em>need</em> to scale linearly. At least not on <em>your</em> budget and or schedule. </li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/opensourcedba.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/opensourcedba.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/opensourcedba.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/opensourcedba.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/opensourcedba.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/opensourcedba.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/opensourcedba.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/opensourcedba.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/opensourcedba.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/opensourcedba.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/opensourcedba.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/opensourcedba.wordpress.com/566/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/opensourcedba.wordpress.com/566/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/opensourcedba.wordpress.com/566/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=opensourcedba.wordpress.com&amp;blog=15386988&amp;post=566&amp;subd=opensourcedba&amp;ref=&amp;feed=1" width="1" height="1" /><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31889&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31889&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Fri, 03 Feb 2012 21:21:40 +0000</pubDate>
    <dc:creator>Dave Stokes</dc:creator>
    <category>MySQL</category>
  </item>

  <item>
    <title>Liveblogging:  Performance is Overrated, by Mark Callaghan</title>
    <guid isPermaLink="false">622 at http://www.sheeri.com</guid>
    <link>http://www.sheeri.com/content/liveblogging-performance-overrated-mark-ca</link>
    <description>Mark Callaghan speaks at the New England Database Summit about how data manageability is more important than performance.
Peak performance is thrown out, 95%-98% is important.
Variance shouldn't be large.
Data manageability is rate of interrupts per server for the operations team. Rate of server growth much bigger than rate of new hires for the systems teams.  A lot of the db team is from University of Wisconsin-Madison!
Why MySQL? Because it was there when he came.  Mark and ops/engineering peers made it scale 10x. He likes MySQL for OLTP, InnoDB is &quot;An amazing piece of software.&quot;
They can get 500,000 qps using a cached workload, which is on par with memcached.
What Facebook really does is OLTP for the social graph.  The workload is secondary indexes, index-only queries, small joins but most queries use one table, multi-row transactions, majority of workload does not need SQL/optimizer, they do a physical and logical backup.
Most of this does not require SQL [blogger's note - they built Cassandra].  Why is the grass greener on the other side? automated replacement of failed nodes, less downtime on schema changes and/or fewer schema changes, multi-master, better compressions, etc.
Circa 2010, 13 million queries per second, 4 ms reads, 5 ms writes, 38GB peak network per second, etc.
Why so many servers?  Big data high queries per seconds. They add servers to add IOPS, so they're interested in compression and flash, so they can get more IOPS.  If they do remain on disk, write-optimized dbs are interesting too.  About 10 people on the db team, which is very small for a company that size.
How to scale MySQL? Fix stalls to make use of capacity, improve efficiency to use fewer queries/fewer data. Fixing stalls doesn't make MySQL faster, makes it less slow.  
[blogger's note - I stopped taking notes here because this is a rehash of the &quot;How Facebook Does MySQL&quot; talk that has been done over and over...]
[restarted when he started talking about data manageability again]
How Facebook got it's data manageable.
pylander- sheds load during a query pileup - kills dup queries, limits # of queries from some specific accounts -- take off on Highlander:  there can be only one.
dogpile - collects data during a query pileup - gets perf counters and list of running queries, generates HTML page with interesting results.  
Online schema change tool, for frequent schema changes, especially adding indexes.  This briefly locks the table, to setup triggers to track changes, copy data to a new table with the new desired schema, replay changes to the new table, then briefly lock the table again as you rename the new table as the target table.
Manageability is a work in progress -- working on:
- make InnoDB compression work for OLTP
- Faker - tool for prefetching for replication slaves - replay workload is: page read, do some modification, page write.  bottleneck might be disk reads, work is done by a single thread, transactions on master are concurrent.  Faker has multiple threads replay transactions in &quot;fake-changes&quot; mode, no undo, no rollback, read-only, fetches into the buffer pool the pages needed for that transaction.  Captures about 70% of disk reads for replication, they're working on fixes to get it up to 80-90%.
- auto replacement - replace failed and unhealthy MySQL servers.
- Auto resharding - sharding is easy, re-sharding is hard.
open issues in manageability:
diagnose why one host is slow, others are not.
....and some more.</description>
    <content:encoded><![CDATA[<p>Mark Callaghan speaks at the <a href="http://db.csail.mit.edu/nedbday12/program.html">New England Database Summit</a> about how data manageability is more important than performance.</p>
<p>Peak performance is thrown out, 95%-98% is important.</p>
<p>Variance shouldn't be large.</p>
<p>Data manageability is rate of interrupts per server for the operations team. Rate of server growth much bigger than rate of new hires for the systems teams.  A lot of the db team is from University of Wisconsin-Madison!</p>
<p>Why MySQL? Because it was there when he came.  Mark and ops/engineering peers made it scale 10x. He likes MySQL for OLTP, InnoDB is "An amazing piece of software."</p>
<p>They can get 500,000 qps using a cached workload, which is on par with memcached.</p>
<p>What Facebook really does is OLTP for the social graph.  The workload is secondary indexes, index-only queries, small joins but most queries use one table, multi-row transactions, majority of workload does not need SQL/optimizer, they do a physical and logical backup.</p>
<p>Most of this does not require SQL [blogger's note - they built Cassandra].  Why is the grass greener on the other side? automated replacement of failed nodes, less downtime on schema changes and/or fewer schema changes, multi-master, better compressions, etc.</p>
<p>Circa 2010, 13 million queries per second, 4 ms reads, 5 ms writes, 38GB peak network per second, etc.</p>
<p>Why so many servers?  Big data high queries per seconds. They add servers to add IOPS, so they're interested in compression and flash, so they can get more IOPS.  If they do remain on disk, write-optimized dbs are interesting too.  About 10 people on the db team, which is very small for a company that size.</p>
<p>How to scale MySQL? Fix stalls to make use of capacity, improve efficiency to use fewer queries/fewer data. Fixing stalls doesn't make MySQL faster, makes it less slow.  </p>
<p>[blogger's note - I stopped taking notes here because this is a rehash of the "How Facebook Does MySQL" talk that has been done over and over...]</p>
<p>[restarted when he started talking about data manageability again]</p>
<p>How Facebook got it's data manageable.</p>
<p>pylander- sheds load during a query pileup - kills dup queries, limits # of queries from some specific accounts -- take off on Highlander:  there can be only one.</p>
<p>dogpile - collects data during a query pileup - gets perf counters and list of running queries, generates HTML page with interesting results.  </p>
<p>Online schema change tool, for frequent schema changes, especially adding indexes.  This briefly locks the table, to setup triggers to track changes, copy data to a new table with the new desired schema, replay changes to the new table, then briefly lock the table again as you rename the new table as the target table.</p>
<p>Manageability is a work in progress -- working on:<br />
- make InnoDB compression work for OLTP<br />
- Faker - tool for prefetching for replication slaves - replay workload is: page read, do some modification, page write.  bottleneck might be disk reads, work is done by a single thread, transactions on master are concurrent.  Faker has multiple threads replay transactions in "fake-changes" mode, no undo, no rollback, read-only, fetches into the buffer pool the pages needed for that transaction.  Captures about 70% of disk reads for replication, they're working on fixes to get it up to 80-90%.<br />
- auto replacement - replace failed and unhealthy MySQL servers.<br />
- Auto resharding - sharding is easy, re-sharding is hard.</p>
<p>open issues in manageability:<br />
diagnose why one host is slow, others are not.<br />
....and some more.</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31888&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31888&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Fri, 03 Feb 2012 18:42:48 +0000</pubDate>
    <dc:creator>Sheeri K. Cabral</dc:creator>
  </item>

  <item>
    <title>Help Set the MariaDB 5.6 Roadmap with SkySQL and Monty Program</title>
    <guid isPermaLink="false">814 at http://www.skysql.com</guid>
    <link>http://www.skysql.com/blogs/chriscalender/help-set-mariadb-56-roadmap-skysql-and-monty-program</link>
    <description> Part of every SkySQL subscription is paid to Monty Program to fund server development and improved functionality in MariaDB® (which is then sent upstream for inclusion in the MySQL® Server).
Thus, we'd like to know what you'd like to see in the upcoming releases of the server.
Please take a couple seconds (literally) and let your vote be heard:
http://www.skysql.com/content/new-server-functionality-have-your-say
We thank you and look forward to hearing your thoughts and ideas! </description>
    <content:encoded><![CDATA[<p> Part of every SkySQL subscription is paid to Monty Program to fund server development and improved functionality in MariaDB® (which is then sent upstream for inclusion in the MySQL® Server).</p>
<p>Thus, we'd like to know what you'd like to see in the upcoming releases of the server.</p>
<p>Please take a couple seconds (literally) and let your vote be heard:</p>
<p><a href="http://www.skysql.com/content/new-server-functionality-have-your-say">http://www.skysql.com/content/new-server-functionality-have-your-say</a></p>
<p>We thank you and look forward to hearing your thoughts and ideas! </p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31887&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31887&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Fri, 03 Feb 2012 17:45:48 +0000</pubDate>
    <dc:creator>SkySQL</dc:creator>
    <category>MariaDB</category>
    <category>mariadb 5.6</category>
    <category>mariadb roadmap</category>
    <category>monty program</category>
    <category>SkySQL</category>
    <category>SkySQL</category>
    <category>skysql roadmap</category>
  </item>

  <item>
    <title>RMOUG Training Days 2012</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-3812360659149323517.post-4283927102006869754</guid>
    <link>http://sqlhjalp.blogspot.com/2012/02/rmoug-training-days-2012.html</link>
    <description>The Rocky Mountain Oracle User Group ( RMOUG ) Training days are almost here.&amp;nbsp;&amp;nbsp; This year they are going to have a MySQL Oracle ACE Director, Ronald Bradford talk on MySQL Security Essentials.&amp;nbsp; I will also be having a MySQL Crash Course . I was going to talk about replication but after attending the IOUG User summit and the seeing the vast interest in MySQL from Oracle users, I decided to take a step back and do this talk 1st. I have had a similar talk at a RMOUG meetup hands on labs in the past, but it has been updated.Alex Gorbachev of Pythian also has a session, Monitoring MySQL with Oracle Cloud Control 12c. Look forward to seeing everyone and I think great things are on the horizon with&amp;nbsp; RMOUG and MySQL.</description>
    <content:encoded><![CDATA[The Rocky Mountain Oracle User Group ( <a href="http://www.rmoug.org/">RMOUG</a> ) <a href="http://www.teamycc.com/RMOUG_2012_Conference/index.html">Training days</a> are almost here.&nbsp;&nbsp; This year they are going to have a MySQL Oracle ACE Director, <a href="http://apex.oracle.com/pls/otn/f?p=19297:4:3039779342908998::NO:4:P4_ID:1820">Ronald Bradford</a> talk on <a href="http://www.technicalconferencesolutions.com/pls/caat/caat_abstract_reports.display_presenter_abstract?conference_id=99&amp;presenter_id=443&amp;abstract_id=294993">MySQL Security Essentials.&nbsp; </a>I will also be having a <a href="http://www.technicalconferencesolutions.com/pls/caat/caat_abstract_reports.display_presenter_abstract?conference_id=99&amp;presenter_id=470&amp;abstract_id=301585">MySQL Crash Course </a>. I was going to talk about replication but after attending the IOUG User summit and the seeing the vast interest in MySQL from Oracle users, I decided to take a step back and do this talk 1st. I have had a similar talk at a RMOUG meetup hands on labs in the past, but it has been updated.<br /><br />Alex Gorbachev of Pythian also has a session, <a href="http://www.technicalconferencesolutions.com/pls/caat/caat_abstract_reports.display_presenter_abstract?conference_id=99&amp;presenter_id=86&amp;abstract_id=295470">Monitoring MySQL with Oracle Cloud Control 12c</a>. <br /><br />Look forward to seeing everyone and I think great things are on the horizon with&nbsp; RMOUG and MySQL.<div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/3812360659149323517-4283927102006869754?l=sqlhjalp.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31886&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31886&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Fri, 03 Feb 2012 17:45:00 +0000</pubDate>
    <dc:creator>Keith Larson</dc:creator>
    <category>mysql RMOUG</category>
  </item>

  <item>
    <title>Game Over for NoSQL? Discussing Databases in Online Social Gaming</title>
    <guid isPermaLink="false">tag:blogger.com,1999:blog-2501729684197293226.post-8401065147533352710</guid>
    <link>http://severalnines.blogspot.com/2012/02/game-over-for-nosql-discussing.html</link>
    <description>According to VentureBeat*, games companies raised a record-breaking $1.54 billion in funding last year and social gaming accounted for over half of that. No wonder everyone wants to have a piece of that pie!With the arrival of social network platforms, the gaming industry has seen an explosion in casual and social gaming. The social gamer represents a massive audience that cuts across all age, gender and demographic boundaries. Online social games are some of the most demanding applications in the world, with millions of users, stringent response times, complex simulation models and billing requirements. Games take years to develop for a reason ...Online social games are data-driven applications, and databases are central to these applications. However, there is no single database architecture that will fit the different types of data that the application needs to store. A data management architecture needs to account for the diversity of data, and optimize for some of the differences in the datatypes. E.g. it is ok to lose leaderboard data during a game as it can be reconstituted, whereas billing data needs to be 100% ACID. Therefore, with the generous contribution of Joshua Butcher, we just published a whitepaper that discusses the different types of data stored for various functions in social gaming. We will see that there cannot be a one-size-fits-all approach to database architecture, and suggest a sharding strategy based on schema partitioning. With our new whitepaper, we’re also starting a discussion on what the database of choice might be for anyone wanting to develop online social games. With so many NoSQL databases now available, one might wonder why MySQL would be a good database choice for the gaming industry. To find out, download our whitepaper today! If you have any questions or comments, feel free to reply to this blog below or reach out to us on Facebook, LinkedIn, Xing, Twitter or directly via these contact details.* http://venturebeat.com/2012/01/06/deanbeat-game-companies-raised-a-record-breaking-1-55b-in-2011/ </description>
    <content:encoded><![CDATA[<div dir="ltr" trbidi="on">According to VentureBeat*, games companies raised a record-breaking $1.54 billion in funding last year and social gaming accounted for over half of that. No wonder everyone wants to have a piece of that pie!<br /><br />With the arrival of social network platforms, the gaming industry has seen an explosion in casual and social gaming. The social gamer represents a massive audience that cuts across all age, gender and demographic boundaries. Online social games are some of the most demanding applications in the world, with millions of users, stringent response times, complex simulation models and billing requirements. Games take years to develop for a reason ...<br /><br />Online social games are data-driven applications, and databases are central to these applications. However, there is no single database architecture that will fit the different types of data that the application needs to store. A data management architecture needs to account for the diversity of data, and optimize for some of the differences in the datatypes. E.g. it is ok to lose leaderboard data during a game as it can be reconstituted, whereas billing data needs to be 100% ACID. <br /><br />Therefore, with the <a href="http://www.severalnines.com/resources/white-papers" target="_blank">generous contribution of Joshua Butcher</a>, we just published a <a href="http://www.severalnines.com/resources/white-papers" target="_blank">whitepaper</a> that discusses the different types of data stored for various functions in social gaming. We will see that there cannot be a one-size-fits-all approach to database architecture, and suggest a sharding strategy based on schema partitioning. <br /><br />With our new <a href="http://www.severalnines.com/resources/white-papers" target="_blank">whitepaper</a>, we’re also starting a discussion on what the database of choice might be for anyone wanting to develop online social games. With so many NoSQL databases now available, one might wonder why MySQL would be a good database choice for the gaming industry. To find out, <a href="http://www.severalnines.com/resources/white-papers" target="_blank">download our whitepaper</a> today! <br /><br />If you have any questions or comments, feel free to reply to this blog below or reach out to us on <a href="http://www.facebook.com/pages/Severalnines/104774439598301" target="_blank">Facebook</a>, <a href="http://www.linkedin.com/company/severalnines" target="_blank">LinkedIn</a>, <a href="https://www.xing.com/companies/severalnines" target="_blank">Xing</a>, <a href="http://twitter.com/#!/severalnines" target="_blank">Twitter</a> or directly via these <a href="http://www.severalnines.com/contact-us" target="_blank">contact details</a>.<br /><br />* <span>http://venturebeat.com/2012/01/06/deanbeat-game-companies-raised-a-record-breaking-1-55b-in-2011/</span> </div><div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/2501729684197293226-8401065147533352710?l=severalnines.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31885&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31885&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
    <pubDate>Fri, 03 Feb 2012 16:08:00 +0000</pubDate>
    <dc:creator>Vinay Joosery</dc:creator>
    <category>MySQL</category>
    <category>nosql</category>
    <category>whitepaper</category>
    <category>gaming</category>
  </item>

</channel>
</rss>

