<?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>Xaprb &#187; memcached</title>
	<atom:link href="http://www.xaprb.com/blog/tag/memcached/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xaprb.com/blog</link>
	<description>Stay curious!</description>
	<lastBuildDate>Thu, 09 Feb 2012 03:58:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Observations on key-value databases</title>
		<link>http://www.xaprb.com/blog/2009/09/20/observations-on-key-value-databases/</link>
		<comments>http://www.xaprb.com/blog/2009/09/20/observations-on-key-value-databases/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 18:57:01 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[key value]]></category>
		<category><![CDATA[Keyspace]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[redis]]></category>
		<category><![CDATA[replication]]></category>
		<category><![CDATA[synchronous]]></category>
		<category><![CDATA[Tokyo Cabinet]]></category>
		<category><![CDATA[Tokyo Tyrant]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1292</guid>
		<description><![CDATA[Key-value databases are catching fire these days. Memcached, Redis, Cassandra, Keyspace, Tokyo Tyrant, and a handful of others are surging in popularity, judging by the contents of my feed reader. I find a number of things interesting about these tools. There are many more of them than open-source traditional relational databases. (edit: I mean that [...]


<strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2010/06/12/postmodern-databases/' rel='bookmark' title='Permanent Link: Postmodern databases'>Postmodern databases</a></li>
<li><a href='http://www.xaprb.com/blog/2010/04/26/why-high-availability-is-hard-with-databases/' rel='bookmark' title='Permanent Link: Why high-availability is hard with databases'>Why high-availability is hard with databases</a></li>
<li><a href='http://www.xaprb.com/blog/2009/07/25/analyze-and-optimize-memcached-usage-with-maatkit/' rel='bookmark' title='Permanent Link: Analyze and optimize memcached usage with Maatkit'>Analyze and optimize memcached usage with Maatkit</a></li>
<li><a href='http://www.xaprb.com/blog/2010/03/08/nosql-doesnt-mean-non-relational/' rel='bookmark' title='Permanent Link: NoSQL doesn&#8217;t mean non-relational'>NoSQL doesn&#8217;t mean non-relational</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/19/mysql-conference-and-expo-2008-day-three/' rel='bookmark' title='Permanent Link: MySQL Conference and Expo 2008, Day Three'>MySQL Conference and Expo 2008, Day Three</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Key-value databases are catching fire these days.  Memcached, Redis, Cassandra, Keyspace, Tokyo Tyrant, and a handful of others are surging in popularity, judging by the contents of my feed reader.</p>

<p>I find a number of things interesting about these tools.</p>

<ul>
<li>There are many more of them than open-source traditional relational databases. (edit: I mean that there are many options that all seem similar to each other, instead of 3 or 4 standing out as the giants.)</li>
<li>It seems that a lot of people are simultaneously inventing solutions to their problems in private without being aware of each other, then open-sourcing the results.  That points to a sudden sea change in architectures.  Tipping points tend to be abrupt, which would explain isolated redundant development.</li>
<li>Many of the products are feature-rich with things programmers need: diverse language bindings, APIs, embeddability, and the ability to speak familiar protocols such as memcached protocol.</li>
<li>I think there are more solutions here than the ecosystem will support, and in five years a few will stand out as the most popular.</li>
<li>This process of paring down the gene pool is win-win because they&#8217;re open-source, and nothing will be lost.</li>
<li>Choosing which one to use is no easy task even for a highly skilled, technical, up-to-date person.  Perhaps the decision-makers will choose on the availability of commercial support and consulting.</li>
<li>Many of them offer built-in, dead-simple, distributed, synchronous replication.  This is very difficult to achieve with traditional relational databases.  What makes key-value databases different? They don&#8217;t have MVCC, for one thing; but I&#8217;m not sure of the complete answer to that question, to tell the truth.</li>
</ul>

<p>We live in interesting times.</p>

<p><strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2010/06/12/postmodern-databases/' rel='bookmark' title='Permanent Link: Postmodern databases'>Postmodern databases</a></li>
<li><a href='http://www.xaprb.com/blog/2010/04/26/why-high-availability-is-hard-with-databases/' rel='bookmark' title='Permanent Link: Why high-availability is hard with databases'>Why high-availability is hard with databases</a></li>
<li><a href='http://www.xaprb.com/blog/2009/07/25/analyze-and-optimize-memcached-usage-with-maatkit/' rel='bookmark' title='Permanent Link: Analyze and optimize memcached usage with Maatkit'>Analyze and optimize memcached usage with Maatkit</a></li>
<li><a href='http://www.xaprb.com/blog/2010/03/08/nosql-doesnt-mean-non-relational/' rel='bookmark' title='Permanent Link: NoSQL doesn&#8217;t mean non-relational'>NoSQL doesn&#8217;t mean non-relational</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/19/mysql-conference-and-expo-2008-day-three/' rel='bookmark' title='Permanent Link: MySQL Conference and Expo 2008, Day Three'>MySQL Conference and Expo 2008, Day Three</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2009/09/20/observations-on-key-value-databases/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Analyze and optimize memcached usage with Maatkit</title>
		<link>http://www.xaprb.com/blog/2009/07/25/analyze-and-optimize-memcached-usage-with-maatkit/</link>
		<comments>http://www.xaprb.com/blog/2009/07/25/analyze-and-optimize-memcached-usage-with-maatkit/#comments</comments>
		<pubDate>Sat, 25 Jul 2009 14:08:14 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[Maatkit]]></category>
		<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[Schooner]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1188</guid>
		<description><![CDATA[Ryan posted an article on the MySQL Performance Blog about how to use mk-query-digest to analyze and understand your memcached usage with the same techniques you use for MySQL query analysis. This is an idea that came to me during the 2009 MySQL Conference, while talking to our friends from Schooner, who sell a memcached [...]


<strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2010/05/10/new-maatkit-tool-to-compute-index-usage/' rel='bookmark' title='Permanent Link: New Maatkit tool to compute index usage'>New Maatkit tool to compute index usage</a></li>
<li><a href='http://www.xaprb.com/blog/2011/05/10/new-maatkit-tool-mk-table-usage/' rel='bookmark' title='Permanent Link: New Maatkit tool: mk-table-usage'>New Maatkit tool: mk-table-usage</a></li>
<li><a href='http://www.xaprb.com/blog/2005/11/30/quickly-compile-query-statistics-from-sql-query-analyzer/' rel='bookmark' title='Permanent Link: How to analyze statistics from SQL Query Analyzer'>How to analyze statistics from SQL Query Analyzer</a></li>
<li><a href='http://www.xaprb.com/blog/2010/02/07/how-often-should-you-use-optimize-table/' rel='bookmark' title='Permanent Link: How often should you use OPTIMIZE TABLE?'>How often should you use OPTIMIZE TABLE?</a></li>
<li><a href='http://www.xaprb.com/blog/2006/04/30/how-to-optimize-subqueries-and-joins-in-mysql/' rel='bookmark' title='Permanent Link: How to optimize subqueries and joins in MySQL'>How to optimize subqueries and joins in MySQL</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Ryan posted <a href="http://www.mysqlperformanceblog.com/2009/07/24/maatkit-now-supports-memcached/">an article on the MySQL Performance Blog</a> about how to use mk-query-digest to analyze and understand your memcached usage with the same techniques you use for MySQL query analysis.  This is an idea that came to me during the 2009 MySQL Conference, while talking to our friends from <a href="http://www.schoonerinfotech.com/">Schooner, who sell a memcached appliance</a>.</p>

<p>It suddenly struck me that the science of memcached performance is basically nonexistent, from the standpoint of developers and architects.  Everyone treats it as a magical tool that just performs well and doesn&#8217;t need to be analyzed, which is demonstrably and self-evidently false.  memcached itself is very fast, true, so it doesn&#8217;t usually become a performance bottleneck the way a database server does.  But that&#8217;s not the point.  There is a lot to win or lose in the way you use it, which can heavily influence your application&#8217;s performance.  That&#8217;s what the new features in mk-query-digest are designed to analyze.</p>

<p>Here&#8217;s an example of the types of problems we&#8217;ve seen in production memcached usage, which are very hard to catch without a good tool.  What if a &#8220;global&#8221; value is accidentally stored with a key that includes the user ID?  This will cause the value to be duplicated again and again for every user, instead of being stored once.  There are really only two ways to catch this: 1) know the application&#8217;s source code inside and out, and 2) analyze the memcached traffic scientifically.  (Even if you know the source code well, there&#8217;s a good chance you can miss a bug like this.)  I could go on listing the types of problems you can inadvertently create with a key-value database, but I&#8217;ll leave it at that.</p>

<p>The features are only available in trunk, and will be released with this month&#8217;s scheduled release.</p>

<p><strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2010/05/10/new-maatkit-tool-to-compute-index-usage/' rel='bookmark' title='Permanent Link: New Maatkit tool to compute index usage'>New Maatkit tool to compute index usage</a></li>
<li><a href='http://www.xaprb.com/blog/2011/05/10/new-maatkit-tool-mk-table-usage/' rel='bookmark' title='Permanent Link: New Maatkit tool: mk-table-usage'>New Maatkit tool: mk-table-usage</a></li>
<li><a href='http://www.xaprb.com/blog/2005/11/30/quickly-compile-query-statistics-from-sql-query-analyzer/' rel='bookmark' title='Permanent Link: How to analyze statistics from SQL Query Analyzer'>How to analyze statistics from SQL Query Analyzer</a></li>
<li><a href='http://www.xaprb.com/blog/2010/02/07/how-often-should-you-use-optimize-table/' rel='bookmark' title='Permanent Link: How often should you use OPTIMIZE TABLE?'>How often should you use OPTIMIZE TABLE?</a></li>
<li><a href='http://www.xaprb.com/blog/2006/04/30/how-to-optimize-subqueries-and-joins-in-mysql/' rel='bookmark' title='Permanent Link: How to optimize subqueries and joins in MySQL'>How to optimize subqueries and joins in MySQL</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2009/07/25/analyze-and-optimize-memcached-usage-with-maatkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Version 1.1.2 of improved Cacti templates released</title>
		<link>http://www.xaprb.com/blog/2009/05/07/version-112-of-improved-cacti-templates-released/</link>
		<comments>http://www.xaprb.com/blog/2009/05/07/version-112-of-improved-cacti-templates-released/#comments</comments>
		<pubDate>Thu, 07 May 2009 04:31:51 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Cacti]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Nginx]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=979</guid>
		<description><![CDATA[I&#8217;ve packaged up and released version 1.1.2 of the Cacti templates I&#8217;ve written for MySQL, Apache, memcached, nginx etc. Anyone who would like to help write documentation (or do anything else, for that matter) is welcomed to participate. I&#8217;ll give commit access at the drop of a hat. Changelog: 2009-05-07: version 1.1.2 * The parsing [...]


<strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2009/10/25/version-1-1-4-of-improved-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.4 of improved Cacti templates released'>Version 1.1.4 of improved Cacti templates released</a></li>
<li><a href='http://www.xaprb.com/blog/2009/12/13/version-1-1-5-of-improved-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.5 of improved Cacti templates released'>Version 1.1.5 of improved Cacti templates released</a></li>
<li><a href='http://www.xaprb.com/blog/2010/04/20/version-1-1-7-of-better-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.7 of Better Cacti Templates released'>Version 1.1.7 of Better Cacti Templates released</a></li>
<li><a href='http://www.xaprb.com/blog/2011/01/22/version-1-1-8-of-better-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.8 of Better Cacti Templates released'>Version 1.1.8 of Better Cacti Templates released</a></li>
<li><a href='http://www.xaprb.com/blog/2010/01/10/version-1-1-6-of-better-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.6 of Better Cacti Templates released'>Version 1.1.6 of Better Cacti Templates released</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve packaged up and released version 1.1.2 of the <a href="http://code.google.com/p/mysql-cacti-templates/">Cacti templates I&#8217;ve written for MySQL, Apache, memcached, nginx etc</a>.</p>

<p>Anyone who would like to help write documentation (or do anything else, for that matter) is welcomed to participate.  I&#8217;ll give commit access at the drop of a hat.</p>

<p>Changelog:</p>

<pre>2009-05-07: version 1.1.2

	* The parsing code did not handle InnoDB plugin / XtraDB (issue 52).
	* The servername was hardcoded in ss_get_by_ssh.php (issue 57).
	* Added Handler_ graphs (issue 47).
	* Config files can be used instead of editing the .php file (issue 39).
	* binary log space is now calculated without a MySQL query (issue 48).
	* There was no easy way to force inputs to be filled (issue 45).
	* Some graphs were partially hidden without --lower-limit (issue 43).
	* Flipped some elements across the Y axis (issue 42).
	* Added Apache, Nginx, and GNU/Linux templates.
	* Unknown output is now -1 instead of 0 to prevent spikes in graphs.
	* If you want to use a script server, you must now explicitly configure it.
	* UNIX sockets weren't permitted for MySQL (issue 38).
</pre>

<p><strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2009/10/25/version-1-1-4-of-improved-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.4 of improved Cacti templates released'>Version 1.1.4 of improved Cacti templates released</a></li>
<li><a href='http://www.xaprb.com/blog/2009/12/13/version-1-1-5-of-improved-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.5 of improved Cacti templates released'>Version 1.1.5 of improved Cacti templates released</a></li>
<li><a href='http://www.xaprb.com/blog/2010/04/20/version-1-1-7-of-better-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.7 of Better Cacti Templates released'>Version 1.1.7 of Better Cacti Templates released</a></li>
<li><a href='http://www.xaprb.com/blog/2011/01/22/version-1-1-8-of-better-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.8 of Better Cacti Templates released'>Version 1.1.8 of Better Cacti Templates released</a></li>
<li><a href='http://www.xaprb.com/blog/2010/01/10/version-1-1-6-of-better-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.6 of Better Cacti Templates released'>Version 1.1.6 of Better Cacti Templates released</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2009/05/07/version-112-of-improved-cacti-templates-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Secure, easy Cacti graphing without SNMP</title>
		<link>http://www.xaprb.com/blog/2009/04/25/secure-easy-cacti-graphing-without-snmp/</link>
		<comments>http://www.xaprb.com/blog/2009/04/25/secure-easy-cacti-graphing-without-snmp/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 19:01:02 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Cacti]]></category>
		<category><![CDATA[Cacti templates]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Nginx]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1041</guid>
		<description><![CDATA[Cacti is a great tool for collecting information about systems and graphing it. However, it likes to use SNMP, and SNMP is often not desirable. Instead, I often see the need for a method that is: Secure. Use trusted, well-known, encrypted communication. Do not open up new ports. Zero install on the monitored system. As [...]


<strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2009/02/09/news-on-mysql-cacti-templates/' rel='bookmark' title='Permanent Link: News on MySQL Cacti Templates'>News on MySQL Cacti Templates</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/27/improved-cacti-monitoring-templates-for-mysql/' rel='bookmark' title='Permanent Link: Improved Cacti monitoring templates for MySQL'>Improved Cacti monitoring templates for MySQL</a></li>
<li><a href='http://www.xaprb.com/blog/2010/05/25/a-better-way-to-build-cacti-templates/' rel='bookmark' title='Permanent Link: A better way to build Cacti templates'>A better way to build Cacti templates</a></li>
<li><a href='http://www.xaprb.com/blog/2009/05/07/version-112-of-improved-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.2 of improved Cacti templates released'>Version 1.1.2 of improved Cacti templates released</a></li>
<li><a href='http://www.xaprb.com/blog/2010/04/20/version-1-1-7-of-better-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.7 of Better Cacti Templates released'>Version 1.1.7 of Better Cacti Templates released</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.cacti.net/">Cacti</a> is a great tool for collecting information about systems and graphing it.  However, it likes to use SNMP, and SNMP is often not desirable.  Instead, I often see the need for a method that is:</p>

<ul>
<li>Secure.  Use trusted, well-known, encrypted communication.  Do not open up new ports.</li>
<li>Zero install on the monitored system.</li>
<li>As little installation or modification on the monitoring system as possible.</li>
</ul>

<p>Over the last several years, I&#8217;ve slowly created more and more software to create Cacti graphs via standard POSIX command-line utilities over SSH with key-pair authentication.  (I&#8217;ve also created similar software for Nagios, but that&#8217;s another matter.)  The major problem with the work I&#8217;ve done is that it&#8217;s totally un-publicized.</p>

<p>The system works by passing command-line arguments to a local PHP script like any other Cacti script.  This script then executes a remote SSH command, such as <code>ssh somehost uptime</code> and extracts statistics from the result.</p>

<p>The requirements are very simple.  On the system to be monitored, a public key must be installed.  On the monitoring system, the cacti user account must have a private SSH key that it can read and others can&#8217;t.  This is standard for any SSH key.  The cacti user account must also have the SSH key fingerprint of the monitored system in its known_hosts file.</p>

<p>The work I&#8217;ve done thus far is available from Subversion in the <a href="http://code.google.com/p/mysql-cacti-templates">mysql-cacti-templates</a> project.  This project has the scaffolding for creating Cacti templates easily, so I&#8217;m using it.</p>

<p>At this point, the following are available:</p>

<ul>
<li>Apache</li>
<li>Operating system (CPU, memory, load average, etc)</li>
<li>Memcached</li>
<li>Nginx</li>
</ul>

<p>Unfinished work includes network, disk, etc.  The techniques to monitor something of which there is a variable number (e.g. there can be many disks, each of which needs its own graph) are a little more complex than simple things like monitoring overall CPU usage.  So that&#8217;s a work in progress.  Once it&#8217;s done, it&#8217;ll make it really easy to discover and monitor multiples of <em>anything</em> &#8212; for example, multiple MySQL servers or memcached servers on a single host &#8212; without creating a new host for each resource to monitor.</p>

<p>As with the MySQL templates I created, these templates are comprehensive and have lots of nice properties most templates lack.  This is something you get free with my scaffolding.  If you&#8217;ve ever created templates by hand through the web interface, you should give my work a try.  You can turn a three-day project into a few minutes and avoid bugs and other hassles.  There are <a href="http://code.google.com/p/mysql-cacti-templates/wiki/CreatingGraphs">instructions for creating Cacti templates</a> on the project wiki.</p>

<p><strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2009/02/09/news-on-mysql-cacti-templates/' rel='bookmark' title='Permanent Link: News on MySQL Cacti Templates'>News on MySQL Cacti Templates</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/27/improved-cacti-monitoring-templates-for-mysql/' rel='bookmark' title='Permanent Link: Improved Cacti monitoring templates for MySQL'>Improved Cacti monitoring templates for MySQL</a></li>
<li><a href='http://www.xaprb.com/blog/2010/05/25/a-better-way-to-build-cacti-templates/' rel='bookmark' title='Permanent Link: A better way to build Cacti templates'>A better way to build Cacti templates</a></li>
<li><a href='http://www.xaprb.com/blog/2009/05/07/version-112-of-improved-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.2 of improved Cacti templates released'>Version 1.1.2 of improved Cacti templates released</a></li>
<li><a href='http://www.xaprb.com/blog/2010/04/20/version-1-1-7-of-better-cacti-templates-released/' rel='bookmark' title='Permanent Link: Version 1.1.7 of Better Cacti Templates released'>Version 1.1.7 of Better Cacti Templates released</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2009/04/25/secure-easy-cacti-graphing-without-snmp/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>MySQL Conference and Expo 2008, Day Three</title>
		<link>http://www.xaprb.com/blog/2008/04/19/mysql-conference-and-expo-2008-day-three/</link>
		<comments>http://www.xaprb.com/blog/2008/04/19/mysql-conference-and-expo-2008-day-three/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 05:22:31 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Dathan Pattishall]]></category>
		<category><![CDATA[Farhan Mashraqi]]></category>
		<category><![CDATA[GET_LOCK]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[Lucene]]></category>
		<category><![CDATA[Maatkit]]></category>
		<category><![CDATA[Mark Callaghan]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[myisam]]></category>
		<category><![CDATA[mysqluc2008]]></category>
		<category><![CDATA[Paul McCullagh]]></category>
		<category><![CDATA[pbxt]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/2008/04/19/mysql-conference-and-expo-2008-day-three/</guid>
		<description><![CDATA[Here&#8217;s a rundown of Thursday (day 3) of the MySQL Conference and Expo. This day&#8217;s sessions were much more interesting to me than Wednesday&#8217;s, and in fact I wanted to go to several of them in a single time slot a couple of times. Inside the PBXT Storage Engine This session was, as it sounds, [...]


<strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2008/04/17/mysql-conference-and-expo-2008-day-two/' rel='bookmark' title='Permanent Link: MySQL Conference and Expo 2008, Day Two'>MySQL Conference and Expo 2008, Day Two</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/16/mysql-conference-and-expo-2008-day-one/' rel='bookmark' title='Permanent Link: MySQL Conference and Expo 2008, Day One'>MySQL Conference and Expo 2008, Day One</a></li>
<li><a href='http://www.xaprb.com/blog/2008/01/25/my-presentations-at-the-2008-mysql-conference-and-expo/' rel='bookmark' title='Permanent Link: My presentations at the 2008 MySQL Conference and Expo'>My presentations at the 2008 MySQL Conference and Expo</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/25/baron-schwartz-on-a-podcast-at-mysql-conference-and-expo-2008/' rel='bookmark' title='Permanent Link: Baron Schwartz on a podcast at MySQL Conference and Expo 2008'>Baron Schwartz on a podcast at MySQL Conference and Expo 2008</a></li>
<li><a href='http://www.xaprb.com/blog/2009/04/11/sessions-of-interest-at-mysql-conference-and-expo-2009/' rel='bookmark' title='Permanent Link: Sessions of interest at MySQL Conference and Expo 2009'>Sessions of interest at MySQL Conference and Expo 2009</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s a rundown of Thursday (day 3) of the MySQL Conference and Expo.  This day&#8217;s sessions were much more interesting to me than Wednesday&#8217;s, and in fact I wanted to go to several of them in a single time slot a couple of times.</p>

<h3>Inside the PBXT Storage Engine</h3>

<p>This session was, as it sounds, a look at the internals of <a href="http://www.primebase.org/">PBXT</a>, a transactional storage engine for MySQL that has some interesting design techniques.  I had been looking forward to this session for a while, and Paul McCullagh&#8217;s nice explanations with clear diagrams were a welcome aid to understanding how PBXT works.  Unlike some of the other storage engines, PBXT is being developed in full daylight, with an emphasis on community involvement and input.  (Indeed, I may be contributing to it myself, in order to make its monitoring and tuning capabilities second to none).</p>

<p>PBXT has not only a unique design, but a clear vision for differentiating itself from other transactional storage engines.  It&#8217;s not trying to clone any particular engine; Paul and friends are planning to add some capabilities that will really set it apart from other engines, including high-availability features and blob streaming.</p>

<p>I left this session with a much better understanding of how PBXT balances various demands to satisfy all sorts of different workload characteristics, how it writes data, how it achieves transactional durability, and so on.  I think these capabilities, and its performance, can really be assessed only in the real world (of course), but in principle it sounds good.  I love knowing how things work!</p>

<p>There were about 30 people in the talk.  I wish there had been more, because I think PBXT is going to be an important part of the open ecosystem going forward.  However, I feel pretty confident people will take more notice if it starts to get used in the real world.  Someone had a video camera there, so you might check out the video when it&#8217;s available.  Paul&#8217;s explanations are really good.</p>

<h3>Helping InnoDB Scale on Servers with Many CPU Cores and Disks</h3>

<p>This session was <a href="http://mysqlha.blogspot.com/2008/04/innodb-scales-on-big-smp-servers.html">Mark Callaghan&#8217;s chance to unveil the work he and others have been doing on InnoDB&#8217;s scalability issues</a>, which mostly revolve around mutex contention.  Mark&#8217;s team has completely solved the problems on their workload and benchmarks.  In fact, after the changes, InnoDB exhibited significantly better performance even than <a href="http://www.mysqlperformanceblog.com/2007/10/12/myisam-scalability-and-innodb-falcon-benchmarks/">MyISAM, which began to be limited by the single mutex that synchronizes access to its key cache</a>.  (Yes, in fact MyISAM has scalability problems too).</p>

<p>Google&#8217;s workload for MySQL, in case you&#8217;re wondering, is pretty traditional (i.e. not web-like; more like an &#8220;enterprise&#8221; application).  Heavily I/O-bound, 24/7 critical systems, and so on.</p>

<p>Mark also wore several community t-shirts at various points in the talk, including one of my <a href="http://www.maatkit.org/">Maatkit</a> t-shirts.  Mark said Maatkit would be perfect if only it were written in Python (Google&#8217;s preferred scripting language).  Alas, Mark, it&#8217;ll stay in Perl.  But thanks for the nice compliment anyway.</p>

<p>The room was packed full.</p>

<h3>Scaling Heavy Concurrent Writes In Real Time</h3>

<p><a href="http://mysqldba.blogspot.com/">Dathan Pattishall</a>, formerly the lead architect at Flickr, explained his techniques for scaling Flickr&#8217;s write capacity.  He talked about how he&#8217;d worked to reduce primary key sizes, queued writes for batching, separated different types of data into different types of tables, and more.  Dathan has never been afraid to do what he thinks is a good idea, even if it flies in the face of &#8220;best practices,&#8221; so I was happy to finally hear him talk.</p>

<p>By the way, Dathan pointed out that distributed locking with <a href="http://www.danga.com/memcached/">memcached</a> and <code>add()</code> isn&#8217;t a silver bullet.  It works ok until memcached evicts your lock due to the LRU policy.  He uses MySQL&#8217;s built-in <code>GET_LOCK()</code> function for locking.</p>

<p>Dathan&#8217;s blog is a good source of information about his sometimes unorthodox approaches to database design.</p>

<h3>The Power of Lucene</h3>

<p>This was the only one of <a href="http://mysqldatabaseadministration.blogspot.com/">Frank (Farhan) Mashraqi&#8217;s</a> talks I got to attend.  This was pretty technical: how <a href="http://lucene.apache.org/">Lucene</a> works, how to configure and install it, how to index documents, how to execute searches.  If you were wondering how much work and complexity it would be to install and use Lucene, this talk would have been good for you to attend; I&#8217;ve never used it myself, but I&#8217;m pretty sure Frank covered everything you need to know.</p>

<p><strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2008/04/17/mysql-conference-and-expo-2008-day-two/' rel='bookmark' title='Permanent Link: MySQL Conference and Expo 2008, Day Two'>MySQL Conference and Expo 2008, Day Two</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/16/mysql-conference-and-expo-2008-day-one/' rel='bookmark' title='Permanent Link: MySQL Conference and Expo 2008, Day One'>MySQL Conference and Expo 2008, Day One</a></li>
<li><a href='http://www.xaprb.com/blog/2008/01/25/my-presentations-at-the-2008-mysql-conference-and-expo/' rel='bookmark' title='Permanent Link: My presentations at the 2008 MySQL Conference and Expo'>My presentations at the 2008 MySQL Conference and Expo</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/25/baron-schwartz-on-a-podcast-at-mysql-conference-and-expo-2008/' rel='bookmark' title='Permanent Link: Baron Schwartz on a podcast at MySQL Conference and Expo 2008'>Baron Schwartz on a podcast at MySQL Conference and Expo 2008</a></li>
<li><a href='http://www.xaprb.com/blog/2009/04/11/sessions-of-interest-at-mysql-conference-and-expo-2009/' rel='bookmark' title='Permanent Link: Sessions of interest at MySQL Conference and Expo 2009'>Sessions of interest at MySQL Conference and Expo 2009</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2008/04/19/mysql-conference-and-expo-2008-day-three/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

