Part 5 explains storage engines in this 7-part practical MySQL administration series.

People often talk about MySQL as if storage behavior stayed uniform. In practice, MySQL uses a pluggable storage-engine architecture, so table behavior depends heavily on the engine selected underneath it.

For administrators, that matters a lot. The engine affects durability, locking behavior, indexing support, file layout, and what kinds of operations remain possible.

What a Storage Engine Does

Storage engines handle SQL operations for different table types inside MySQL.

In modern MySQL:

  • InnoDB serves as the default storage engine
  • MyISAM remains important historically and in certain legacy workloads
  • other engines such as MEMORY, CSV, ARCHIVE, BLACKHOLE, FEDERATED, and NDB serve specialized use cases

Inspect Supported Engines

Use SHOW ENGINES to list the engines available on a server.

SHOW ENGINES;

Example terminal output:

mysql> show engines\G;
*************************** 1. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys

*************************** 2. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine

*************************** 3. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables

*************************** 4. row ***************************
Engine: CSV
Support: YES
Comment: CSV storage engine

*************************** 5. row ***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine

The Support column shows whether an engine serves as the default, remains available, or stays unavailable on that host.

Understand the Two Main Engine Categories

From an administrative perspective, the first major divide stays simple.

Transactional engines:

  • support rollback
  • preserve ACID semantics
  • protect data consistency across multi-step operations

Non-transactional engines:

  • commit changes immediately
  • do not offer rollback semantics in the same way
  • may require application-level recovery if a multi-step write sequence fails midway

For most general-purpose production workloads, choose InnoDB because it supports transactions, foreign keys, and crash recovery features administrators rely on.

Match Engines to Use Cases

This post maps common engines to typical usage patterns:

  • InnoDB for transaction-heavy OLTP workloads
  • MyISAM for older or read-oriented use cases
  • MEMORY for fast access to non-critical in-memory data
  • CSV for simple import and export scenarios
  • ARCHIVE for large amounts of infrequently accessed archival data
  • BLACKHOLE for certain replication-oriented patterns
  • NDB for clustered, high-availability environments
  • FEDERATED for distributed access models

Storage Engine Architecture

The following diagram gives a good conceptual view of how connectors, the MySQL server process, the SQL layers, storage engines, and the filesystem fit together.

MySQL storage engine architecture

Figure 1. MySQL storage engine architecture.

Use this figure to explain why the same MySQL server can expose different persistence behavior depending on the engine selected for a table.

Why Administrators Should Care

Storage engine choice affects more than table creation syntax.

It also affects:

  • durability expectations
  • compatibility with indexes and keys
  • file extensions on disk
  • support for temporary or archival data patterns
  • what you should expect when you convert a table from one engine to another

That last point matters quickly in real environments, so I cover engine conversion behavior in the next article.

Final Thoughts

Storage engines form one of the most distinctive parts of MySQL administration. Once you understand that the server stays pluggable at the storage layer, many seemingly odd behaviors start to make sense.

In Part 6, I walk through practical engine conversion examples, file layout changes, and plugin-based engine loading.


<
Previous Post
Practical MySQL Server Administration - Part 4: Startup, Shutdown, and Connection Management
>
Next Post
Practical MySQL Server Administration - Part 6: Storage Engine Conversions and Plugins