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 storage engines and everything else comes under plugin). I’ve excluded NDB from these numbers as it is rather massive and is pretty much still a separate thing.
|Version||Total LoC||Plugin LoC||Storage Engines LoC||Remaining (kernel)|
|MySQL 3.23.58||371,987||0 (0%)||176,276||195,711 (52% kernel)|
|MySQL 5.1.68||721,331||228||237,124||483,979 (67% kernel)|
|MySQL 5.5.30||858,441||2,706||171,009||684,726 (79% kernel)|
|MySQL 5.6.10||1,049,344||29,122||236,067||784,155 (74% kernel)|
|MariaDB 5.5||1,142,118||11,781||304,015||826,322 (72% kernel)|
|Drizzle trunk||334,810||31,150||130,727||172,933 (51% kernel)|
I’ve used the non-plugin and non-storage engine code size to be the database “kernel” – i.e. the core of the database server.
What I find really interesting here is that yes, the amount of code that is to some degree modular has increased. The amount of code that is a MySQL plugin is still very small compared to the server size
Drizzle is 20-25% of the size of a modern MySQL or MariaDB server and for many applications does largely or exactly the same thing.