{"id":3235,"date":"2013-03-05T13:32:41","date_gmt":"2013-03-05T03:32:41","guid":{"rendered":"http:\/\/www.flamingspork.com\/blog\/?p=3235"},"modified":"2013-03-05T14:51:17","modified_gmt":"2013-03-05T04:51:17","slug":"mysql-code-size","status":"publish","type":"post","link":"https:\/\/www.flamingspork.com\/blog\/2013\/03\/05\/mysql-code-size\/","title":{"rendered":"MySQL code size over releases"},"content":{"rendered":"<p>As the start of a bit of a delve into the various MySQL branches and patch sets that have been around, let&#8217;s start looking at the history of MySQL itself. This is how big MySQL has been over all of the major releases since the beginning (where beginning=3.23). (<strong>edit<\/strong>: These numbers were all gathered using sloccount and only counting C++ and C source files.)<\/p>\n<table>\n<thead>\n<tr>\n<td><strong>Codebase<\/strong><\/td>\n<td><strong>LoC (C, C++)<\/strong><\/td>\n<td><strong>+\/- from previous MySQL<\/strong><\/td>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>MySQL 3.23.58<\/td>\n<td>371,987<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td>MySQL 4.0.30<\/td>\n<td>368,695<\/td>\n<td>-3,292 (from MySQL 3.23)<\/td>\n<\/tr>\n<tr>\n<td>MySQL 4.1.24<\/td>\n<td>859,572<\/td>\n<td>+490,877 (from MySQL 4.0)<br \/>\n+174,352 excluding NDB<\/td>\n<\/tr>\n<tr>\n<td>MySQL 5.0.96<\/td>\n<td>916,667<\/td>\n<td>+57,095 (from MySQL 4.1)<\/td>\n<\/tr>\n<tr>\n<td>MySQL 5.1.68<\/td>\n<td>1,052,636<\/td>\n<td>+135,969 (from MySQL 5.0)<\/td>\n<\/tr>\n<tr>\n<td>MySQL 5.5.30<\/td>\n<td>1,189,747<\/td>\n<td>+137,111 (from MySQL 5.1)<\/td>\n<\/tr>\n<tr>\n<td>MySQL 5.6.10<\/td>\n<td>1,544,202<\/td>\n<td>+354,455 (from MySQL 5.5)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div style=\"width: 603px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" alt=\"increase in MySQL source code size over version\" src=\"https:\/\/docs.google.com\/spreadsheet\/oimg?key=0Ar7e3-N2Y32IdHFGRWI2ODk4ZUY4TkhrclJSVC1mb3c&amp;oid=1&amp;zx=5h67vlc175bd\" width=\"593\" height=\"361\" \/><p class=\"wp-caption-text\">MySQL code size over major versions<\/p><\/div>\n<div style=\"width: 565px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" alt=\"Note the sharp increase in 5.6\" src=\"https:\/\/docs.google.com\/spreadsheet\/oimg?key=0Ar7e3-N2Y32IdHFGRWI2ODk4ZUY4TkhrclJSVC1mb3c&amp;oid=2&amp;zx=z8oi2sxoowzi\" width=\"555\" height=\"352\" \/><p class=\"wp-caption-text\">LoC Delta for major MySQL release<\/p><\/div>\n<p>We can see that MySQL has had some interesting code size changes over time, the big jump in 4.1 over 4.0 was mostly due to the introduction of MySQL Cluster, but even so, it was a big jump.<\/p>\n<p><strong>MySQL 5.6 is the largest MySQL code size increase in a MySQL version ever.<\/strong> The last time we saw anything like this was with the merging of MySQL Cluster in 4.1. At the very least, Oracle is paying people to write lines of code to extent that nobody has before.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>As the start of a bit of a delve into the various MySQL branches and patch sets that have been around, let&#8217;s start looking at the history of MySQL itself. This is how big MySQL has been over all of &hellip; <a href=\"https:\/\/www.flamingspork.com\/blog\/2013\/03\/05\/mysql-code-size\/\">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":[76,14],"tags":[504,628,159],"class_list":["post-3235","post","type-post","status-publish","format-standard","hentry","category-code","category-mysql","tag-code-size","tag-mysql","tag-sloccount"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5a6n8-Qb","jetpack-related-posts":[{"id":1642,"url":"https:\/\/www.flamingspork.com\/blog\/2009\/05\/15\/mysql-storage-engine-sloccount-over-releases\/","url_meta":{"origin":3235,"position":0},"title":"MySQL Storage Engine SLOCCount over releases","author":"Stewart Smith","date":"2009-05-15","format":false,"excerpt":"For a bit more info, what about various storage engines over MySQL releases. Have they changed much? Here we're looking at the storage\/X\/ directory for code, so for some engines this excludes the handler that interfaces with the MySQL Server. You can view the data on the spreadsheet.","rel":"","context":"In &quot;mysql&quot;","block_context":{"text":"mysql","link":"https:\/\/www.flamingspork.com\/blog\/category\/work-et-al\/mysql\/"},"img":{"alt_text":"","src":"http:\/\/spreadsheets.google.com\/pub?key=rD5FOoJk29j9RK7sm0abSsg&oid=1&output=image","width":350,"height":200,"srcset":"http:\/\/spreadsheets.google.com\/pub?key=rD5FOoJk29j9RK7sm0abSsg&oid=1&output=image 1x, http:\/\/spreadsheets.google.com\/pub?key=rD5FOoJk29j9RK7sm0abSsg&oid=1&output=image 1.5x"},"classes":[]},{"id":3242,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/03\/07\/other-mysql-code-size\/","url_meta":{"origin":3235,"position":1},"title":"Other MySQL branch code sizes\u00ef\u00bb\u00bf\u00ef\u00bb\u00bf","author":"Stewart Smith","date":"2013-03-07","format":false,"excerpt":"Continuing on from my previous posts,\u00c2\u00a0MySQL code size over releases\u00c2\u00a0and\u00c2\u00a0MariaDB code size\u00c2\u00a0I've decided to also look into some other code branches. I've used the same methodology as my previous few posts: sloccount for C and C++ code only. There are also other branches around in pretty widespread use (if only\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":3261,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/03\/14\/so-what-about-the-diffstat-of-mariadb-compared-to-mysql\/","url_meta":{"origin":3235,"position":2},"title":"So what about the diffstat of MariaDB compared to MySQL?","author":"Stewart Smith","date":"2013-03-14","format":false,"excerpt":"So, I've looked at what sloccount says on the differences between Oracle MySQL over versions of itself and the various MySQL branches around. What I haven't looked at is the diffstat. Firstly, let's look at MariaDB. I'm going to look at MariaDB 5.5.29 as compared to MySQL 5.5.29, both checked\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":3238,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/03\/06\/mariadb-code-size\/","url_meta":{"origin":3235,"position":3},"title":"MariaDB code size","author":"Stewart Smith","date":"2013-03-06","format":false,"excerpt":"Continuing on from my previous post,\u00c2\u00a0MySQL code size over releases. I wanted to look at the different branches\/patch sets of MySQL out there and work out how far from upstream they deviated. I'm just going to compare against whatever upstream version the most easily accessible version is based on (be\u2026","rel":"","context":"In &quot;General&quot;","block_context":{"text":"General","link":"https:\/\/www.flamingspork.com\/blog\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/docs.google.com\/spreadsheet\/oimg?key=0Ar7e3-N2Y32IdHFGRWI2ODk4ZUY4TkhrclJSVC1mb3c&oid=4&zx=imt1yst694nh","width":350,"height":200},"classes":[]},{"id":3263,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/03\/15\/diffstat-of-mysql-5-6-versus-5-5\/","url_meta":{"origin":3235,"position":4},"title":"diffstat of MySQL 5.6 versus 5.5","author":"Stewart Smith","date":"2013-03-15","format":false,"excerpt":"Yesterday I wrote about what the diffstat between MySQL 5.5 and MariaDB 5.5 was, and previously to that, about the MariaDB code size as reported by sloccount. Let's look at MySQL 5.6. A naive wc based \"lines of code\" for MySQL 5.6 sql\/ directory is ~490kLOC which contasts with MySQL\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":3237,"url":"https:\/\/www.flamingspork.com\/blog\/2013\/03\/08\/mysql-modularity-are-we-there-yet\/","url_meta":{"origin":3235,"position":5},"title":"MySQL modularity, are we there yet?","author":"Stewart Smith","date":"2013-03-08","format":false,"excerpt":"MySQL is now over four times the size than it was with MySQL 3.23. This has not come in the shape of plugins. Have we improved modularity over time? I decided to take LoC count for plugins and storage engines (in the case of Drizzle, memory, myisam and innobase are\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":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3235","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=3235"}],"version-history":[{"count":4,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3235\/revisions"}],"predecessor-version":[{"id":3241,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/posts\/3235\/revisions\/3241"}],"wp:attachment":[{"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/media?parent=3235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/categories?post=3235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flamingspork.com\/blog\/wp-json\/wp\/v2\/tags?post=3235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}