文档首页/ 云数据库 RDS/ 常见问题/ 数据库存储/ RDS for MySQL支持哪些存储引擎
更新时间:2024-09-11 GMT+08:00

RDS for MySQL支持哪些存储引擎

数据库存储引擎就是一种数据存储方式。使用数据存储引擎实现存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序要求。

InnoDB存储引擎

云数据库 RDS for MySQL数据库只有InnoDB存储引擎支持完整的备份、恢复等服务功能,因此RDS for MySQL推荐使用InnoDB引擎。

其他存储引擎

在MySQL 5.6及以上的版本中,不支持的存储引擎如表1所示:

表1 存储引擎约束限制

引擎

原因

MyISAM引擎

  • MyISAM引擎表不支持事务,仅支持表级别锁,导致读写操作相互冲突。
  • MyISAM对数据完整性的保护存在缺陷,且这些缺陷会导致数据库数据的损坏甚至丢失。
  • MyISAM在出现数据损害情况下,很多都需要手动修复,无法通过产品服务提供的恢复功能进行数据恢复。
  • MyISAM向InnoDB的迁移透明,大多数情况不需要改动建表的代码,云数据库自动转换InnoDB即可完成迁移。

FEDERATED引擎

  • 主备实例支持FEDERATED引擎会导致在远端数据库上相同DML重复执行,导致数据错乱。
  • FEDERATED引擎会在时间点恢复场景,当全量恢复完成后,远端数据库上数据不会跟随全量备份恢复到全备时的数据状态,在增量恢复阶段再应用数据会导致FEDERATED表数据错乱。

Memory引擎

  • 如果内存表隐式的变空,那在Open表的时候数据库就会自己产生一个DELETE event到binlog中。这样当HA集群使用了内存表,那么重启HA,备库(或者只读库)就会自己产生一个自己的GTID,导致主备不一致,进而引发备库重建,甚至导致备库会不停的重建。
  • 使用Memory表,会存在OOM的风险,导致服务被终止。

相关问题

Q:登录RDS for MySQL实例后,使用SQL命令查询存储引擎,发现与InnoDB存储引擎不一致时以哪个为准?

A:以InnoDB存储引擎为准。在show engines的基础上,真实可用的存储引擎还要考虑MySQL社区的参数“disabled_storage_engines”,该参数中的引擎实际不可用。