恢复InnoDB表:非常慢?

时间:2011-08-18 16:13:32

标签: mysql foreign-keys innodb myisam performance

我曾经处理过Myisam表,但是对于外来连接,我改为Innodb表(已转换,并添加了外键)。我经常从服务器下载数据库,并用它填充localhost。当它是myisam表时,它曾经很快就像地狱一样。但现在它需要超过30分钟...我知道它必须在插入记录之前进行检查,但我禁用了外键检查。它的一些方面:

SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS t1;
CREATE TABLE `t1` (  `ID` int(10) unsigned NOT NULL auto_increment,  `NAME` varchar(255) NOT NULL default '',  PRIMARY KEY  (`ID`),  UNIQUE KEY `Index_2` (`NAME`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
TRUNCATE TABLE t1;

删除/创建/截断所有表。然后INSERT,INSERT ......如何让它更快?

1 个答案:

答案 0 :(得分:2)

假设您使用mysqldump,请使用--extended-insert。这会将多行的插入组合成一个语句。

同时尝试--disable-keys选项。这不仅会禁用外键检查,还会禁用索引更新,直到插入所有行。一次更新索引通常要快得多。

如果您没有使用mysqldump,则可以在转储前执行ALTER TABLE table_name DISABLE KEYS;,并在每个表的转储后执行ALTER TABLE table_name ENABLE KEYS;

但是,您可能会发现特定于数据库引擎的备份工具会更快。试试XtraBackup