We started using MySQL 80

In April 2018 the new version of MySQL was released to General Availability. It was tagged 8.0.11. We tried this on our test machines and we found it is a bit faster than its predecessor 5.7. New options and features were introduced like user roles which help a lot with custom project permissions. As for speed, we found an increase of 2% but at the same time greater memory usage. We tested on databases with 50000 records, inserts, selects, updates. It is not impressive but still a step forward. The server’s I/O went down by 2%. We have implemented version 8.0 on our development machines.

We are still testing before going into production. The reason for the delay is several other software dependencies that are not compatible with the new MySQL libraries. For example, library apr-util 1.6.1 where apr_dbd_mysql.so is using typedef as char where the new database had replaced my_bool with C99 bool standard. Not to mention the dbd.m4 script for the Autoconf tool that is checking for non-existent files like my_global.h in the headers. The APR1 library is in frequent use for delivering compatible API between Apache software including Apache web server, subversion and git client, mod_php and many more.

Yes, there are solutions to this situation:

  • do not use mysql80-client
  • wait for Apache to update apr-util or release v2
  • create own patch for apr-util1
  • disable MySQL support on apr1 library

We picked up the 3rd solution and so far everything works fine for us. We are waiting for the official patch release. Again, it is too early to implement this for the production environments. However, as the PushPanel.io, we want to be ready to deliver the best experience to our customers with the latest version of the database available and it looks very promising.