我有数百个大表,已从我的 MySQL 数据库(使用亚马逊迁移服务)迁移到 RDS MariaDB。所有的存储引擎都从 MyISAM 转到了 InnoDB。这会对性能造成灾难性影响。
简而言之,我希望将默认存储引擎更改为 MyISAM,然后重新迁移所有表。我也愿意接受有关如何执行此操作的任何其他想法(例如在迁移工具中使用某种设置)。我真的不想创建一个脚本来更改它们,因为这意味着我每次导入数据时都需要这样做。
我已经尝试更改参数组 default_storage_engine,但是当我进入我正在运行的实例的参数组时,默认存储引擎显示为只读。
我也尝试过创建一个新的参数组,结果也是如此。该值显示为“可修改:false”。
非常感谢任何帮助。我查看了其他答案,但我认为修改 my.cnf 与 RDS 无关。如果是,请告诉我。
最佳答案
显然 RDS 不允许您更改该参数。
您可以将每个表更改为 MyISAM,一次一个:
ALTER TABLE MyTable ENGINE=MyISAM;
您可以获得需要更改的表的列表:
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE='InnoDB';
对于 future 的表格,不要依赖默认引擎。使用在 CREATE TABLE 语句中明确指定的引擎创建表。
不过,我要提醒您:MyISAM 正在被 MySQL 淘汰。它不支持并发写入、行级锁定、事务或原子更改。 InnoDB 一再被证明在性能上优于 MyISAM,除了极少数情况:
SELECT COUNT(*) FROM MyTable;
因为 MyISAM 将此统计信息内置到每个表中。不可否认,这是 InnoDB 或任何 MVCC 架构的一大弱点。- 表格扫描。但是无论如何你不应该进行表扫描,你应该进行索引查找。针对 InnoDB 的优化查询通常比针对 MyISAM 的表扫描在性能方面要好得多。
我鼓励您找出查询优化并坚持使用 InnoDB。
关于mysql - 更改默认存储引擎 Amazon RDS MariaDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46381942/