<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Developer Day &#187; MySQL</title>
	<atom:link href="http://www.thedeveloperday.com/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thedeveloperday.com</link>
	<description>Staying Curious</description>
	<lastBuildDate>Fri, 03 Feb 2012 12:03:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Optimizing MySQL on Ubuntu 10.10 Maverick</title>
		<link>http://www.thedeveloperday.com/optimizing-mysql-on-ubuntu-10-10-maverick/</link>
		<comments>http://www.thedeveloperday.com/optimizing-mysql-on-ubuntu-10-10-maverick/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 02:06:37 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[MyISAM]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Tuning]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/?p=722</guid>
		<description><![CDATA[Since Ubuntu 9.04 Jaunty Jackalope Ubuntu ships with EXT4 as the default file system. Surprisingly it makes MySQL writes extremely slow. This post is targeted to developers who work on Linux using MySQL and who would like to optimize MySQL performance. Disk Performance Tuning First start by tuning your disk performance. To do that you&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>Since <strong>Ubuntu 9.04 Jaunty Jackalope</strong> Ubuntu ships with EXT4 as the default file system. Surprisingly it makes <strong>MySQL</strong> writes extremely slow. This post is targeted to developers who work on <strong>Linux</strong> using MySQL and who would like to optimize MySQL performance.</p>
<h2>Disk Performance Tuning</h2>
<p>First start by tuning your <strong>disk performance</strong>. To do that you&#8217;ll have to sacrifice <strong>data consistency</strong> over data write speed. First start by enabling <strong>journal_data_writeback</strong> on your partition. This will allow to write to disk before updating the EXT4 journal. If your box crashes before updating the journal you might loose new data or some deleted data might reappear.</p>
<blockquote style="background: #444; color: #fff; padding-left: 2px;"><p>
sudo tune2fs -o journal_data_writeback /dev/sda1 (use the right partition)
</p></blockquote>
<p>Next step is editing your <strong>/etc/fstab</strong> to change ext4 mounting options. My fstab file looks something like this:</p>
<blockquote style="background: #444; color: #fff; padding-left: 2px;"><p>
UUID=irrelevant / ext4 errors=remount-ro,noatime,nodiratime,data=writeback,barrier=0,nobh,commit=100,nouser_xattr 0 1
</p></blockquote>
<p>There&#8217;s a few non default options added to improve write performance over consistency. Journal data writeback is enabled by <strong>data=writeback</strong>. The main option which is slowing down MySQL is <strong>barrier=0</strong>. You could actually change this single option and MySQL write performance would increase dramatically. Disabling this option makes your <strong>new</strong> data less safe when a system crash happens. Option <strong>nobh</strong> tries to avoid associating buffer heads and offers a minor performance improvement. Another option <strong>commit=100</strong> says that all your updates are written to disk every 100 seconds. The default is 5 seconds. If your machine crashes you&#8217;re likely to loose 100 seconds of updates. Large commit values like 100 provide big performance improvements. And the last option <strong>nouser_xattr</strong> disables extended options on your filesystem and provides a minor <strong>performance boost</strong>.</p>
<p>Double check your /etc/fstab syntax and reboot.</p>
<h2>Tuning MySQL configuration</h2>
<p>MySQL configuration settings depend on what database engines you&#8217;re using. The most common ones are <strong>MyISAM</strong> and <strong>InnoDB</strong>. I will assume that you use both.</p>
<p><strong>Warning!</strong> Some of the configuration changes will or might make your database inaccessible. Therefore backup all your databases by dumping them to SQL to a safe location. Make sure to include triggers and stored procedures. Double check that you will be able to reimport your backups and only then proceed further. Some options will make your InnoDB database stop working. I&#8217;ll mark those. Also backup your MySQL configuration. Just in case.</p>
<p>MySQL settings depend on how much memory you have. I will assume a normal working station will have 4GB of RAM. Open your MySQL configuration file which on Ubuntu is located at /etc/mysql/my.cnf and set the following options.</p>
<p><em>transaction-isolation = READ-COMMITTED</em></p>
<p>As a developer you will probably not have transactions running in parallel. If you don&#8217;t care about transactions and still use InnoDB set the isolation level to READ-COMMITED. This will make your transactions only see committed data but won&#8217;t prevent phantom rows. Setting it to READ-COMMITED will also improve performance.</p>
<p><em>key_buffer = 512M</em></p>
<p>By far the most important option for MyISAM. MyISAM indexes are cached using in the key buffer. It&#8217;s usually a good bet to set it from 25% to 40% of memory available. As a developer you might not need that much but do not leave it at a default.</p>
<p><em>query_cache_size  = 256M</em></p>
<p>Caches query results. Especially useful if your applications don&#8217;t have caching.</p>
<p><em>innodb_buffer_pool_size = 1024M</em> (<strong>requires a backup and an import</strong>)</p>
<p>InnoDB buffer pool size is the most important option for InnoDB. If your whole database is InnoDB you can try and fit your whole database in memory. If you don&#8217;t have that much memory you can generally set 70% &#8211; 80% of memory available. On a development box you will probably want to have extra RAM for things like Gnome or your IDE.</p>
<p><em>innodb_additional_mem_pool_size = 32M</em><br />
<em>innodb_log_buffer_size = 4M</em><br />
<em>innodb_log_file_size = 128M</em></p>
<p><em>innodb_flush_log_at_trx_commit	= 2</em></p>
<p>This option tells InnoDB to only flush log data every two seconds. On development machines you can set this even higher because the only risk is losing transactions during a system crash. If your development machine crashes you probably won&#8217;t care about lost transactions. Experiment!</p>
<p><em>innodb_flush_method	= O_DIRECT</em></p>
<p>This options tells InnoDB to skip filesystem cache and write straight to disk since InnoDB already has it&#8217;s own cache &#8211; the buffer pool. You save yourself some RAM.</p>
<p><em>table_cache  = 1024</em></p>
<p>Caches open tables. Might not be very useful on a single dev box but useful in general on any database server.</p>
<p><em>myisam_use_mmap = 1</em></p>
<p><a href="http://www.mysqlperformanceblog.com/2006/05/26/myisam-mmap-feature-51/">Mmap is a new MyISAM feature</a> available with MySQL 5.1. Should improve MyISAM write/read performance ~6%.</p>
<p>To sum up all the settings on a 4GB work environment:</p>
<blockquote style="background: #444; color: #fff; padding-left: 2px;"><p>
<em>transaction-isolation = READ-COMMITTED</em><br />
<em>key_buffer = 512M</em><br />
<em>query_cache_size  = 256M</em><br />
<em>innodb_buffer_pool_size = 1024M</em><br />
<em>innodb_additional_mem_pool_size = 32M</em><br />
<em>innodb_log_buffer_size = 4M</em><br />
<em>innodb_log_file_size = 128M</em><br />
<em>innodb_flush_log_at_trx_commit	= 2</em><br />
<em>innodb_flush_method	= O_DIRECT</em><br />
<em>table_cache  = 1024</em><br />
<em>myisam_use_mmap = 1</em>
</p></blockquote>
<h2>Buy an SSD disk</h2>
<p>This is by far the best upgrade you can do. <strong>SSD</strong> does not have any moving mechanical parts therefore doing a random read or write is as fast as doing a sequential read or write. My work laptop <strong>Lenovo T400</strong> can push 3.5 MB with <strong>random writes</strong>, 35 MB with <strong>sequential writes</strong>, 2.6MB with <strong>random reads</strong> and 38MB with <strong>sequential reads</strong> per second. The same test with an SSD disk can push 220MB <strong>random writes</strong> and 330MB <strong>random reads</strong> with similar numbers for sequential reads and writes. So for IO access you can expect 10 &#8211; 100 times performance difference.</p>
<h2>Summary</h2>
<p>It&#8217;s easy to squeeze some extra performance out of your development environment by sacrificing data safety. In my case these changes made our database integration test suites run a lot quicker. So far I haven&#8217;t experienced any downsides from the above settings though you have to accept that one day it most likely will. Most of the database settings I&#8217;ve mentioned are those considered most when tuning production database servers. My final advice is take everything you read here with a pinch of salt as I am by far not an expert in these matters and everything listed here is gathered from various resources online.</p>
<h2>Resources</h2>
<p><a href="http://www.mysqlperformanceblog.com/2007/11/01/innodb-performance-optimization-basics/">InnoDB performance optimization basics</a><br />
<a href="http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/">Tunning MySQL server after installation</a><br />
<a href="http://www.mysqlperformanceblog.com/2006/05/26/myisam-mmap-feature-51/">MyISAM MMAP feature</a><br />
<a href="http://dev.mysql.com/doc/refman/5.1/en/set-transaction.html">MySQL transaction isolation levels</a><br />
<a href="http://www.mysqlperformanceblog.com/2010/02/28/why-you-should-ignore-mysqls-key-cache-hit-ratio/">Why you should ignore key cache hit ratio</a><br />
<a href="http://pclinuxos2007.blogspot.com/2009/06/tweaks-to-boot-ext4-filesystem.html">Tweaks to boost EXT4 performance</a><br />
|<a href="http://www.tomshardware.com/reviews/samsung-470-sandforce-best-ssd,2783-14.html">SSD Benchmarks</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/optimizing-mysql-on-ubuntu-10-10-maverick/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PyDumpy &#8211; Partial sorted MySQL database dumps</title>
		<link>http://www.thedeveloperday.com/pydumpy-partial-sorted-mysql-database-dumps/</link>
		<comments>http://www.thedeveloperday.com/pydumpy-partial-sorted-mysql-database-dumps/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 17:37:28 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[dump]]></category>
		<category><![CDATA[partial]]></category>
		<category><![CDATA[pydumpy]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/?p=210</guid>
		<description><![CDATA[PyDumpy is a simple Python utility that might be helpful for developers struggling to get fast and partial database snapshots from production databases. It does it&#8217;s job by checking the database information schema to find out the approximate rows count available in each table and limits the table if needed to avoid dumping too much [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.google.com/p/pydumpy/">PyDumpy</a> is a simple <strong>Python</strong> utility that might be helpful for developers struggling to get fast and <strong>partial database snapshots</strong> from production databases. It does it&#8217;s job by checking the database <strong>information schema</strong> to find out the <strong>approximate rows count</strong> available in each table and limits the table if needed to avoid dumping too much data as some databases may have hundreds of gigabytes of data. It then passes all the limits information it gathers to <strong>mysqldump</strong> a tool created by MySQL to do the actual dumping.</p>
<p>Python does not have a built in package to connect to MySQL as for example PHP does and therefore PyDumpy relies on <a href="http://sourceforge.net/projects/mysql-python/">MySQL for Python</a> package to work. PyDumpy also relies on mysqladmin to do the actual dumping.</p>
<p>PyDumpy is very simple to use. For example to dump a maximum of 50 000 rows from each table type:</p>
<p><strong>./pydumpy.py -H host -u user -p pass -n dbname -limit=50000</strong></p>
<p>PyDumpy also allows to <strong>specify row limits</strong> and sorting preferences for each table specifically:</p>
<p><strong>./pydumpy.py -H host -u user -p pass -n dbname -limit=50000 &#8211;ask-to-limit &#8211;ask-to-sort</strong></p>
<p>If you find this tool useful please feel free to provide feedback by leaving a comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/pydumpy-partial-sorted-mysql-database-dumps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building Drizzle on Cygwin or getting as far as possible</title>
		<link>http://www.thedeveloperday.com/building-drizzle-on-cygwin-or-getting-as-far-as-possible/</link>
		<comments>http://www.thedeveloperday.com/building-drizzle-on-cygwin-or-getting-as-far-as-possible/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 17:52:19 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[cygwin]]></category>
		<category><![CDATA[drizzle]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/?p=83</guid>
		<description><![CDATA[It&#8217;s been quite a while i have this sort of desire to offer my help for some opensource project i like. One of my most favorite candidates is Drizzle. I should say my knowledge of C is really poor and there&#8217;s a whole crazy world out there full of C applications and build tools. Nevertheless [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been quite a while i have this sort of desire to offer my help for some opensource project i like. One of my most favorite candidates is <a title="Drizzle" href="https://launchpad.net/drizzle">Drizzle</a>. I should say my knowledge of C is really poor and there&#8217;s a whole crazy world out there full of C applications and build tools.</p>
<p>Nevertheless i decided to atleast try and see if i would be able to build it and maybe change something, run some tests. As I am a Windows user i found out the only way for me to build Drizzle is through <a title="cygwin" href="http://www.cygwin.com/">Cygwin</a>. I started with installing the latest stable version of Cygwin 1.5.25-15. I must say that their installer is really nice but i would offer to add a package search feature. Might help when you want to install numerous packages.</p>
<p>So what&#8217;s next? I found this wiki page about <a title="Compiling drizzle" href="http://drizzle.org/wiki/Compiling">building drizzle</a> and figured first thing i should do is get <a href="http://bazaar-vcs.org/">Bazaar</a>. I installed the following packages using Cygwin installer:</p>
<ul>
<li>bison</li>
<li>bzr</li>
<li>gettext</li>
<li>readline</li>
<li>libpcre0</li>
<li>pcre</li>
<li>pcre-devel</li>
<li>libtoolize</li>
<li>gperf</li>
<li>e2fsprogs</li>
</ul>
<p>And then went on to get the Drizzle sources:</p>
<blockquote><p>mkdir ~/bzrwork<br />
bzr init-repo ~/bzrwork<br />
cd ~/bzrwork<br />
bzr branch lp:drizzle</p></blockquote>
<p>Now onto building. Here&#8217;s where all the fun begins.</p>
<p>Drizzle requires a tool named libevent which is not available through Cygwin installer and you must build it yourself. And still you can&#8217;t build libevent with the latest version of Cygwin because it lacks certain functionality. After some googling i found a patched <a title="ipv6 cygwin" href="http://monkeymail.org/archives/libevent-users/2009-January/001488.html">IPV6 version of Cygwin</a> that fixes these issues. Added the #define EAI_SYSTEM 11 to http.c and finally were able to ./configure &amp;&amp; make &amp;&amp; make install libevent.</p>
<p>You also need <a title="protobuf" href="http://code.google.com/p/protobuf/">protobuf</a> installed. And there&#8217;s no package for that either. Actually this protobuf is quite nice stuff. Protocol Buffers are a way of encoding structured data in an efficient yet extensible format. Google uses Protocol Buffers for almost all of its internal RPC protocols and file formats.</p>
<p>Now that we seem to have all the packages installed we can start building drizzle. It should be as easy as this:</p>
<blockquote><p>cd drizzle<br />
./config/autorun.sh<br />
./configure<br />
make<br />
make install</p></blockquote>
<p><strong>It is not.</strong> First to be able to compile Drizzle you need to have gcc4. And even if you do, ./configure must need to know where it is. So we need to use additional flags CC and CXX. Then you need to show ./configure where libevent is installed by adding a flag &#8211;with-libevent-prefix=/usr/local or any other place you have it in. I also found a really ugly problem with warnings. I wasn&#8217;t able to compile drizzle because it stopped somwhere in gnulib complaining about some warnings that were treated as errors. Funny enough there is a sarcastic option to disable these warnings: &#8211;disable-pedantic-warnings. You also probably want to install Drizzle somwhere else than usual by using:  &#8211;prefix=/some/deploy/dir.</p>
<p>In the end you come up with something like this: </p>
<p>./configure CC=gcc-4 CXX=g++-4 &#8211;with-libevent-prefix=/usr/local &#8211;disable-pedantic-warnings &#8211;prefix=/some/deploy/dir</p>
<p>That&#8217;s how far i&#8217;ve got with it. Though i&#8217;m still not able to compile it.  I get an error somwhere in mystrings library that is related to some datatype casting issues. Hopefully i&#8217;ll be able to hack through this <img src='http://www.thedeveloperday.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/building-drizzle-on-cygwin-or-getting-as-far-as-possible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Funny MySQL command line option</title>
		<link>http://www.thedeveloperday.com/funny-mysql-command-line-option/</link>
		<comments>http://www.thedeveloperday.com/funny-mysql-command-line-option/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 12:22:20 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[cli]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/funny-mysql-command-line-option/</guid>
		<description><![CDATA[MySQL has atleast one funny named command line option that made me chuckle. The option is named &#8220;&#8211;i-am-a-dummy&#8221;. From the MySQL manual: Allow only those UPDATE and DELETE statements that specify which rows to modify by using key values. If you have set this option in an option file, you can override it by using &#8211;safe-updates on [...]]]></description>
			<content:encoded><![CDATA[<p>MySQL has atleast one funny named command line option that made me chuckle. The option is named &#8220;&#8211;i-am-a-dummy&#8221;. From the <a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.html" title="mysql command line options">MySQL manual</a>:</p>
<blockquote><p>Allow only those UPDATE and DELETE statements that specify which rows to modify by using key values. If you have set this option in an option file, you can override it by using &#8211;safe-updates on the command line.</p></blockquote>
<p>This option is an alias of &#8220;&#8211;safe-upfates&#8221;. I wonder for a while what is the story behind having two alternate names for the same thing. Maybe it&#8217;s just the MySQL folks having some fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/funny-mysql-command-line-option/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL &#8211; ORDER BY RAND() optimization</title>
		<link>http://www.thedeveloperday.com/mysql-order-by-rand-optimization/</link>
		<comments>http://www.thedeveloperday.com/mysql-order-by-rand-optimization/#comments</comments>
		<pubDate>Thu, 08 Jan 2009 11:44:46 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[Lazyweb]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[randomization]]></category>
		<category><![CDATA[sorting]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/mysql-order-by-rand-optimization/</guid>
		<description><![CDATA[Interesting read about order by rand optimization by Jan Kneschke. Haven&#8217;t used this myself but seems might be rather useful. The performance difference is huge. I wonder if MySQL could optimize ORDER BY RAND() itself when there are no data holes.]]></description>
			<content:encoded><![CDATA[<p>Interesting read about <a href="http://jan.kneschke.de/projects/mysql/order-by-rand/" title="mysql order by RAND() optimization">order by rand optimization</a> by <a href="http://jan.kneschke.de/" title="jan kneschke">Jan Kneschke</a>. Haven&#8217;t used this myself but seems might be rather useful. The performance difference is huge. I wonder if MySQL could optimize ORDER BY RAND() itself when there are no data holes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/mysql-order-by-rand-optimization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Percona offers XtraDB to replace InnoDB</title>
		<link>http://www.thedeveloperday.com/percona-offers-xtradb-to-replace-innodb/</link>
		<comments>http://www.thedeveloperday.com/percona-offers-xtradb-to-replace-innodb/#comments</comments>
		<pubDate>Fri, 19 Dec 2008 16:36:34 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[Lazyweb]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[percona]]></category>
		<category><![CDATA[xtradb]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/percona-offers-xtradb-to-replace-innodb/</guid>
		<description><![CDATA[Who could have guessed Percona would decide to release their own storage engine named XtraDB for MySQL. It&#8217;s a drop in replacement for InnoDB. They are forking a version of InnoDB and applying patches of their own. Not only that they are going to put more effort to it to make it something more than just [...]]]></description>
			<content:encoded><![CDATA[<p>Who could have guessed <a href="http://www.percona.com/" title="percona consulting company">Percona</a> would decide to release their own storage engine named <a href="http://www.mysqlperformanceblog.com/2008/12/16/announcing-percona-xtradb-storage-engine-a-drop-in-replacement-for-standard-innodb/" title="XtraDB storage engine MySQL">XtraDB</a> for MySQL. It&#8217;s a drop in replacement for InnoDB. They are forking a version of InnoDB and applying patches of their own. Not only that they are going to put more effort to it to make it something more than just a small variation of InnoDB. Even now it seems to offer <a href="http://www.mysqlperformanceblog.com/2008/12/18/xtradb-benchmarks-15x-gain/" title="XtraDB performance">better performance</a> and scalability than InnoDB. It also frees XtraDB from Oracle that did an awesome job creating InnoDB but it seems percona want&#8217;s to go to the next level. Happy to see XtraDB will be available for others to modify and submit patches. It&#8217;s also interesting to find out Percona will be trying to sponsor future changes of XtraDB through their customers.</p>
<p>It is also nice too see that there are some thoughts to <a href="http://mysql-ha.com/post/58" title="xtradb and drizzle">merge XtraDB into Drizzle</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/percona-offers-xtradb-to-replace-innodb/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Top N Sort Algorithm</title>
		<link>http://www.thedeveloperday.com/mysql-top-n-sort-algorithm/</link>
		<comments>http://www.thedeveloperday.com/mysql-top-n-sort-algorithm/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 16:29:46 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[Lazyweb]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[algorithm]]></category>
		<category><![CDATA[sorting]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/mysql-top-n-sort-algorithm/</guid>
		<description><![CDATA[While reading planetmysql I&#8217;ve found a very interesting article about Top N Sort algorithm. It would be nice to have this implemented in MySQL. There are millions of applications that have sorted and paginated lists of data. Some of those lists are really big. For example company that I work for has a web application [...]]]></description>
			<content:encoded><![CDATA[<p>While reading <a href="http://www.planetmysql.org">planetmysql</a> I&#8217;ve found a very interesting article about <a href="http://labs.cybozu.co.jp/blog/kazuhoatwork/2008/12/using_top_n_sort_on_mysql.php" title="MySQL Top N Sort">Top N Sort algorithm</a>. It would be nice to have this implemented in MySQL. There are millions of applications that have sorted and paginated lists of data. Some of those lists are really big. For example company that I work for has a web application with a report that has milions of rows and it has to be sorted and it only shows a few hundred rows in a single page. This would definitely be a great improvement to MySQL.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/mysql-top-n-sort-algorithm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL character sets and collations</title>
		<link>http://www.thedeveloperday.com/mysql-character-sets-and-collations/</link>
		<comments>http://www.thedeveloperday.com/mysql-character-sets-and-collations/#comments</comments>
		<pubDate>Mon, 08 Dec 2008 15:05:39 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[character-sets]]></category>
		<category><![CDATA[collations]]></category>
		<category><![CDATA[sorting]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/mysql-character-sets-and-collations/</guid>
		<description><![CDATA[Another great article I&#8217;ve found about MySQL character sets and collations that demystifies all the so often found problems in projects made by confused developers. This also can help you to save some space your database takes and improve your queries performance because more of your database can fit into memory.]]></description>
			<content:encoded><![CDATA[<p>Another great article I&#8217;ve found about <a title="MySQL character sets and collations" href="http://code.openark.org/blog/?p=10">MySQL character sets and collations</a> that demystifies all the so often found problems in projects made by confused developers. This also can help you to save some space your database takes and improve your queries performance because more of your database can fit into memory.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/mysql-character-sets-and-collations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is the future of relational databases?</title>
		<link>http://www.thedeveloperday.com/what-is-the-future-of-relational-databases/</link>
		<comments>http://www.thedeveloperday.com/what-is-the-future-of-relational-databases/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 18:01:01 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[relational]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/what-is-the-future-of-relational-databases/</guid>
		<description><![CDATA[A great recorded video keynote from the OpenSQL camp conference featuring Brian Aker. He asks some interesting questions about the state of databases. He has some interesting points about the way we currently use hardware and problems that are at our door and how opensource projects should step up to solve them.]]></description>
			<content:encoded><![CDATA[<p>A great recorded video <a title="The State of Open Source Databases" href="http://www.pythian.com/blogs/1364/the-state-of-open-source-databases-opensql-camp-keynote-featuring-brian-aker">keynote from the OpenSQL camp</a> conference featuring Brian Aker. He asks some interesting questions about the state of databases. He has some interesting points about the way we currently use hardware and problems that are at our door and how opensource projects should step up to solve them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/what-is-the-future-of-relational-databases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Common wrong Data Types compilation</title>
		<link>http://www.thedeveloperday.com/common-wrong-data-types-compilation/</link>
		<comments>http://www.thedeveloperday.com/common-wrong-data-types-compilation/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 17:45:31 +0000</pubDate>
		<dc:creator>Žilvinas Šaltys</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[data-types]]></category>

		<guid isPermaLink="false">http://www.thedeveloperday.com/common-wrong-data-types-compilation/</guid>
		<description><![CDATA[Found some nice MySQL data types tips how to create a database schema. Valuable information for intermediate and begginer developers to avoid the common database schema design pitfalls.]]></description>
			<content:encoded><![CDATA[<p>Found some nice <a title="mysql data types tips" href="http://code.openark.org/blog/?p=85">MySQL data types</a> tips how to create a database schema. Valuable information for intermediate and begginer developers to avoid the common database schema design pitfalls.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.thedeveloperday.com/common-wrong-data-types-compilation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

