How MySQL Tuning Improves the Laravel Performance

How MySQL Tuning Improves the Laravel Performance

Written by Roman Agabekov on Mar 23rd, 2023 ・ Views ・ Report Post

MySQL Configuration tuning is an important component of database management implemented by database professionals and administrators. It aims to configure the database to suit its hardware and workload. But beyond the database management sphere, the usefulness of MySQL Configuration tuning is largely ignored.

We hypothesize that MySQL tuning can significantly affect the performance of web apps. If we can showcase the value of MySQL tuning, we believe that enterprises and organizations may be keen to incorporate this practice on a larger scale.

How to Improve Laravel Application Performance

Improving application performance with tuning is best achieved with a comprehensive approach that addresses the following areas:

  • Server Resources – CPU, Memory, Storage
  • Software Configurations – Linux, Nginx, Php…
  • Database Management System (DBMS) Configurations – MySQL, PostgreSQL
  • Optimize database scheme and change indexes
  • Optimize applications – Code, Queries, Architecture…

Many experienced developers don't look at database performance tuning as an opportunity to improve the performance of their apps because they know little about this domain. They spend a lot of time optimizing the codebase, but it reaches a point where it no longer brings a valuable result for the time and energy invested. Our research on how MySQL tuning positively affects the performance of popular open-source web applications is aimed at showcasing this fact to developers.

Testing Approach

Our testing procedure for Laravel Aimeos lets us compare the app's performance before and after configuration using seeded data. By running the test with the default configuration first, we gain valuable control results to compare the tuned configuration against.

We used the following process to prepare and test each application:

  1. Deploy Laravel Aimeos.
  2. Seed database with data.
  3. Prepare test for JMeter.
  4. Run test for 10 minutes – Ran JMeter test using the Blazemeter performance testing platform.
  5. Tune MariaDB configuration – After default configuration testing, our setup remained the same, but MariaDB was tuned for workload, server resources, and database size.
  6. Re-run test – Repeated the JMeter test using Blazemeter for the tuned configuration.

We published JMeter tests, MySQL Status, and MySQL Variables during tests on Github.

What metrics we looked at?

The metrics we looked at during this research are:

  1. Response Time ( Latency ) is the time between sending the request and processing it on the server side to the time the client receives the first byte. It is the important metric that gives you insight into server performance.
  2. Queries per second is a metric that measures how many queries the database server executes per second.
  3. CPU Utilization.

We collected CPU Utilization and Queries per second metrics to compare the workload.

Laravel Aimeos

Aimeos Laravel is a popular e-commerce web app framework for creating online shops, marketplaces, and B2B apps. With Aimeos, users can create API-first eCommerce shops for Laravel that can scale to support over 1 billion items. It's available in over 30 languages and has over 300,000 installs.

Testing Setup

To test Aimeos, we started the test with ten users, but we had to decrease the number of users because we couldn't finish the test with the default configuration.

We seeded the database with 500 Mb data. Our test duration was 10 minutes.

We used:

  • AWS EC2 instance c5.xlarge with installed Debian 11 as the operating system,
  • Apache as a web server,
  • MariaDB 10.5 set to the default configuration with database size 500 MB.

MySQL Configuration

The configuration used for Aimeos Laravel is as follows:

Tuned Configuration for Laravel Aimeos 500Mb


Testing Results

The Aimeos Laravel testing results showcased dramatic performance improvements between the default and tuned configurations.

The optimization of MySQL resulted in a significant improvement in the average server Response Time, which was reduced from 1.4 seconds to under 800 milliseconds.

Response Time ( Latency ) fell by 42% and average CPU utilization by 86%, while Queries per second increased by an incredible 291%, from 12 to 35 queries per second.

The graph of the results is available below:

S_Latency.png Response Time (ms), Aimeos Tuned MySQL Configuration vs Default Aimeos_CPU1.png CPU Utilization (%), Aimeos Tuned MySQL Configuration vs Default Aimeos_QPS.png Queries Per Seconds, Aimeos Tuned MySQL Configuration vs Default

Community Contributors

We teamed up with Laravel developers Gevorg Mkrtchyan and Sergey Sinitsa from Initlab company to investigate this line of questioning and are very grateful for their expertise. Sergey deployed Aimeos, and Gevorg prepared code for seeding the database.


Our testing procedure, using Aimeos Laravel, showed dramatic improvements in Response Time (Latency), CPU Utilization, and Queries per second after configuring the database server configuration.

Responce Time (Latency) dropped between 42%, while CPU Utilization fell 86%. Queries per second increased in Aimeos Laravel 500MB by 291%.

In conclusion, MySQL tuning is an essential aspect of database management that can have a significant impact on the performance of Laravel applications. Poorly performing web applications can lead to increased page load times, slow request handling, and a poor user experience, which can negatively affect SEO and sales. By optimizing the performance of web apps with MySQL tuning, enterprises and organizations can increase sales, pageviews, conversion rates, and SEO rankings.

With this research, we hope to showcase the value of MySQL tuning as a means to improve the performance of Laravel applications and encourage Laravel developers to consider this practice when optimizing the performance of their apps.

Using tools like Releem, databases can be quickly and easily configured for optimal performance, reducing the burden on software development teams.

Comments (0)