2009-01-19 47 views
1

嗨,我使用的是MySQL 5.0.x的更改表从MyISAM数据InnoDB的使系统缓慢

我刚才已经改变了很多的表从MyISAM数据InnoDB的

有了它花费了大约的MyISAM表1分钟安装我们的数据库 随着InnoDB的花费大约15分钟安装相同的数据库

为什么InnoDB的时间这么长?

我该怎么做才能加快速度?

数据库安装执行以下步骤

1)滴眼液的模式

2)创建的模式

3)创建表

4)创建存储过程

5)插入默认数据

6)通过存储过程插入数据

编辑:

默认数据的插入花费大部分时间

+0

哪个步骤占用大部分时间? – Zoredache 2009-01-19 11:53:54

回答

5

修改插入数据的步骤在开始启动一个事务,并在提交它结束。你会得到改善,我保证。 (如果您有大量数据,则可能需要将事务分解为每个表)。

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

3

15分钟似乎并没有过多的给我。毕竟,这是一次性成本。

我不确定,但我会想象那部分解释是参照完整性不是免费的。 InnoDB必须做更多的工作来保证它,所以当然需要更多的时间。

也许您的脚本需要更改以在创建表之后添加约束。

+1

也可能考虑使用单个事务而不是自动提交。 – falstro 2009-01-19 12:33:08

+0

@roe - thanks - 单笔交易使事情变得更快 – 2009-01-19 15:15:34

0

像duffymo说的那样,在插入数据之前禁用你的约束(索引和foreing /主键)。

也许你应该通过存储过程插入数据之前恢复一些指标,如果它使用了很多选择声明