{"id":2353,"date":"2011-04-12T17:17:22","date_gmt":"2011-04-12T07:17:22","guid":{"rendered":"http:\/\/www.flamingspork.com\/blog\/?p=2353"},"modified":"2011-04-12T17:17:22","modified_gmt":"2011-04-12T07:17:22","slug":"innodb-and-memcached","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2011\/04\/12\/innodb-and-memcached\/","title":{"rendered":"innodb and memcached"},"content":{"rendered":"<p>I had a quick look at the source tree (I haven&#8217;t compiled it, just read the source &#8211; that&#8217;s what I do. I challenge any C\/C++ compiler to keep up with my brain!) that&#8217;s got a tarball up on labs.mysql.com for the memcached interface to innodb. A few quick thoughts:<\/p>\n<ul>\n<li>Where&#8217;s the Bazaar tree on launchpad? I hate pulling tarballs, following the dev tree is much more interesting from a tech perspective (especially for early development releases). I note that the <a href=\"lp:~mysql\/mysql-server\/mysql-cluster-7.2-labs-memcached\">NDB memcached <\/a>stuff is up on launchpad now, so yay there. I would love it if the InnoDB team in general was much more open with development, especially with having source trees up on launchpad.<\/li>\n<li>It embeds a copy of the memcached server engines branch into the MySQL tree. This is probably the correct way to go. There is no real sense in re-implementing the protocol and network stack (this is about half what memcached is anyway).<\/li>\n<li>The copy of the memcached engine branch seems to be a few months old.<\/li>\n<li>The current documentation appears to be the source code.<\/li>\n<li>The innodb_memcached plugin embeds a memcached server using an API to InnoDB inside the MySQL server process (basically so it can access the same instance of InnoDB as a running MySQL server).<\/li>\n<li>There&#8217;s a bit of something that kind-of looks similar to the Embedded InnoDB (now HailDB) API being used to link InnoDB and memcached together. I can understand why they didn&#8217;t go through the MySQL handler interface&#8230; this would be bracing to say the least to get correct. InnoDB APIs, much more likely to have fewer bugs.<\/li>\n<li>If this accepted JSON and spat it back out&#8230; how fast would MongoDB die? weeks? months?<\/li>\n<li>The above dot point would be a lot more likely if adding a column to an InnoDB table didn&#8217;t involve epic amounts of IO.<\/li>\n<li>I&#8217;ve been wanting a good memcached protocol inside Drizzle, we have ,of course, focused on stability of what we do have first. That being said&#8230;. upgrade my flight home so I can open a laptop&#8230; probably be done well before I land&#8230;.. (assuming I don&#8217;t get to it in the 15 other awesome things I want to hack on this week)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>I had a quick look at the source tree (I haven&#8217;t compiled it, just read the source &#8211; that&#8217;s what I do. I challenge any C\/C++ compiler to keep up with my brain!) that&#8217;s got a tarball up on labs.mysql.com &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2011\/04\/12\/innodb-and-memcached\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1,14],"tags":[257,367,628],"class_list":["post-2353","post","type-post","status-publish","format-standard","hentry","category-general","category-mysql","tag-innodb","tag-memcached","tag-mysql"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-BX","jetpack-related-posts":[{"id":3291,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/04\/18\/where-are-they-now-mysql-storage-engines\/","url_meta":{"origin":2353,"position":0},"title":"Where are they now: MySQL Storage Engines","author":"Stewart Smith","date":"2013-04-18","format":false,"excerpt":"There was once a big hooplah about the MySQL Storage Engine Architecture and how it was easy to just slot in some other method of storage instead of the provided ones. Over the years I've repeatedly mentioned how this wasn't really the case and that it was remarkably non trivial.\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2147,"url":"https:\/\/www.flamingspork.com\/blog\/2010\/09\/30\/what-was-innodb\/","url_meta":{"origin":2353,"position":1},"title":"What was InnoDB+?","author":"Stewart Smith","date":"2010-09-30","format":false,"excerpt":"Yes, I said InnoDB+ with a plus sign at the end (also see the first comment here). Please note that this blog post is only based on public information. It has absolutely nothing in it that I only could have learned from back when I worked at Sun or MySQL\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2145,"url":"https:\/\/www.flamingspork.com\/blog\/2010\/09\/29\/lca-miniconf-call-for-papers-data-storage-databases-filesystems-cloud-storage-sql-and-nosql\/","url_meta":{"origin":2353,"position":2},"title":"LCA Miniconf Call for Papers: Data Storage: Databases, Filesystems, Cloud Storage, SQL and NoSQL","author":"Stewart Smith","date":"2010-09-29","format":false,"excerpt":"This miniconf aims to cover many of the current methods of data storage and retrieval and attempt to bring order to the universe. We're aiming to cover what various systems do, what the latest developments are and what you should use for various applications. We aim for talks from developers\u2026","rel":"","context":"In &quot;drizzle&quot;","block_context":{"text":"drizzle","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/drizzle-work-et-al\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":3312,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/04\/26\/a-few-notes-on-innodb-in-mysql-5-7-1\/","url_meta":{"origin":2353,"position":3},"title":"A few notes on InnoDB in MySQL 5.7.1","author":"Stewart Smith","date":"2013-04-26","format":false,"excerpt":"I've started poking around the MySQL 5.7.1 source tree (although just from tarball as I don't see a BZR tree yet). I thought I'd share a few thoughts: InnoDB temporary tables. Not REDO logged. What does this mean? It's a huge step in removing the dependency on MEMORY and MyISAM\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1612,"url":"https:\/\/www.flamingspork.com\/blog\/2009\/04\/16\/drizzle-low-hanging-fruit\/","url_meta":{"origin":2353,"position":4},"title":"Drizzle low-hanging-fruit","author":"Stewart Smith","date":"2009-04-16","format":false,"excerpt":"We have an ongoing Drizzle milestone called low-hanging-fruit. The idea is that when there's something that\u00c2\u00a0 could be done, but we don't quite have the time to do it immediately, we'll add a low-hanging-fruit blueprint so that people looking to get a start on the codebase and contributing code to\u2026","rel":"","context":"In &quot;code&quot;","block_context":{"text":"code","link":"https:\/\/www.flamingspork.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":973,"url":"https:\/\/www.flamingspork.com\/blog\/2008\/01\/11\/memberdb-speed-improvements\/","url_meta":{"origin":2353,"position":5},"title":"MemberDB speed improvements","author":"Stewart Smith","date":"2008-01-11","format":false,"excerpt":"So I finally installed the xdebug PHP extension and started doing some performance analysis of MemberDB using xdebug and kcachegrind. The upshot of which is a number of commits to the bzr tree that dramatically improve performance in several key areas. The answer? Caching. I'm not even talking using memcached\u2026","rel":"","context":"In &quot;linux-aus&quot;","block_context":{"text":"linux-aus","link":"https:\/\/www.flamingspork.com\/blog\/category\/linux-aus\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/2353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/comments?post=2353"}],"version-history":[{"count":1,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/2353\/revisions"}],"predecessor-version":[{"id":2355,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/2353\/revisions\/2355"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=2353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=2353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=2353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}