您好我正在使用 Mysql 5.0.x
我刚刚将很多表从 MyISAM 更改为 InnoDB
使用 MyISAM 表大约需要1 分钟来安装我们的数据库使用 InnoDB 大约需要15 分钟来安装相同的数据库
为什么 InnoDB 需要这么长时间?
我能做些什么来加快速度?
数据库安装执行以下步骤
1) 删除架构
2) 创建架构
3) 创建表
4) 创建存储过程
5) 插入默认数据
6)通过存储过程插入数据
编辑:
插入默认数据需要大部分时间
修改插入数据步骤以在开始时启动事务并在结束时提交它。你会得到改进,我保证。(如果您有大量数据,您可能希望将事务分解为每个表。)
如果您的应用程序根本不使用事务,那么您应该将参数设置innodb_flush_log_at_trx_commit
为 2。这会给您带来很多性能,因为您几乎肯定会启用 auto_commit 并且这会生成比 InnoDB 配置的默认参数更多的事务. 此设置阻止它在每次提交时不必要地刷新磁盘缓冲区。
15分钟对我来说似乎并不过分。毕竟,这是一次性成本。
我不确定,但我想部分解释是参照完整性不是免费的。InnoDB 必须做更多的工作来保证它,所以它当然会占用更多的时间。
在创建表后,可能需要更改您的脚本以添加约束。
就像 duffymo 说的,在插入数据之前禁用你的约束(索引和外键/主键)。
也许你应该在通过存储过程插入数据之前恢复一些索引,如果它使用很多选择语句