<?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>code.openark.org &#187; mysqlconf</title>
	<atom:link href="http://code.openark.org/blog/tag/mysqlconf/feed" rel="self" type="application/rss+xml" />
	<link>http://code.openark.org/blog</link>
	<description>Blog by Shlomi Noach</description>
	<lastBuildDate>Wed, 01 Feb 2012 08:19:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Percona Live: MySQL Conference And Expo 2012 - a note on proposals</title>
		<link>http://code.openark.org/blog/mysql/percona-live-mysql-conference-and-expo-2012-a-note-on-proposals</link>
		<comments>http://code.openark.org/blog/mysql/percona-live-mysql-conference-and-expo-2012-a-note-on-proposals#comments</comments>
		<pubDate>Tue, 29 Nov 2011 11:08:05 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqlconf]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=4485</guid>
		<description><![CDATA[As a member of the conference committee I review the session and tutorial proposals for the Percona Live MySQL conference in Santa Clara, 2012. The sessions are expected to be technical, and I'm happy the proposals follow this guideline. I use Giuseppe's and Baron's general guidelines for submitting a proposal. I wish to humbly add [...]]]></description>
			<content:encoded><![CDATA[<p>As a member of the <a href="http://www.percona.com/live/mysql-conference-2012/conference-committee">conference committee</a> I review the session and tutorial proposals for the <a href="http://www.percona.com/live/mysql-conference-2012/">Percona Live MySQL conference</a> in Santa Clara, 2012.</p>
<p>The sessions are expected to be technical, and I'm happy the proposals follow this guideline. I use <a href="http://datacharmer.blogspot.com/2008/09/how-to-get-your-proposal-accepted-to.html">Giuseppe</a>'s and <a href="http://www.xaprb.com/blog/2009/12/19/how-to-write-a-good-mysql-conference-proposal/">Baron</a>'s general guidelines for submitting a proposal. I wish to humbly add a couple notes myself.</p>
<h4>Be fairly brief</h4>
<p>Explain your session/tutorial as clearly as you can. The reader should be able to get the general impression of the session from two or three paragraphs. Some can make a point in two sentences; for most it would take somewhat more.</p>
<p>If you're going to talk about some database feature, for example, please do not write the manual for that feature. That's for the session itself. Just explain how you're going to discuss the feature, and why it should be of interest (e.g. what the benefits of this feature are, the risks or pitfalls, the ingenious <strong>C</strong> code behind it or the quirks of the operating system involved).</p>
<h4>Clarify</h4>
<p>It's important for me to understand two things when reading a proposal, which establish the grounds for better evaluating the proposal:</p>
<ul>
<li>Who the target audience is (newbies, developers, DBAs, Linux internal experts etc.)</li>
<li>To what depth are you going to deliver the content you describe.</li>
</ul>
<p>That is not to say you should explicitly state "This session is for MySQL DBAs", but the attendee should be able to easily decide whether your session appeals to his type of work or expertise. I, myself, have happened upon sessions that were completely different from what I expected. To illustrate, I give two examples, while not disclosing the exact details:</p>
<ul>
<li>A session which was about locking in database. I got the impression it was about ways to avoid locking, issues with mutexes etc. It turned out to be a discussion between the presenter and a few member of the audience about the specific code internals, lines <strong>667-684</strong> in the <strong>lock_module.cc</strong> file, and the recently reported bug. To me it was more like the weekly rnd meeting of some company. I couldn't understand anything of the entire talk.</li>
<li>A session promising insight on working out great scale-out with some product: I was expecting to hear of the <em>"DOs and DON'Ts"</em>, or of great configuration and implementation tricks on the subject. However, it turned out to be more of a general talk on "how we used the product in our company and found it to work great".</li>
</ul>
<p>The two sessions above were perfectly valid, and had their place in the conference. But were poorly described in the two respects I mentioned.</p>
<p>A great submission, in my opinion, is one where attendees get what the expect, and don't shyly leave the conference room <strong>15</strong> minutes into the talk.</p>
<p>Submit a proposal <a href="http://www.percona.com/live/mysql-conference-2012/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/percona-live-mysql-conference-and-expo-2012-a-note-on-proposals/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Impressions from MySQL conf 2011, part IV</title>
		<link>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-iv</link>
		<comments>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-iv#comments</comments>
		<pubDate>Tue, 19 Apr 2011 12:08:40 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqlconf]]></category>
		<category><![CDATA[Planet]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=3474</guid>
		<description><![CDATA[This post concludes my impressions from some of the talks I’ve been to. Thursday OQGRAPH: Dealing with Graphs and Hierarchies in Plain SQL / Antony Curtis (Blizzard Entertainment) I opened this day's sessions with a smile. Antony Curtis and Arjen Lentz have authored the OQGraph storage engine a while back. I had every intention to [...]]]></description>
			<content:encoded><![CDATA[<p>This post concludes my impressions from some of the talks I’ve been to.</p>
<h4>Thursday</h4>
<ul>
<li><a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17189">OQGRAPH: Dealing with Graphs and Hierarchies in Plain SQL</a> / <em>Antony Curtis (Blizzard Entertainment)</em></li>
</ul>
<p>I opened this day's sessions with a smile.</p>
<p>Antony Curtis and Arjen Lentz have authored the OQGraph storage engine a while back. I had every intention to try it out, but never got round to it. Which is why I was happy to find this session in the conference. OQGraph is a specialized engine, and comes to solve hierarchal or otherwise graph-related queries, such as: <em>"who are the descendants of a given node"</em>, <em>"find a route from a to b"</em>, etc. MySQL does not support the <strong>RECURSIVE</strong> syntax as Oracle does, and does not provide out-of-the-box solution for that.</p>
<p>The syntax is just excellent: you just write something like <strong>SELECT * FROM my_graph WHERE from_node = 'empusa fasciata' AND to_node = 'homo sapiens'</strong> to find a route. Otherwise just use <strong>WHERE from_node = 'Heathrow Central'</strong> to find all outgoing links. So this is just plain old SQL, no new syntax involved.</p>
<p>I rounded corners. It is also possible (and required) to specify an algorithm. Do you want Djekstra? BFS? You specify it in the query. The result of a route query is a rowset, where each row is a step in the route, along with its sequence within the route. So you can do your <strong>ORDER BY</strong>, <strong>LIMIT</strong> etc. I find that syntax-wise, <em>OQGraph</em> is very intuitive!<span id="more-3474"></span></p>
<p>Implementation-wise, there are two versions: <strong>2</strong> (stable) and <strong>3</strong> (testing), which are very different. In version <strong>2</strong> you must create and populate an OQGraph table. You must populate it with <em>from-to;weight</em> values. The entire table is stored in memory a-la MEMORY engine. In version <strong>3</strong> the OQGraph is not directly populated. Instead, you use the <strong>CONNECTION</strong> table property to identify a real table where the data resides, along with the names of the relevant columns. So your data can reside within your normal InnoDB table, and your queries will follow your normal isolation-level rules.</p>
<p>Graph search implementation is done via the <em>boost()</em> library. This means that information must be loaded in memory. Tests show that up to a million or a few million edges are as much as <em>OQGraph</em> can take. So right now it may not fit your requirements is you need larger datasets.</p>
<p>Antony seemed like he was enjoying every minute of writing OQGraph, was very aware of current limitations, and offered great ideas on improvement. The version <strong>3</strong> design is a huge improvement over version <strong>2</strong>, and I can't wait to see how it evolves!</p>
<ul>
<li><a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17524">Error Detection and Correction with MySQL Replication</a> / <em>Daniel Peek (Facebook)</em></li>
</ul>
<p>An interesting view into Facebook's attempt to locate &amp; define data drifts within MySQL replication. Apparently, Facebook guys realized there were some inconsistencies between masters and slaves. They embarked on a mission to find out what exactly was inconsistent, and why.</p>
<p>Daniel Peek described their method of detecting changes. In similar manner to Maatkit's <em>mk-table-checksum</em>, they use hash codes over chunks of rows. To be more specific: in order to detect the differences (if any) between master &amp; slaves on a given table, they iterate said table in chunks, such that first line of any chunk overlaps with last line of previous chunk. This is easily done when there's unique key, less so when there isn't. They copy rows to a utility table a chunk at a time (e.g. <strong>1,000</strong> rows at a time), and take checksum. Their script then compared checksum on master &amp; slaves. If it equals, they conclude (at very high probability) that tested chunk is identical. Otherwise they take action to detect the exact row that is changed.</p>
<p>When the two chunks do not have the same number of rows, then there's at the very least a missing or extra row in either master or slave. Otherwise, there's a change in column's data. Apparently, nearly all data drifts are changes in column data, not missing or extra rows.</p>
<p>To make a long story short, they realized most of their data drift related to TIMESTAMPs. After realizing some timezone settings were incorrect, they were still left with <strong>0.00056%</strong> (if my memory serves me right) worth of data drift. How often do they do this test? <em>Once</em>, is the reply. What is the meaning of <strong>0.00056%</strong>? <em>We don't know</em>, is the answer.</p>
<p>And, although we are left with unanswered questions: <em>Why does that happen? How can we detect such changes in reasonable time? What should we do once we realize there is a drift? Whom shall we trust?</em> We have gone to length to recognize a way to detect such drifts.</p>
<ul>
<li><a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17146">Summary Tables, Aggregate Tables and Materialized Views Using Flexviews</a> / <em>Justin Swanhart (Percona)</em></li>
</ul>
<p>The conference had to end with a bang. In the last three years (hopefully with some sleep), Justin Swanhart has been working on what seems to me like an utterly (positively) crazy project: Flexviews: a materialized views solution for MySQL.</p>
<p>MySQL's native views are immaterialized. There is no data in them. When you access the view, you directly query the tables beneath. Justin's code allows you to create a materialized view (implemented as an actual MySQL table), which can utilize almost any type of SELECT you would want to use. It can only SELECT tables (including other materialized views).</p>
<p>How does this work? You don't directly create your materialized view. You get a set of stored routines with which you create the view. Each provides with a simple step in the creation of the view (e.g. JOIN to this table, return this column, etc.). You don't have to worry too much about this, since Justin provides with a PHP script which translates a SQL query to the required invocation sequence of said routines.</p>
<p>OK, view is created. What then? <em>Flexviews</em> reads binary logs (must be in ROW binlog format), and decides whether logged action manipulates tables used by any materialized table. If so, it logs that action into a special log table.</p>
<p>What have we got so far? SQL parser which generates sequence of stored routines; sequence of stored routines which creates a table, while storing structure; Binlog reader, capable of recognizing relevant events, associating them with relevant materialized views; and, most importantly, some brains which can figure out <em>just how</em> said event affects data. Think about it: say our query did some aggregation, with COUNT(*) or SUM(column). To be able to update the aggregated result based on the fact a few rows have been added/deleted/updated sounds to me like very hard work.</p>
<p>Flexviews do not get updated immediately, but rather on demand. It's all in the logs, it's just a matter of when to apply the logs. We had a very nice &amp; simple demonstration of this.</p>
<p>I don't mean to be too superlative, but this was a very impressive session, and myself, as well as other people, all had an occasional <em>"wow"</em> slip during and concluding this talk.</p>
<h4>Throughout the week</h4>
<ul>
<li>Planet MySQL</li>
</ul>
<p>During conference, <a href="http://planet.mysql.com/">Planet MySQL</a> was swamped with various announcements. Little were technical    announcements, like "X.X has been released", and most were purely    marketing announcements. This is to be expected; everyone wants to make a    living. I think it is quite all right that for <strong>4</strong> days a year, the    planet is mostly marketing stuff. I personally mostly ignore the planet    during these days.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-iv/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Impressions from MySQL conf 2011, part III: BoF Replication</title>
		<link>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-iii-bof-replication</link>
		<comments>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-iii-bof-replication#comments</comments>
		<pubDate>Tue, 19 Apr 2011 04:11:14 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqlconf]]></category>
		<category><![CDATA[Replication]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=3528</guid>
		<description><![CDATA[This post continues my impressions from some of the talks I've been to. I'll dedicate this post to a single session. Wednesday BoF: Replication, Lars Thalmann, Mat Keep (Oracle) Lars Thallman presented the MySQL 5.5 replication features, as well as the expected 5.6 features. Among other features, one could notice parallel replication, binlog checksums, sub-second [...]]]></description>
			<content:encoded><![CDATA[<p>This post continues my impressions from some of the talks I've been to. I'll dedicate this post to a single session.</p>
<h4>Wednesday</h4>
<ul>
<li>BoF: Replication, Lars Thalmann<em>, </em>Mat Keep<em> (Oracle)</em></li>
</ul>
<p>Lars Thallman presented the MySQL 5.5 replication features, as well as the expected 5.6 features. Among other features, one could notice parallel replication, binlog checksums, sub-second resolution and more. There was an open discussion about these features, asking for comments; looking for new ideas and suggestion from the audience.</p>
<p>I can't possibly cover it all. I'll note two discussion I participated in, and which have interested me. This also serves for noting down to myself my ideas and thoughts.<span id="more-3528"></span></p>
<h4>Parallel replication</h4>
<p>As the trend goes, parallel replication will be implemented by having a thread per schema. My own contribution to the discussion is that with such paradigm, the slave may be at any state inconsistent with the master. That is, at any point in time it can be in such state that has never existed in any point in time on the master. This is because it is possible that one or more of the replication threads executes much faster than one or more of the others.</p>
<p>We have discussed the meaning of <strong>STOP SLAVE</strong>. I have suggested that <strong>STOP SLAVE</strong> works in such way that it stops in a consistent slave. Lars suggested there could be normal <strong>STOP SLAVE</strong> and <strong>STOP SLAVE CONSISTENT</strong>.</p>
<p>It has been noted that we may not care about the slave being inconsistent, as the prerequisite for parallel replication is that the distinct schemata are independent of one another. After some thought, I disagree. Today parallel replication may be implemented on different schemata; tomorrow - based on finer parameters. I think it's best to prepare for the inevitable future. Besides, <strong>STOP SLAVE INCONSISTENT</strong> is such an easy feature to implement!</p>
<h4>Slave analysis</h4>
<p>I also had a long time feature request. While writing management tools, I realized it is difficult to learn the topology of a replication environment by simple interrogation. If you connect to a master, you can either issue <strong>SHOW PROCESSLIST</strong> to detect the slaves, or <strong>SHOW SLAVE HOSTS</strong>.</p>
<p>The former does not tell you the port on which the slaves are listening. The latter requires that you <a href="http://code.openark.org/blog/mysql/the-importance-of-report_host-report_port">configure <strong>report_host</strong> and <strong>report_port</strong> properly</a>.</p>
<p>What I would like to see is a <strong>SHOW SLAVES STATUS</strong> command (or similar <strong>INFORMATION_SCHEMA</strong> table) <em>on the master</em>. Such that it lists connected slaves, one per row, with the following details:</p>
<ul>
<li><strong>Slave_host</strong> (this is easy, already exists in <strong>SHOW PROCESSLIST</strong>)</li>
<li><strong>Slave_port</strong> (slave should send this kind of information to master upon first connect)</li>
<li><strong>Slave_master_log_file</strong> (last log file requested by slave)</li>
<li><strong>Slave_master_log_pos</strong> (last log pos requested by slave)</li>
<li><strong>Slave_seconds_behind_master</strong> (slave should report this upon each request)</li>
<li><strong>Slave_server_id</strong> (slave should send this upon connect)</li>
</ul>
<p>By reading <strong>Slave_host</strong>, <strong>Slave_port</strong> &amp; <strong>Slave_server_id</strong>, it makes it easy for us to build replication topology. It's a single operation to detect a master's slaves. It takes recursive steps to build entire topology.</p>
<p>By reading the <strong>Slave_master_log_file</strong>, <strong>Slave_master_log_pos</strong>, we can easily determine that binary logs <em>up to that point</em> have already been written to the slave's relay log. This makes it easier to decide how to purge master logs. <strong>Slave_seconds_behind_master </strong>completes the replication picture.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-iii-bof-replication/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Impressions from MySQL conf 2011, part II</title>
		<link>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-ii</link>
		<comments>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-ii#comments</comments>
		<pubDate>Sun, 17 Apr 2011 12:02:35 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqlconf]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=3506</guid>
		<description><![CDATA[This post continues my impressions from some of the talks I've been to. Wednesday Replication for Availability &#38; Durability with MySQL and Amazon RDS / Grant McAlister (Amazon.com) Grant McAlister described the Amazon RDS offer, which provides with a pre-installed MySQL servers, and supports auto management of replication and high availability. He desribed asynchronous vs. [...]]]></description>
			<content:encoded><![CDATA[<p>This post continues my impressions from some of the talks I've been to.</p>
<h4>Wednesday</h4>
<ul>
<li><a href="http://en.oreilly.com/mysql2011/public/schedule/detail/19732">Replication for Availability &amp; Durability with MySQL and Amazon RDS</a> / <em>Grant McAlister (Amazon.com)</em></li>
</ul>
<p>Grant McAlister described the Amazon RDS offer, which provides with a pre-installed MySQL servers, and supports auto management of replication and high availability. He desribed asynchronous vs. synchronous replication, logical (i.e log shipping &amp; replaying) vs. physical replication.</p>
<p>Amazon implement physical replication by shipping data pages to a secondary, standby server, located at a different availability zone. A transaction does not complete before pages are shipped to, and acknowledged by standby machine. The standby machine writes data pages in parallel. This is similar in concept to DRBD. RDS uses InnoDB, which promises data integrity in case of power/network failure.</p>
<p>The fail over process, in case active master has crashed, involves blocking access to the active master, starting MySQL on standby master (promoted to be active), while changing elastic IP for master to point to promoted master. McAlister said this process takes a few minutes. Live demo resulted at about <strong>4</strong> minutes.<span id="more-3506"></span></p>
<p>Actually, the recovery time is affected by the InnoDB transaction log. In replying my question, McAlister explained that the InnoDB trasaction log is not under the user's control. It is managed by Amazon. You can't just set it to <strong>512MB</strong>.</p>
<p>Otherwise RDS also offers normal, asynchronous replication, so as to allow for read scale out.</p>
<p>I later on spotted Grant McAlister in the expo hall, and had the chance to ask a few more questions. Here is a very brief summary of a few Q&amp;A items:</p>
<blockquote><p><em>Q: Today, EBS performance is unexpected, since other users may be using the disk. Will you allow RDS customers to have dedicated EBS volumes?</em></p>
<p>A: We're working towards making this work.</p>
<p><em>Q: In many cases I've seen, EBS is very slow storage. People do software RAID over several EBS volumes to boost performance, but then loose the ability to do consistent snapshots. Any solution for that?</em></p>
<p>A: We get so much of that! We're working to change this as well, in time.</p>
<p><em>Q: Does an RDS user get access to the DB machine?</em></p>
<p>A: No. Though you do get the API for monitoring it.</p>
<p><em>Q: How much control do I get over the MySQL configuration file?</em></p>
<p>A: You have control over most of the settings; a few are under  Amazon's control (e.g. control over innodb transaction log file size)</p>
<p><em>Q: How far have you went into changing MySQL code?</em></p>
<p>A: A little. Not far enough that compatibility breaks. People need  compatibility. We also need to be quickly able to provide with new  versions.</p>
<p><em>Q: If I need to upgrade MySQL version, does RDS provide with the mechanism to first upgrade slave, then do fail-over?</em></p>
<p>A: No. We just upgrade a server (i.e. master) in place.</p>
<p><em>Q: Any integration of collateral tools?</em></p>
<p>A: No. You have access to the database; you are free to run your own tools.</p></blockquote>
<p>I hope my memory serves me correctly in recalling the above conversation.</p>
<ul>
<li><a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17129">The Aspersa System Administrator's Toolkit</a> / <em>Baron Schwartz (Percona Inc.)</em></li>
</ul>
<p>Baron presented with some of Aspersa's tools: <em>ioprofile</em>, <em>diskstats</em>, <em>summary</em>, <em>mysql-summary</em>, <em>collect</em>, <em>stalk</em> &amp; <em>sift</em>.</p>
<p>The presentation was accompanied with demos, wither using live data or prepared, real world data. Not surprisingly, Baron came up with real customer cases, where the "standard" tools gave little help in way of analyzing the problem (e.g. <em>iostat</em> not separating read and write counters). Apparently this is a <em>bash/sec/awk</em> based toolkit, with <em>bash</em> unit tests. Cool!</p>
<p>Some of the tools are self explanatory; others require deeper  understanding of either OS internals or of the patterns one should be  looking for. Lot's to study.</p>
<p>Baron writes tools based on extensive experience of consulting &amp; performance optimization work; not only of his own, but of Percona's entire team. When he says "this tool saves a lot of analysis time" or "with this tool we were able to analyze a problem we were unable to, or found it very hard to, solve with existing tools", you'd better check it out. In fact, I noticed the audience laptop usage during this talk was very low. There was a lot of attention in the crowd.</p>
<ul>
<li><a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17137">Automatic Failover: Design and Reality</a> / <em>Ian Gulliver (Google), Eric Rollins (Google)</em></li>
</ul>
<p>This session described the replication topology and failover design on one (undisclosed) of Google's products, using MySQL. Using XXX shards of MySQL, that is, each with XX servers in replication topology (we are asked to do the math ourselves).</p>
<p>Ian &amp; Eric described the logic behind their sharding, scale out &amp; failover process, and the sad reality. Apparently shards are implemented on many levels: multiple MySQL instances on single machine, multiples schemata in each MySQL instances, sharded data within schema. For scale-out, they prefer adding new machines, then distributing MySQL instances between them. There is nothing too complicated about this, once we are past syncing masters &amp; slaves.</p>
<p>Speaking of which, their preferred way of taking snapshots is MySQL shutdown, then full file system copy. They do not want to bother with licenses. With XX servers, it should be fairly easy to take one down for backup/copy.</p>
<p>Otherwise they may be splitting schemata between servers, or, at the worst, managing the shards. An interesting note was that Google is known to use crappy hardware, which makes for a lot of hardware failures. Apparently, their solution needs to work a lot.</p>
<p>A very nice notion they presented is the empty shard. They have an empty shard, with complete replication topology, on which version upgrades or otherwise tests are done. Very nice! (Forgive me if this is plain obvious to you).</p>
<p>The logic part detailed the expected <em>"which slave to promote"</em>, <em>"how to modify the hierarchy"</em> etc. procedures.</p>
<p>Besides being very interesting in itself, the session also posed the interesting notion, that most everyone (and in particular the BIG companies), use plain old MySQL replication for both scale out &amp; high availability. I think this is an important notion.</p>
<ul>
<li><a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17170">No Silver Bullet - The Slightly Less Painful Way to Sharding</a> / <em>Gwen Shapira (Pythian)</em></li>
</ul>
<p>I've heard a lot about Gwen Shapira before, and this is the first time I heard her speak. I enjoyed her session. Gwen presented a vendor-neutral session on sharding. There were a lot of "how not to shard" notes. These were based either on her very early experience, before the word "sharding" came to be known, as well as recent experiences. The stories and examples were instructive and amusing (lot's of "war stories"). She presented with general guidelines on proper sharding, but, as the title suggests, presented no silver bullet. Actually, she presented with counter cases where a non-desirable sharding solution for one company, may yet be viable for another.</p>
<ul>
<li><a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17155">openark-kit: MySQL utilities for everyday use</a> / <em>myself</em></li>
</ul>
<p>I went to see my own talk that day <img src='http://code.openark.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . I was honored to have good audience and I'm thankful for their attention. I gained good participation, and a couple feature requests/bug reports.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-ii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Impressions from MySQL conf 2011, Part I</title>
		<link>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-i</link>
		<comments>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-i#comments</comments>
		<pubDate>Fri, 15 Apr 2011 02:10:31 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqlconf]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=3485</guid>
		<description><![CDATA[Having the conference behind now, I'm reviewing some of my impressions and of sessions I attended. The people To begin with, this conference was a big success for me, in many respects. The sessions were great (more on that later), but of course, meeting with new people and with familiar people, was the more important [...]]]></description>
			<content:encoded><![CDATA[<p>Having the conference behind now, I'm reviewing some of my impressions and of sessions I attended.</p>
<h4>The people</h4>
<p>To begin with, this conference was a big success for me, in many respects. The sessions were great (more on that later), but of course, meeting with new people and with familiar people, was the more important part.</p>
<p>I live in Israel, which makes travel to the US very long and expensive. Apparently not many MySQL community members in my neighborhood, so I don't ever get to meet the faces. The conference makes that possible. I did not participate in all community events, as I had scheduled calls with little girls who miss their father. And I was very much under jet lag. And I have more excuses on demand.</p>
<p>But I did get to meet known faces; people I only knew by name; unfamiliar people who were familiar with my work (fun!); and otherwise just (ex-)strangers.</p>
<h4>The sessions</h4>
<p>There was a variety of sessions to choose from. Many times, I had to pick one out of two or three sessions I was interested in, running at the same time. Not all sessions appeal to one in the same way, but looking back, I find there were a lot of GOOD sessions I attended. I mostly like sessions that are very technical; preferably drilling into details of algorithms &amp; implementation.<span id="more-3485"></span></p>
<p>I wish to review some of the sessions I attended. I can't possibly review them all, so my apologies to those I left out.</p>
<h4>Monday</h4>
<ul>
<li><a href="http://en.oreilly.com/mysql2011/public/schedule/detail/19268">Learn how to cure MySQL replication deprivation with Tungsten!</a> / <em>Robert Hodges (Continuent.com), Edward Archibald (Continuent)</em></li>
</ul>
<p>This is actually the first time I learned about the internal details of Tungsten. Robert, CEO of Continuent &amp; original developer of Tungsten, did an excellent job in reviewing the various aspects of Tungsten. But rather than being a promotional talk, this was a purely technical tutorial.</p>
<p>So it was interesting to understand the difficulties in building Tungsten, at least on the MySQL part. For example, the Tungsten replicator must do its own filtering of events based on server id, since, although a replicating slave <em>knows</em> how to ignore circular queries issues by itself, there is no client API to do so; you can't "send over" the server id along with a query and expect the server to ignore it.</p>
<p>As seems to be the current and emerging paradigm, parallel replication is possible by paralleling queries from different schemata. But apparently Continuent seem to want to change that. That is, there's nothing that strictly forces that this must be the paradigm; it's just the current implementation.</p>
<p>Giuseppe was in charge of live demos, and has shown stuff like slave disconnect, fail over, multi-master replication etc. Edward Archibald later presented a cluster-like solution based on Tungsten and a replication aware connection proxy.</p>
<p>There was plenty of time for asking questions. Interesting technical issues were discussed and answered. It was also stated very clearly what Tungsten does <em>not</em> do for you, or when it may actually be the gun with which you shoot yourself in the foot. Good talk!</p>
<h4>Tuesday</h4>
<ul>
<li><a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17134">MQL-to-SQL: a JSON-based Puery Language for  RDBMS Access from AJAX Applications</a> / <em>Roland Bouman (XCDSQL Solutions / Strukton Rail)</em></li>
</ul>
<p>Roland is now passionate about finding an easier query language for web applications to use. Rather than SQL, he suggests using MQL (created by <a href="http://www.freebase.com/" target="fb">Freebase</a>). MQL uses JSON (-like) syntax to describe both queries (requests) and result sets (responses). I won't go into the details since Roland himself laid them out <a href="http://rpbouman.blogspot.com/2011/01/mql-to-sql-json-based-query-language.html">on his blog</a>.</p>
<p>As usual with Roland, his session is well thought of. He describes an elegant, appealing syntax. In my opinion, MQL is an intuitive language. It is easily comprehensible by both DBAs and developers. Possibly by my mother.</p>
<p>However Roland goes further and offers his <a href="http://code.google.com/p/mql-to-sql">MQL-to-SQL</a>, an open source implementation of a translation tool between the two languages. In his presentation, he demonstrated some simple and some not-so-simple queries, generated by MSQL, translated to SQL, the results of which translated back to MQL.</p>
<p>MQL is not an all-purpose solution. You don't do analytics with MQL, but it does seem to answer some problems that other ORMs (e.g. Django) are, to the best of my knowledge, unable to perform in convenient manner (that is, without reverting to some SQL-like syntax).</p>
<h4>Special thanks</h4>
<p>Thanks to Giuseppe Maxia, when on <a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17381">MySQL Replication Advanced Techniques</a> he presented some of the <a href="http://code.openark.org/forge/openark-kit">openark kit</a> tools, and, having located me in the crowd, invited me to speak.</p>
<h4>To be continued</h4>
<p>I need to prepare for my flight. Will probably publish next part(s) once back home. Hope to see you all next year!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/impressions-from-mysql-conf-2011-part-i/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Slides for &quot;openark-kit: MySQL utilities for everyday use&quot;</title>
		<link>http://code.openark.org/blog/mysql/slides-for-openark-kit-mysql-utilities-for-everyday-use</link>
		<comments>http://code.openark.org/blog/mysql/slides-for-openark-kit-mysql-utilities-for-everyday-use#comments</comments>
		<pubDate>Wed, 13 Apr 2011 22:16:20 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqlconf]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[openark kit]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=3480</guid>
		<description><![CDATA[Today I have delivered my talk, openark-kit: MySQL utilities for everyday use, at the O'REILLY  MySQL Conference 2011. The slides are uploaded to the O'Reilly site, and I'm attaching them here as well. Feel free to download the PDF: openark-kit-mysqlconf11.pdf I wish to thank all who attended my talk! &#160;]]></description>
			<content:encoded><![CDATA[<p>Today I have delivered my talk, <a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17155">openark-kit: MySQL utilities for everyday use</a>, at the <em>O'REILLY  MySQL Conference 2011</em>.</p>
<p>The slides are uploaded to the O'Reilly site, and I'm attaching them here as well. Feel free to download the PDF: <a href="http://code.openark.org/blog/wp-content/uploads/2011/04/openark-kit-mysqlconf11.pdf">openark-kit-mysqlconf11.pdf</a></p>
<p>I wish to thank all who attended my talk!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/slides-for-openark-kit-mysql-utilities-for-everyday-use/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Would you be my friend on mysqlconf? (tempting offer inside)</title>
		<link>http://code.openark.org/blog/mysql/would-you-be-my-friend-on-mysqlconf-tempting-offer-inside</link>
		<comments>http://code.openark.org/blog/mysql/would-you-be-my-friend-on-mysqlconf-tempting-offer-inside#comments</comments>
		<pubDate>Wed, 09 Mar 2011 06:22:37 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[mysqlconf]]></category>
		<category><![CDATA[openark kit]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=3262</guid>
		<description><![CDATA[I'm still throwing papers to the trash and starting all over, fixing, rewriting and improving my talk at mysqlconf 2011, where I will be presenting openark-kit: MySQL utilities for everyday use. However I've got something up my sleeve: a benefit many can enjoy, that'll make me a respectful, popular and sought after speaker. While others [...]]]></description>
			<content:encoded><![CDATA[<p>I'm still throwing papers to the trash and starting all over, fixing, rewriting and improving my talk at <a href="http://www.mysqlconf.com/">mysqlconf 2011</a>, where I will be presenting <a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17155">openark-kit: MySQL utilities for everyday use</a>.</p>
<p>However I've got something up my sleeve: a benefit many can enjoy, that'll make me a respectful, popular and sought after speaker. While others may try and lure you with such <em>earthly</em> temptations as a <strong>20%</strong> off discount, I am in a position to offer you a more <em>spiritual</em> gift: my friendship!</p>
<p>See, if you become my friend, I can offer you a <strong>25%</strong> discount on the MySQL conference. Yes, that's <strong>5%</strong> more than my competitors! The only thing I ask in return is that you be my friend (hey, it's called "friends of speaker"). Not like a FB virtual friend, but a <em>real</em> friendship! One where you can buy me <em>beer</em> or <em>dinner</em>!</p>
<p>If you agree to such humane terms, I will be in the position to let you know that all you have to do is fill in <strong>﻿﻿﻿mys11fsd</strong> in your registration form.</p>
<p>No, wait! I let it slip! Rewrite: You should fill in <del><strong>﻿﻿﻿mys11fsd </strong></del><em>[will only tell you this password after your commitment to a beer]</em> in your registration form.</p>
<p><em>Oh no, not again! </em></p>
<p>Don't use <a href="https://en.oreilly.com/mysql2011/public/regwith/mys11fsd"><strong>﻿﻿﻿mys11fsd</strong></a> without talking to me first... You're not supposed to... <em>Oh, my beer!</em></p>
<p><em>Argghhh!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/would-you-be-my-friend-on-mysqlconf-tempting-offer-inside/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Speaking at the O&#039;Reilly MySQL Conference 2011</title>
		<link>http://code.openark.org/blog/mysql/speaking-at-the-oreilly-mysql-conference-2011</link>
		<comments>http://code.openark.org/blog/mysql/speaking-at-the-oreilly-mysql-conference-2011#comments</comments>
		<pubDate>Mon, 03 Jan 2011 16:53:20 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqlconf]]></category>
		<category><![CDATA[openark kit]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=3145</guid>
		<description><![CDATA[I'm very pleased and humbled to announce that my submission to the upcoming O'Reilly MySQL Conference, April 2011, has been accepted. I will present a 45 minute session titled openark-kit: MySQL utilities for everyday use. In this session, I will present some of the tools in the openark kit. We'll discuss some limitations of the [...]]]></description>
			<content:encoded><![CDATA[<p>I'm very pleased and humbled to announce that my submission to the upcoming O'Reilly MySQL Conference, April 2011, has been accepted.</p>
<p>I will present a 45 minute session titled <a href="http://en.oreilly.com/mysql2011/public/schedule/detail/17155"><strong>openark-kit: MySQL utilities for everyday use</strong></a>.</p>
<p>In this session, I will present some of the tools in the <em>openark kit</em>. We'll discuss some limitations of the MySQL server, and how openark kit tools overcome those limitations and provide with solutions to common maintenance and audit problems.</p>
<p>This will be a technical session and will discuss various topics of the MySQL server: security, execution plans, replication, triggers and more. I do not intend to discuss all tools, nor to cover the various options. Instead, I'll present the "<em>behind the scenes</em>", show <em>why the tools work</em>, present common problems and typical use case.</p>
<p>This will be the first time I present at the MySQL Conference (or any conference outside Israel, for that matter). I hope to have a good session. As extra measure of safety, I'll bring along a couple basketballs; if the sun shines, we can all go outside and have a good time!</p>
<p>The idea to submit this talk (credit Roland Bouman) has given me the inspiration to put effort in making a new release with new and updated tools. So this talk is already a success as far as I'm concerned.</p>
<p>Hope to see you there!</p>
<p>[<strong>PS</strong> shameless plug: <a href="http://code.openark.org/forge/openark-kit">openark kit</a>.]</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/speaking-at-the-oreilly-mysql-conference-2011/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>What I look forward to hear on &quot;State of the Dolphin&quot;, 2010</title>
		<link>http://code.openark.org/blog/mysql/what-i-look-forward-to-hear-on-state-of-the-dolphin-2010</link>
		<comments>http://code.openark.org/blog/mysql/what-i-look-forward-to-hear-on-state-of-the-dolphin-2010#comments</comments>
		<pubDate>Mon, 01 Mar 2010 10:42:52 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqlconf]]></category>
		<category><![CDATA[Opinions]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=1999</guid>
		<description><![CDATA[Though most probably I won't be there in person, here's what I expect to hear from Edward Screven, Oracle, on the State of the Dolphin keynote, coming MySQL Conference &#38; Expo. I'm under the assumption that no shocking news are delivered. That is, that for the near future, it's business as usual for MySQL. Last [...]]]></description>
			<content:encoded><![CDATA[<p>Though most probably I won't be there in person, here's what I expect to hear from <a href="http://en.oreilly.com/mysql2010/public/schedule/speaker/78864">Edward Screven</a>, Oracle, on the <a href="http://en.oreilly.com/mysql2010/public/schedule/detail/12440">State of the Dolphin</a> keynote, coming MySQL Conference &amp; Expo.</p>
<p>I'm under the assumption that no shocking news are delivered. That is, that for the near future, it's business as usual for MySQL.</p>
<p>Last year's great message, delivered by Karen Padir, was <em>"more community"</em>. More community participation, more community patches. Looking back, I'm not sure I saw that coming true. The 5.4 version was announced at that same conference, and was criticized for being community-oriented yet community-hidden. The latest 5.5 milestones announcement took everyone by surprise again. Ideas from Google patches were incorporated into 5.5M2. but, to the best of my understanding, no community patch was delievered.</p>
<p>I have both <a href="http://code.openark.org/blog/mysql/in-favour-of-a-milestone-based-release-model">congratulated and expressed my desire</a> that community took greater part in this.</p>
<h4>So what am I looking forward to hear?</h4>
<ol>
<li>Like everyone else, the general plans Oracle holds for MySQL. Again, I'm not expecting shocking news here.</li>
<li>The expected roadmap for MySQL, technically speaking. I don't actually know if there is a roadmap right now.</li>
<li>The intended role for the MySQL community. Frankly, it would be just fine with me if Oracle were to say: "we will not accept community patches", and that would be the end of it. That's fine, because it's their right, and it would be an honest announcement. Naturally, I'll be much happier to hear "we will incorporate the best 20 community patches withing the next three days". Somewhere in between, I'll be really satisfied with a clear explanation of how Oracle sees the community, and how it would like to cooperate with it. Will it share the development plan with the community? Will it allow the community to have a say about what goes in or not?</li>
</ol>
<p><span id="more-1999"></span>I realize this must all be very pressing, what with the acquisition; big new company; new rules; new bosses; new things to learn. But I do believe it's in Oracle's best interest (and obligation) to speak up their mind on MySQL in relation to the community.</p>
<p>The situation where the users (not the community) don't know what's planned for MySQL on the technical level, what's the next milestone, when the 5.4/5.5 versions are scheduled to be released, what will happen with all those features which were supposed to be incorporated into 5.2/6.0 -- had better be done with quickly.</p>
<p>My congratulations to the MySQL team on the finalization of the acquisition, and best wishes to a smooth and successful merge into Oracle.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/what-i-look-forward-to-hear-on-state-of-the-dolphin-2010/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQL Conference: what&#039;s in a name?</title>
		<link>http://code.openark.org/blog/mysql/mysql-conference-whats-in-a-name</link>
		<comments>http://code.openark.org/blog/mysql/mysql-conference-whats-in-a-name#comments</comments>
		<pubDate>Mon, 27 Apr 2009 11:14:13 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqlconf]]></category>
		<category><![CDATA[Opinions]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=789</guid>
		<description><![CDATA[This is just something that I realized this morning. There were some talks about how the "MySQL Users Conference &#38; Expo" was renamed to "MySQL Conference &#38; Expo" - thereby omitting the "Users" part. The talk was something like "So where are we, the users, in this story?" But what I've just recalled was a [...]]]></description>
			<content:encoded><![CDATA[<p>This is just something that I realized this morning. There were some talks about how the "MySQL Users Conference &amp; Expo" was renamed to "MySQL Conference &amp; Expo" - thereby omitting the "Users" part. The talk was something like "So where are we, the users, in this story?"</p>
<p>But what I've just recalled was a discussion (was it previous year, or the one before that?) comparing the "PostgreSQL Conference" and the "MySQL Users Conference", as it was named back then. In that discussion, the PostgreSQL people were bashing MySQL, saying that the "PostgreSQL Conference" was all about the database and whatever was around it, whilst the "MySQL Users Conference" clearly stated that the attendees were "just users", not like real participants or members.</p>
<p><span id="more-789"></span>As I recall, it was a heat debate (and I apologize for not linking). I thought it was just semantics.</p>
<p>Anyway, here we are at 2009, there is no "Users", it's just like in PostgreSQL, and I still think it's just semantics.</p>
<p>I think a name can mean whatever you want it to mean. It's best to judge by actions, which is an altogether different thing.</p>
<p>I do not hold a position this way or the other.</p>
<p>This concludes my postings with regard to the MySQL (Users?) Conference &amp; Expo 2009, which were non-technical. I'll keep to technical stuff in the future, I promise. I enjoyed the conference very much, a big applaude to the presenters and the organizers, and to the many friendly people who attended!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/mysql-conference-whats-in-a-name/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

