将表从MyISAM更改为InnoDB会使系统变慢

时间:2009-01-19 09:51:17

标签: mysql innodb myisam

您好我使用的是Mysql 5.0.x

我刚刚将很多表从MyISAM更改为InnoDB

使用MyISAM表大约花了 1分钟来安装我们的数据库 使用InnoDB安装相同的数据库需要 15分钟

为什么InnoDB需要这么长时间?

我可以做些什么来加快速度?

数据库安装执行以下步骤

1)删除架构

2)创建架构

3)创建表格

4)创建存储过程

5)插入默认数据

6)通过存储过程

插入数据

编辑:

大多数情况下,插入默认数据

3 个答案:

答案 0 :(得分:5)

修改“插入数据”步骤以在开始时启动事务并在结束时提交事务。你会得到改进,我保证。 (如果您有大量数据,则可能希望将事务分解为每个表。)

如果您的应用程序根本不使用事务,那么您应该将参数innodb_flush_log_at_trx_commit设置为2.这将为您提供大量性能,因为您几乎肯定会启用auto_commit,这会产生更多比InnoDB的默认参数配置的事务。此设置可以在每次提交时不必要地刷新磁盘缓冲区。

答案 1 :(得分:3)

15分钟对我来说似乎并不过分。毕竟,这是一次性费用。

我不确定,但我认为解释的一部分是参考完整性不是免费的。 InnoDB必须做更多的工作来保证它,所以当然会花费更多的时间。

在创建表之后,可能需要更改脚本以添加约束。

答案 2 :(得分:0)

就像duffymo所说,在插入数据之前禁用你的约束(索引和foreing / primary key)。

如果使用了很多 select 语句,可能应该在通过存储过程插入数据之前恢复一些索引