首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改默认存储引擎Amazon

问更改默认存储引擎Amazon
EN

Stack Overflow用户
提问于 2017-09-23 16:42:43
回答 2查看 1.4K关注 0票数 1

我已经从我的MariaDB数据库(使用MySQL迁移服务)迁移到了RDS数据库中的数百个大型表。所有的存储引擎都从MyISAM到InnoDB。这对性能有灾难性的影响。

简而言之,我希望将默认存储引擎更改为MyISAM,然后重新迁移所有表。对于如何做到这一点,我对其他任何想法都持开放态度(比如在迁移工具中使用某种设置)。我真的不想创建一个脚本来改变它们,因为这意味着每次导入数据时我都需要这样做。

我尝试过更改ParameterGroup default_storage_engine,但是当我进入正在运行的实例的ParameterGroup时,默认存储引擎显示为只读。

​

我也尝试过创建一个新的参数组,同样的情况也发生了。该值显示为“可修改的: false”。

任何帮助都很感激。我看过其他答案,但我不认为修改my.cnf与RDS相关。如果是,请告诉我。

EN

回答 2

Stack Overflow用户

发布于 2017-09-23 17:03:34

显然,RDS不允许您更改该参数。

您可以将每个表更改为MyISAM,每次一个:

代码语言:javascript
复制
ALTER TABLE MyTable ENGINE=MyISAM;

您可以获得需要更改的表的列表:

代码语言:javascript
复制
SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE='InnoDB';

对于未来的表,不要依赖默认引擎。使用Create语句中显式命名的引擎创建表。

不过,我要提醒您: MyISAM正被MySQL逐步淘汰。它不支持并发写入、行级锁定、事务或原子更改。InnoDB一次又一次地被证明在性能上优于MyISAM,除非在很少的情况下:

  • SELECT COUNT(*) FROM MyTable;,因为MyISAM将这个统计数据保存在每个表中。诚然,这是InnoDB或任何MVCC体系结构的一个大弱点。
  • 桌子扫描。但是你不应该做表格扫描,你应该做索引查找。对InnoDB的优化查询通常比针对MyISAM的表扫描性能要好得多。

我鼓励您找出您的查询优化并坚持使用InnoDB。

票数 2
EN

Stack Overflow用户

发布于 2017-09-23 17:23:02

突然切换到InnoDB时,一个常见的性能问题与“事务”有关。

可能发生的情况是,由于autocommit = ON,每个查询都变成了自己的事务。(不要把它变成OFF,这会导致更糟的问题。)您需要理解事务,至少要足够将语句合并到如下所示的块中

代码语言:javascript
复制
BEGIN;
multiple statements, usually more than one, but not a huge number
COMMIT;

这(在许多情况下)将恢复一堆丢失的性能。

关于转换的更多讨论是http://mysql.rjweb.org/doc.php/myisam2innodb。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46381942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档