<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	>
<channel>
	<title>Comments on: Death of MySQL read replication highly exaggerated</title>
	<atom:link href="http://blogs.smugmug.com/don/2008/04/16/death-of-mysql-read-replication-highly-exaggerated/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.smugmug.com/don/2008/04/16/death-of-mysql-read-replication-highly-exaggerated/</link>
	<description>Thought stream from SmugMug's CEO &#38; Chief Geek</description>
	<pubDate>Sat, 11 Oct 2008 00:55:15 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7-hemorrhage</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Thomas Hurst</title>
		<link>http://blogs.smugmug.com/don/2008/04/16/death-of-mysql-read-replication-highly-exaggerated/#comment-102708</link>
		<dc:creator>Thomas Hurst</dc:creator>
		<pubDate>Sat, 26 Apr 2008 06:45:32 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/?p=213#comment-102708</guid>
		<description>At Newzbin, we operate the other way around; we have our own custom C daemon doing sorting, limiting, filtering etc, and giving us a list of ID's to go ask MySQL for.  We could squeeze memcached in there too, but I don't think it's going to be much of a win; primary key lookups aren't exactly tough :)

We use the same framework for stream processing, so we can do alerts for users when a search matches something new (or starts matching something old that's changed that they've not seen before).

My main concern with replication, aside from it being awkward making sure you're talking to a current enough slave (we use a serialized counter to checkpoint critical db changes), is any long write queries on the master get serialized on slaves; have a 50s long "DELETE FROM BigTable WHERE created_at &#60; really_old"?  Well, now all your slaves are gonna sit doing that and nothing else for a minute or more, so you either give users stale data or hammer your master.

I guess we need some sort of service which replicates queries like this async.  Hurray, more infrastructure ;)</description>
		<content:encoded><![CDATA[<p>At Newzbin, we operate the other way around; we have our own custom C daemon doing sorting, limiting, filtering etc, and giving us a list of ID&#8217;s to go ask MySQL for.  We could squeeze memcached in there too, but I don&#8217;t think it&#8217;s going to be much of a win; primary key lookups aren&#8217;t exactly tough <img src='http://blogs.smugmug.com/don/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>We use the same framework for stream processing, so we can do alerts for users when a search matches something new (or starts matching something old that&#8217;s changed that they&#8217;ve not seen before).</p>
<p>My main concern with replication, aside from it being awkward making sure you&#8217;re talking to a current enough slave (we use a serialized counter to checkpoint critical db changes), is any long write queries on the master get serialized on slaves; have a 50s long &#8220;DELETE FROM BigTable WHERE created_at &lt; really_old&#8221;?  Well, now all your slaves are gonna sit doing that and nothing else for a minute or more, so you either give users stale data or hammer your master.</p>
<p>I guess we need some sort of service which replicates queries like this async.  Hurray, more infrastructure <img src='http://blogs.smugmug.com/don/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mike503</title>
		<link>http://blogs.smugmug.com/don/2008/04/16/death-of-mysql-read-replication-highly-exaggerated/#comment-102600</link>
		<dc:creator>mike503</dc:creator>
		<pubDate>Thu, 17 Apr 2008 00:22:24 +0000</pubDate>
		<guid isPermaLink="false">http://blogs.smugmug.com/don/?p=213#comment-102600</guid>
		<description>Sounds like you're using a two-fetch method - use MySQL for sorting, limiting, whatever else to get a list of IDs, then do read-through caching for the bulk of the row data using memcached and fill in the missing from the DB. Is that correct? That's been my strategy so far too, nice to know if other people have adopted it successfully :)</description>
		<content:encoded><![CDATA[<p>Sounds like you&#8217;re using a two-fetch method - use MySQL for sorting, limiting, whatever else to get a list of IDs, then do read-through caching for the bulk of the row data using memcached and fill in the missing from the DB. Is that correct? That&#8217;s been my strategy so far too, nice to know if other people have adopted it successfully <img src='http://blogs.smugmug.com/don/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>
