MySQL更改引擎大百万行表

MySQL更改引擎大百万行表,mysql,innodb,Mysql,Innodb,我想将200万行表的引擎从MyISAM更改为InnoDB。我害怕这个长时间的操作,所以我创建了类似结构的InnoDB表,现在我想将所有数据从旧表复制到新表。最快的方法是什么?选择插入?开始交易怎么样?请帮忙。我不想挂起我的服务器。帮你自己一个忙:把整个设置复制到你的本地机器上,然后在那里全部试用。你会对自己的处境有更好的了解。请注意生产服务器和本地计算机之间的硬件潜在差异 最快的方法可能是最直接的方法: INSERT INTO table2 SELECT * FROM table1; 我怀疑你

我想将200万行表的引擎从MyISAM更改为InnoDB。我害怕这个长时间的操作,所以我创建了类似结构的InnoDB表,现在我想将所有数据从旧表复制到新表。最快的方法是什么?选择插入?开始交易怎么样?请帮忙。我不想挂起我的服务器。

帮你自己一个忙:把整个设置复制到你的本地机器上,然后在那里全部试用。你会对自己的处境有更好的了解。请注意生产服务器和本地计算机之间的硬件潜在差异

最快的方法可能是最直接的方法:

INSERT INTO table2 SELECT * FROM table1;

我怀疑你做这件事的速度不可能比圣坛内置的更快。它必须复制所有数据并重建所有索引

确保已启动
innodb\u buffer\u pool\u size
以准备innodb。并降低
键缓冲大小
以留出空间。分别建议35%和12%的RAM用于过渡。所有表转换后,建议使用70%和20MB

一个轻微的加速是执行一些select操作,获取整个表和整个
主键(如果可以缓存的话)。这将在真正开始之前执行一些I/O。示例:
从tbl中选择平均值(id),其中id是主键。和
从tbl中选择平均值(foo),其中foo没有索引,但为数值。这将强制对PK索引和数据进行完整扫描,从而缓存
ALTER
必须读取的内容


转换的其他提示:。

安排停机时间。