{"id":3202,"date":"2016-04-08T18:07:34","date_gmt":"2016-04-08T10:07:34","guid":{"rendered":"http:\/\/www.bytebot.net\/blog\/?p=3202"},"modified":"2016-04-11T22:52:33","modified_gmt":"2016-04-11T14:52:33","slug":"fosdem-2016-notes","status":"publish","type":"post","link":"http:\/\/www.bytebot.net\/blog\/archives\/2016\/04\/08\/fosdem-2016-notes","title":{"rendered":"FOSDEM 2016 notes"},"content":{"rendered":"<p>While being on the <a href=\"http:\/\/www.mysqlandfriends.eu\/committee\/\">committee<\/a> for the <a href=\"http:\/\/www.mysqlandfriends.eu\/\">FOSDEM MySQL &amp; friends devroom<\/a>, I didn&#8217;t speak at that devroom (instead I spoke at the distributions devroom). But when I had time to pop in, I did take some notes on sessions that were interesting to me, so here are the notes. I really did enjoy Yoshinori Matsunobu&#8217;s session (out of the devroom) on RocksDB and MyRocks and I highly recommend you to <a href=\"https:\/\/fosdem.org\/2016\/schedule\/event\/facebook\/\">watch the video<\/a> as the notes can&#8217;t be very complete without the great explanation available in the slide deck. Anyway there are <a href=\"https:\/\/fosdem.org\/2016\/schedule\/track\/mysql_and_friends\/\">videos from the MySQL and friends devroom<\/a>.<\/p>\n<h1>MySQL &amp; Friends Devroom<\/h1>\n<h3>MySQL Group Replication or how good theory gets into better practice &#8211; Tiago Jorge<\/h3>\n<ul>\n<li>Multi-master <em>update everywhere<\/em> with built-in <em>automatic distributed recovery, conflict detection and group membership<\/em><\/li>\n<li>Group replication added 3 <code>PERFORMANCE_SCHEMA<\/code> tables <\/li>\n<li>If a server leaves the group, the others will be automatically informed (either via a crash or if you execute <code>STOP GROUP REPLICATION<\/code>)<\/li>\n<li>Cloud friendly, and it is self-healing. Integrated with server core via a well-defined API. GTIDs, row-based replication, <code>PERFORMANCE_SCHEMA<\/code>. Works with MySQL Router as well.<\/li>\n<li>Multi-master update everywhere. Conflicts will be detected and dealt with, via the first committer wins rule. Any 2 transactions on different servers can write to the same tuple.<\/li>\n<li>labs.mysql.com \/ mysqlhighavailability.com <\/li>\n<li>Q: When a node leaves a group, will it still accept writes? A: If you leave voluntarily, it can still accept writes as a regular MySQL server (this needs to be checked)<\/li>\n<li>Online DDL is not supported<\/li>\n<li>Checkout the <a href=\"https:\/\/fosdem.org\/2016\/schedule\/event\/mysql_group_repl\/\">video<\/a><\/li>\n<\/ul>\n<h3>ANALYZE for statements &#8211; Sergei Petrunia<\/h3>\n<ul>\n<li>a lot like EXPLAIN ANALYZE (in PostgreSQL) or PLAN_STATISTICS (in Oracle)<\/li>\n<li>Looks like explain output with execution statistics<\/li>\n<li><a href=\"https:\/\/fosdem.org\/2016\/schedule\/event\/analyze_mariadb\/\">slides and video<\/a><\/li>\n<\/ul>\n<h3>Preparse Query Rewrite Plugins &#8211; Sveta Smirnova \/ Martin Hansson<\/h3>\n<ul>\n<li>martin.hansson@oracle.com<\/li>\n<li>Query rewwriting with a proxy might be too complex, so they thought of doing it inside the server. There is a pre-parse (string-to-string) and a post-parse (parse tree) API. Pre-parse: low overhead, but no structure. Post-parse: retains structure, but requires re-parsing (no destructive editing), need to traverse parse tree and will only work on select statements<\/li>\n<li>Query rewrite API builds on top of teh Audit API, and then you&#8217;ve got the pre-parse\/post-parse APIs on the top that call out to the plugins<\/li>\n<li><a href=\"https:\/\/fosdem.org\/2016\/schedule\/event\/rewrite_plugin\/\">video<\/a><\/li>\n<\/ul>\n<h3>Fedora by the Numbers &#8211; Remy DeCausemaker<\/h3>\n<ul>\n<li>Over 200,000 downloads a month for Fedora (at least this is where they could installer downloads). Upgrades don&#8217;t need an installer download though!<\/li>\n<li><a href=\"https:\/\/github.com\/fedora-infra\/fedora-stats-tools\">https:\/\/github.com\/fedora-infra\/fedora-stats-tools<\/a><\/li>\n<\/ul>\n<h3>MyRocks: RocksDB Storage Engine for MySQL (LSM Databases at Facebook) &#8211; Yoshinori Matsunobu<\/h3>\n<ul>\n<li>SSD\/Flash is getting affordable but MLC Flash is still expensive. HDD has large capacity but limited IOPS (reducing rw IOPS is very important and reducing write is harder). SSD\/Flash has great read iops but limited space and write endurance (reducing space here is higher priority)<\/li>\n<li>Punch hole compression in 5.7, it is aligned to the sector size of your device. Flash device is basically 4KB. Not 512 bytes. So you&#8217;re basically wasting a lot of space and the compression is inefficient <\/li>\n<li>LSM tends to have a read penalty compared to B-Tree, like InnoDB. So a good way to reduce the read penalty is to use a Bloom Filter (check key may exist or not without reading data, and skipping read i\/o if it definitely does not exist)<\/li>\n<li>Another penalty is for delete. It puts them into tombstones. So there is the workaround called SingleDelete.<\/li>\n<li>LSMs are ideal for write heavy applications<\/li>\n<li>Similar features as InnoDB, transactions: atomicity, MVCC\/non-locking consistent read, read committed repeatable read (PostgreSQL-style), Crash safe slave and master. It also has online backup (logical backup by mysqldump and binary backup by myrocks_hotbackup).<\/li>\n<li>Much smaller space and write amplification compared to InnoDB<\/li>\n<li>Reverse order index (Reverse Column Family). SingleDelete. Prefix bloom filter. Mem-comparable keys when using case sensitive collations. Optimizer statistics for diving into pages.<\/li>\n<li>RocksDB is great for scanning forward but ORDER BY DESC queries are slow, hence they use reverse column families to make descending scan a lot faster<\/li>\n<li><a href=\"https:\/\/fosdem.org\/2016\/schedule\/event\/facebook\/\">watch the video<\/a><\/li>\n<\/ul>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-email\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-email sd-button share-icon\" href=\"mailto:?subject=%5BShared%20Post%5D%20FOSDEM%202016%20notes&body=http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2016%2F04%2F08%2Ffosdem-2016-notes&share=email\" target=\"_blank\" title=\"Click to email a link to a friend\" data-email-share-error-title=\"Do you have email set up?\" data-email-share-error-text=\"If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself.\" data-email-share-nonce=\"8daeecfdeb\" data-email-share-track-url=\"http:\/\/www.bytebot.net\/blog\/archives\/2016\/04\/08\/fosdem-2016-notes?share=email\"><span>Email<\/span><\/a><\/li><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-3202\" class=\"share-facebook sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2016\/04\/08\/fosdem-2016-notes?share=facebook\" target=\"_blank\" title=\"Click to share on Facebook\" ><span>Facebook<\/span><\/a><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-3202\" class=\"share-linkedin sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2016\/04\/08\/fosdem-2016-notes?share=linkedin\" target=\"_blank\" title=\"Click to share on LinkedIn\" ><span>LinkedIn<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-3202\" class=\"share-twitter sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2016\/04\/08\/fosdem-2016-notes?share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\" ><span>Twitter<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>While being on the committee for the FOSDEM MySQL &amp; friends devroom, I didn&#8217;t speak at that devroom (instead I spoke at the distributions devroom). But when I had time to pop in, I did take some notes on sessions that were interesting to me, so here are the notes. I really did enjoy Yoshinori [&hellip;]<\/p>\n<div class=\"sharedaddy sd-sharing-enabled\"><div class=\"robots-nocontent sd-block sd-social sd-social-icon-text sd-sharing\"><h3 class=\"sd-title\">Share this:<\/h3><div class=\"sd-content\"><ul><li class=\"share-email\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"\" class=\"share-email sd-button share-icon\" href=\"mailto:?subject=%5BShared%20Post%5D%20FOSDEM%202016%20notes&body=http%3A%2F%2Fwww.bytebot.net%2Fblog%2Farchives%2F2016%2F04%2F08%2Ffosdem-2016-notes&share=email\" target=\"_blank\" title=\"Click to email a link to a friend\" data-email-share-error-title=\"Do you have email set up?\" data-email-share-error-text=\"If you&#039;re having problems sharing via email, you might not have email set up for your browser. You may need to create a new email yourself.\" data-email-share-nonce=\"8daeecfdeb\" data-email-share-track-url=\"http:\/\/www.bytebot.net\/blog\/archives\/2016\/04\/08\/fosdem-2016-notes?share=email\"><span>Email<\/span><\/a><\/li><li class=\"share-facebook\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-facebook-3202\" class=\"share-facebook sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2016\/04\/08\/fosdem-2016-notes?share=facebook\" target=\"_blank\" title=\"Click to share on Facebook\" ><span>Facebook<\/span><\/a><\/li><li class=\"share-linkedin\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-linkedin-3202\" class=\"share-linkedin sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2016\/04\/08\/fosdem-2016-notes?share=linkedin\" target=\"_blank\" title=\"Click to share on LinkedIn\" ><span>LinkedIn<\/span><\/a><\/li><li class=\"share-twitter\"><a rel=\"nofollow noopener noreferrer\" data-shared=\"sharing-twitter-3202\" class=\"share-twitter sd-button share-icon\" href=\"http:\/\/www.bytebot.net\/blog\/archives\/2016\/04\/08\/fosdem-2016-notes?share=twitter\" target=\"_blank\" title=\"Click to share on Twitter\" ><span>Twitter<\/span><\/a><\/li><li class=\"share-end\"><\/li><\/ul><\/div><\/div><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_options":[]},"categories":[1064,23],"tags":[1812,242,2,1811,1781,1814,1775,1813,1810],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4vJD-PE","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":2853,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2014\/01\/20\/fosdem-mysql-friends-devroom-signup-for-dinner","url_meta":{"origin":3202,"position":0},"title":"FOSDEM MySQL &#038; Friends Devroom &#8211; signup for dinner","date":"20\/1\/2014","format":false,"excerpt":"FOSDEM happens this year, February 1&2 2014. This year is a special year as it is the 10th anniversary: great content in the schedule, you must\u00a0pre-register for dinner\u00a0(lot's of wonderful Belgian food & drink), and we have a shared booth in the expo hall. Read more about the event with\u2026","rel":"","context":"In &quot;MariaDB&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/farm8.staticflickr.com\/7022\/6812308649_91ae4bde46_n.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":3158,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2016\/01\/12\/fosdem-2016-see-you-in-brussels","url_meta":{"origin":3202,"position":1},"title":"FOSDEM 2016 &#8211; See you in Brussels","date":"12\/1\/2016","format":false,"excerpt":"Over the weekend I read in the FT (paywall): Is Brussels safe? Ring a local resident to find out. I\u2019m sure it will be fine, and you will want to be there for FOSDEM, happening 30-31 January 2016.\u00a0 There is the excellent one day track, that is the MySQL &\u2026","rel":"","context":"In &quot;MariaDB&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2822,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2013\/11\/22\/fosdem-mysql-friends-devroom","url_meta":{"origin":3202,"position":2},"title":"FOSDEM MySQL &#038; Friends Devroom","date":"22\/11\/2013","format":false,"excerpt":"As Frederic posted, its time to submit talks for the MySQL & Friends Devroom at FOSDEM 2014. The next year, it will be on Saturday February 1 2014. I look forward to being in Brussels again, and I hope to see you there too. Submit to the MySQL track here,\u2026","rel":"","context":"In &quot;MySQL&quot;","img":{"alt_text":"","src":"https:\/\/i0.wp.com\/farm8.staticflickr.com\/7015\/6832258655_b0e1a48a7b_n.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2640,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2013\/01\/26\/skysql-solutions-day-fosdem-mysql-activity","url_meta":{"origin":3202,"position":3},"title":"SkySQL Solutions Day, FOSDEM MySQL activity","date":"26\/1\/2013","format":false,"excerpt":"February is turning out to be a busy month. I'll be giving a talk about MariaDB at the SkySQL Solutions Day in Hamburg, alongside Sergei Golubchik. This happens February 1 2013. I'll also be in Brussels for FOSDEM and presenting at the MySQL & Friends devroom. Here I will talk\u2026","rel":"","context":"In &quot;MariaDB&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2242,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2012\/01\/30\/mariadbmysql-users-in-paris-brussels","url_meta":{"origin":3202,"position":4},"title":"MariaDB\/MySQL users in Paris &#038; Brussels","date":"30\/1\/2012","format":false,"excerpt":"I'm about to head to Paris to present at the February meetup of the MySQL User Group in Paris, France. It happens 1st February from 6-8pm at the Patricks Irish Pub. Its free to attend, and I understand that SkySQL keeps this event afloat. I'm also heading to my first\u2026","rel":"","context":"In &quot;MariaDB&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2247,"url":"http:\/\/www.bytebot.net\/blog\/archives\/2012\/02\/05\/new-mysql-5-6-features-by-oli-sennhauser","url_meta":{"origin":3202,"position":5},"title":"New MySQL 5.6 Features by Oli Sennhauser","date":"5\/2\/2012","format":false,"excerpt":"First talk at FOSDEM MySQL Devroom by Oli Sennhauser, of FromDual. Quick notes\/liveblog of the talk, plus links from a quick search. New Release Model: starts with at least in beta quality, milestone releases are RC quality (every 3-6 months), between milestones new features are allowed, GA releases every 12-18\u2026","rel":"","context":"In &quot;MySQL&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts\/3202"}],"collection":[{"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/comments?post=3202"}],"version-history":[{"count":1,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts\/3202\/revisions"}],"predecessor-version":[{"id":3203,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/posts\/3202\/revisions\/3203"}],"wp:attachment":[{"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/media?parent=3202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/categories?post=3202"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.bytebot.net\/blog\/wp-json\/wp\/v2\/tags?post=3202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}