# Storage Engines Overview

## Overview

MariaDB features pluggable storage engines to allow per-table workload optimization.

A storage engine is a type of [plugin](https://mariadb.com/docs/server/reference/plugins) for MariaDB:

* Different storage engines may be optimized for different workloads, such as transactional workloads, analytical workloads, or high throughput workloads.
* Different storage engines may be designed for different use cases, such as federated table access, table sharding, and table archiving in the cloud.
* Different tables on the same server may use different storage engines.

| Engine                                                                                       | Target          | Optimization         | Availability |
| -------------------------------------------------------------------------------------------- | --------------- | -------------------- | ------------ |
| [Aria](https://mariadb.com/docs/server/server-usage/storage-engines/aria)                    | Read-Heavy      | Reads                | ES 10.5+     |
| [ColumnStore](https://app.gitbook.com/s/aEnK0ZXmUbJzqQrTjFyb/columnstore)                    | Analytics, HTAP | Big Data, Analytical | ES 10.5+     |
| [InnoDB](https://mariadb.com/docs/server/server-usage/storage-engines/innodb)                | General Purpose | Mixed Read/Write     | ES 10.5+     |
| [Memory](https://mariadb.com/docs/server/server-usage/storage-engines/memory-storage-engine) | Cache, Temp     | Temporary Data       | ES 10.5+     |
| [MyISAM](https://mariadb.com/docs/server/server-usage/storage-engines/myisam-storage-engine) | Reads           | Reads                | ES 10.5+     |
| [MyRocks](https://mariadb.com/docs/server/server-usage/storage-engines/myrocks)              | Write-Heavy     | I/O Reduction, SSD   | ES 10.5+     |
| [S3](https://mariadb.com/docs/server/server-usage/storage-engines/s3-storage-engine)         | Cloud           | Read-Only            | ES 10.5+     |
| [Spider](https://mariadb.com/docs/server/server-usage/storage-engines/spider)                | Federation      | Sharding, Interlink  | ES 10.5+     |

## Examples

### Identify the Default Storage Engine

Identify the server's global default storage engine by using [SHOW GLOBAL VARIABLES](https://mariadb.com/docs/server/reference/sql-statements/administrative-sql-statements/show/show-variables) to query the [default\_storage\_engine](https://mariadb.com/docs/server/server-management/variables-and-modes/server-system-variables#default_storage_engine) system variable:

```sql
SHOW GLOBAL VARIABLES LIKE 'default_storage_engine';
```

```sql
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
```

Identify the session's default storage engine by using [SHOW SESSION VARIABLES](https://mariadb.com/docs/server/reference/sql-statements/administrative-sql-statements/show/show-variables):

```
SHOW SESSION VARIABLES LIKE 'default_storage_engine';
```

```sql
+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
```

### Set the Default Storage Engine

Global default storage engine:

```sql
SET GLOBAL default_storage_engine='MyRocks';
```

Session default storage engine supersedes global default during this session:

```sql
SET SESSION default_storage_engine='MyRocks';
```

### Configure the Default Storage Engine

```bash
[mariadb]
...
default_storage_engine=MyRocks
```

### Identify Available Storage Engines

```sql
SHOW ENGINES;
```

### Choose Storage Engine for a New Table

Storage engine is specified at time of table creation using a ENGINE = parameter.

```sql
CREATE TABLE accounts.messages (
  id INT PRIMARY KEY AUTO_INCREMENT,
  sender_id INT,
  receiver_id INT,
  message TEXT
) ENGINE = MyRocks;
```

## Resources

### Engines for System Tables

Standard MariaDB storage engines are used for System Table storage:

* [Aria Storage Engine](https://mariadb.com/docs/server/server-usage/storage-engines/aria)
* [MyISAM Storage Engine](https://mariadb.com/docs/server/server-usage/storage-engines/myisam-storage-engine)

## FAQ

### Can I use more than one storage engine on a server?

* Yes, different tables can use different storage engines on the same server.
* To create a table with a specific storage engine, specify the ENGINE table option to the [CREATE TABLE](https://mariadb.com/docs/server/server-usage/tables/create-table) statement.

### Can I use more than one storage engine in a single query?

* Yes, a single query can reference tables that use multiple storage engines.
* In some cases, special configuration may be required. For example, ColumnStore requires cross engine joins to be configured.

### What storage engine should I use for transactional or OLTP workloads?

* [InnoDB](https://mariadb.com/docs/server/server-usage/storage-engines/innodb) is the recommended storage engine for transactional or OLTP workloads.

### What storage engine should I use for analytical or OLAP workloads?

* [ColumnStore](https://app.gitbook.com/s/aEnK0ZXmUbJzqQrTjFyb/columnstore) is the recommended storage engine for analytical or OLAP workloads.

### What storage engine should I use if my application performs both transactional and analytical queries?

An application that performs both transactional and analytical queries is known as [hybrid transactional-analytical processing (HTAP)](https://mariadb.com/kb/en/deploy-htap-topology/).

HTAP can be implemented with MariaDB by using [InnoDB](https://mariadb.com/docs/server/server-usage/storage-engines/innodb) for transactional queries and [ColumnStore](https://app.gitbook.com/s/aEnK0ZXmUbJzqQrTjFyb/columnstore) for analytical queries.

## Reference

### MariaDB Server Reference

* [Plugins](https://mariadb.com/docs/server/reference/plugins).
* [Information Schema ENGINES table](https://mariadb.com/docs/server/reference/system-tables/information-schema/information-schema-tables/information-schema-engines-table), which shows available storage engines.
* [Information Schema TABLES table](https://mariadb.com/docs/server/reference/system-tables/information-schema/information-schema-tables/information-schema-tables-table), which shows storage engine by table.

<sub>*This page is: Copyright © 2025 MariaDB. All rights reserved.*</sub>

{% @marketo/form formId="4316" %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mariadb.com/docs/server/server-usage/storage-engines/storage-engines-storage-engines-overview.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
