Observability Differences Between MySQL 8 and MariaDB 10.4

February 5, 2020
Author
Peter Zaitsev
Share this Post:

MariaDB no longer meeting your needs?

Migrate to Percona software for MySQL – an open source, production-ready, and enterprise-grade MySQL alternative.

Learn More

I did a MariaDB Observability talk at MariaDB Day in Brussels, which I roughly based on the MySQL 8 Observability talk I gave earlier in the year. This process pushed me to contrast MySQL and MariaDB observability.

In summary, there are a lot of differences that have accumulated through the years—far more than I expected. Here are some highlights.

SHOW STATUS and SHOW VARIABLES

If you want to access SHOW [GLOBAL] STATUS output through tables, they have been moved to performance_schema in MySQL 8 but are in information_schema in MariaDB 10.4, meaning you need to use different queries.

The other difference you may notice is how VARIABLE_NAME is capitalized. It is all capitals for MariaDB and leading capital in MySQL, which can be a problem if you store data in a case-sensitive datastore.

The same applies to SHOW VARIABLES tables which are exposed as information_schema.global_variables in MariaDB 10.4 and performance_schema.global_variables in MySQL 8.

MariaDB 10.4 also exposes more variables in SHOW STATUS (542) while in the current version of MySQL 8 it is less than 500.

INFORMATION_SCHEMA

Besides the location of the named tables, there are many other differences in INFORMATION_SCHEMA. For example, MariaDB 10.4 has INNODB_MUTEXES to expose “SHOW ENGINE INNODB MUTEX” in a table format, which is easier to extract and report rather than parsing strings. MySQL 8 does not have this table.

Another example is USER_VARIABLES, which shows currently set user variables:

MySQL 8 instead provides similar functionality via PERFORMANCE_SCHEMA:

There are also differences in the processlist table. MariaDB includes useful fields like EXAMINED_ROWS and MEMORY_USED:

MySQL 8 provides less detail here but offers a richer sys.processlist view instead.

PERFORMANCE_SCHEMA

MySQL 8 focuses heavily on Performance Schema for observability, while MariaDB 10.4 places less emphasis on it.

Key differences:

  • MySQL 8 enables Performance Schema by default
  • MariaDB 10.4 has it disabled by default
  • MariaDB includes fewer tables and less instrumentation
  • MariaDB does not include the sys schema

This indicates Performance Schema is not a major priority in MariaDB.

SLOW QUERY LOG

Both MySQL 8 and MariaDB 10.4 support slow query logging, but their extended capabilities differ.

MariaDB supports:

  • Additional filtering options
  • Enhanced logging fields
  • Logging EXPLAIN plans

MySQL 8 supports:

  • More detailed performance metrics

MariaDB Slow Query Log (with EXPLAIN)

MySQL 8 Slow Query Log

EXPLAIN

Both MySQL and MariaDB support classic EXPLAIN output, but formats differ due to differences in their optimizers.

MySQL 8 EXPLAIN

MariaDB 10.4 EXPLAIN

Advanced EXPLAIN features differ further:

  • MariaDB: SHOW EXPLAIN FOR <thread_id>
  • MySQL: EXPLAIN FOR CONNECTION <connection_id>
  • JSON format exists in both but differs significantly
  • TREE format exists only in MySQL 8

MySQL EXPLAIN ANALYZE

MariaDB ANALYZE

Summary

I’ve been saying for a while now that “MariaDB is not MySQL” and you need to treat them as separate databases. This is especially true for observability, where both systems have diverged significantly and continue to evolve independently.

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

Far
Enough.

Said no pioneer ever.
MySQL, PostgreSQL, InnoDB, MariaDB, MongoDB and Kubernetes are trademarks for their respective owners.
© 2026 Percona All Rights Reserved