

# Amazon RDS 上的 MariaDB 支持的存储引擎
<a name="MariaDB.Concepts.Storage"></a>

RDS for MariaDB 支持以下存储引擎。

**Topics**
+ [InnoDB 存储引擎](#MariaDB.Concepts.Storage.InnoDB)
+ [MyRocks 存储引擎](#MariaDB.Concepts.Storage.MyRocks)

目前，RDS for MariaDB 不支持其他存储引擎。

## InnoDB 存储引擎
<a name="MariaDB.Concepts.Storage.InnoDB"></a>

尽管 MariaDB 支持功能不同的多种存储引擎，但并非所有引擎都针对恢复和数据耐久性而进行了优化。InnoDB 是 Amazon RDS 上的 MariaDB 数据库实例的推荐存储引擎。Amazon RDS 的时间点还原和快照还原等特征要求使用可恢复的存储引擎，且仅支持 MariaDB 版本的推荐存储引擎。

有关更多信息，请参阅 [InnoDB](https://mariadb.com/kb/en/innodb/)。

## MyRocks 存储引擎
<a name="MariaDB.Concepts.Storage.MyRocks"></a>

MyRocks 存储引擎在 RDS for MariaDB 版本 10.6 及更高版本中提供。在生产数据库中使用 MyRocks 存储引擎之前，我们建议您执行彻底的基准测试和测试，以验证您的使用案例相比 InnoDB 的任何潜在优势。

MariaDB 版本 10.6 的默认参数组包括 MyRocks 参数。有关更多信息，请参阅 [MariaDB 的参数](Appendix.MariaDB.Parameters.md) 和 [Amazon RDS 的参数组](USER_WorkingWithParamGroups.md)。

要创建使用 MyRocks 存储引擎的表，请在 `CREATE TABLE` 语句中指定 `ENGINE=RocksDB`。以下示例创建使用 MyRocks 存储引擎的表。

```
CREATE TABLE test (a INT NOT NULL, b CHAR(10)) ENGINE=RocksDB;
```

我们强烈建议您不要运行同时跨 InnoDB 和 MyRocks 表的事务。MariaDB 不保证跨存储引擎事务的 ACID（原子性、一致性、隔离性、持久性）。尽管可以在数据库实例中同时使用 InnoDB 和 MyRocks 表，但我们不建议使用这种方法，除非在从一个存储引擎迁移到另一个存储引擎的过程中。数据库实例中同时存在 InnoDB 和 MyRocks 表时，每个存储引擎都有自己的缓冲池，这可能会导致性能降低。

MyRocks 不支持 `SERIALIZABLE` 隔离或 gap 锁定。因此，通常不能将 MyRocks 与基于语句的复制结合使用。有关更多信息，请参阅 [MyRocks 和复制](https://mariadb.com/kb/en/myrocks-and-replication/)。

目前，您只能修改以下 MyRocks 参数：
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_block_cache_size](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_block_cache_size)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load_size](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_bulk_load_size)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect_depth](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_deadlock_detect_depth)
+ [https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_max_latest_deadlocks](https://mariadb.com/kb/en/myrocks-system-variables/#rocksdb_max_latest_deadlocks)

MyRocks 存储引擎和 InnoDB 存储引擎可根据 `rocksdb_block_cache_size` 和 `innodb_buffer_pool_size` 参数的设置争用内存。在某些情况下，您可能只打算在特定数据库实例上使用 MyRocks 存储引擎。如果是这样，我们建议将 `innodb_buffer_pool_size minimal` 参数设置为最小值并将 `rocksdb_block_cache_size` 设置为尽可能高。

您可以使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBLogFiles.html) 和 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DownloadDBLogFilePortion.html) 操作来访问 MyRocks 日志文件。

有关 MyRocks 的更多信息，请参阅 MariaDB 网站上的 [MyRocks](https://mariadb.com/kb/en/myrocks/)。