{"id":28625,"date":"2018-06-11T20:01:21","date_gmt":"2018-06-11T18:01:21","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=28625"},"modified":"2018-06-11T20:01:21","modified_gmt":"2018-06-11T18:01:21","slug":"why-uber-engineering-switched-from-postgres-to-mysql","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/11\/why-uber-engineering-switched-from-postgres-to-mysql\/","title":{"rendered":"Why Uber Engineering Switched from Postgres to MySQL"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p><a href=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/06\/MySQL-indexes.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"28626\" data-permalink=\"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/11\/why-uber-engineering-switched-from-postgres-to-mysql\/mysql-indexes\/\" data-orig-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/06\/MySQL-indexes.png?fit=768%2C373&amp;ssl=1\" data-orig-size=\"768,373\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"MySQL indexes\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/06\/MySQL-indexes.png?fit=660%2C321&amp;ssl=1\" class=\"aligncenter size-medium wp-image-28626\" src=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/06\/MySQL-indexes-500x243.png?resize=500%2C243&#038;ssl=1\" alt=\"\" width=\"500\" height=\"243\" srcset=\"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/06\/MySQL-indexes.png?resize=500%2C243&amp;ssl=1 500w, https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/06\/MySQL-indexes.png?w=768&amp;ssl=1 768w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/p>\n<p>&#8220;<a href=\"https:\/\/eng.uber.com\/mysql-migration\/\">Why Uber Engineering Switched from Postgres to MySQL<\/a>&#8221; is an interesting study with plenty of technical detail of how MySQL was a better choice than PostgreSQL for the very demanding growth of Uber.\u00a0 These kinds of issues are probably way out of scope for any &#8220;regular Joe&#8221; application, but the insight into the differences of MySQL and PostgreSQL architectures is still useful.<\/p>\n<p>Main PostgreSQL limitations covered by the study are:<\/p>\n<ul>\n<li>Inefficient architecture for writes<\/li>\n<li>Inefficient data replication<\/li>\n<li>Issues with table corruption<\/li>\n<li>Poor replica MVCC support<\/li>\n<li>Difficulty upgrading to newer releases<\/li>\n<\/ul>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>&#8220;Why Uber Engineering Switched from Postgres to MySQL&#8221; is an interesting study with plenty of technical detail of how MySQL was a better choice than PostgreSQL for the very demanding growth of Uber.\u00a0 These kinds of issues are probably way out of scope for any &#8220;regular Joe&#8221; application, but the insight into the differences of &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2018\/06\/11\/why-uber-engineering-switched-from-postgres-to-mysql\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Why Uber Engineering Switched from Postgres to MySQL<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"Why Uber Engineering Switched from Postgres to MySQL #WebDev #databases #MySQL #PostgreSQL #performance #scalability #Uber","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_links_to":"","_links_to_target":""},"categories":[1,6,18,133,62,1334],"tags":[1559,3066,1057,3321,1281,3586,1330],"keyring_services":[],"class_list":["post-28625","post","type-post","status-publish","format-standard","hentry","category-general","category-linux","category-programming","category-sysadmin","category-technology","category-web-work","tag-databases","tag-mysql","tag-performance","tag-postgresql","tag-scalability","tag-uber","tag-web-development"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":28562,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/05\/08\/database-flow-modern-self-hosted-web-interface-for-sql-and-graphql\/","url_meta":{"origin":28625,"position":0},"title":"Database Flow &#8211; modern, self-hosted web interface for SQL and GraphQL","author":"Leonid Mamchenkov","date":"May 8, 2018","format":false,"excerpt":"Database Flow is a modern, Open Source, self-hosted, web-based tool for working with SQL databases and GraphQL APIs.\u00a0 It supports a variety of the database engines: IBM DB2, Oracle, H2, PostgreSQL, MySQL, SQLite, Informix, and Microsoft SQL Server.\u00a0 It features an advanced SQL editor, query plan analyzer, GraphQL client, schema\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/05\/database-flow-500x281.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":22436,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/08\/26\/stellar-fast-database-snapshot-and-restore-tool-for-development\/","url_meta":{"origin":28625,"position":1},"title":"Stellar &#8211; fast database snapshot and restore tool for development","author":"Leonid Mamchenkov","date":"August 26, 2014","format":"link","excerpt":"Stellar - Fast database snapshot and restore tool for development.","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"stellar","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2014\/08\/stellar-500x333.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":9961,"url":"https:\/\/mamchenkov.net\/wordpress\/2006\/03\/12\/daily-del-icio-us-bookmarks\/","url_meta":{"origin":28625,"position":2},"title":"Daily del.icio.us bookmarks","author":"Leonid Mamchenkov","date":"March 12, 2006","format":false,"excerpt":"Shared bookmarks for del.icio.us user tvset on 2006-03-11 Choosing effective del.icio.us tags | Otherwise Engaged. Tagged as: del.icio.us howto lists tags tips Digital Podcast News - Podpress - A Podcasting Plugin for Wordpress Tagged as: blogging extensions plugins podcasting tools wordpress Steven Seagal's map of emotions -- Angry, sad, glad,\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":23272,"url":"https:\/\/mamchenkov.net\/wordpress\/2015\/01\/07\/postgrest-rest-api-for-any-postgres-database\/","url_meta":{"origin":28625,"position":3},"title":"PostgREST &#8211; REST API for any Postgres database","author":"Leonid Mamchenkov","date":"January 7, 2015","format":"link","excerpt":"PostgREST - REST API for any Postgres database","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"logo","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2015\/01\/logo-500x108.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":9962,"url":"https:\/\/mamchenkov.net\/wordpress\/2006\/03\/10\/another-showstopper\/","url_meta":{"origin":28625,"position":4},"title":"Another showstopper","author":"Leonid Mamchenkov","date":"March 10, 2006","format":false,"excerpt":"Just when I thought that only a couple of days were left before I could tell you my little secret - a project that I am working on, it got delayed. And it is entirely my fault. I haven't thoroughly investigated available database alternatives and their limitations. It turned out\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27088,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/12\/09\/database-engines-ranking\/","url_meta":{"origin":28625,"position":5},"title":"Database Engines Ranking","author":"Leonid Mamchenkov","date":"December 9, 2016","format":false,"excerpt":"DB-Engines.com provides some insight into some of the most popular database engines (312 of them to be precise). \u00a0Nothing too surprising there - Oracle and MySQL leading the charts, but it's nice to have the numbers and trends. There are, of course, many different ways how the popularity can be\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"db-engines-ranking-table","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2016\/12\/db-engines-ranking-table-500x302.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/28625","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=28625"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/28625\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=28625"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=28625"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=28625"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=28625"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}