我是PHP开发人员,所以不要严格。我有一张大桌子〜5.5gb转储。我们的项目经理决定在其中添加新列以执行新功能。表是InnoDB,所以我尝试了什么:
使用表锁更改屏幕中的表。花了大约30个小时,什么也没有。所以我就停止了。首先,我犯了一个错误,因为我没有结束所有事务,但是第二次不是多重锁。状态为
copy to tmp table
。由于我还需要对此表进行分区,因此我们决定进行转储,重命名并使用相同的名称和新的结构来创建表。但是转储正在严格复制(至少我没有发现其他东西)。所以我添加了一个新的转储列
sed
并进行查询。但是一些奇怪的错误开始了。我相信这是由字符集引起的。utf-8中的表和文件在之后成为us-asciised
。所以我在30%的数据上遇到了错误(未知命令'\'')。所以这也是一个坏方法。
还有什么其他方法可以完成此操作并提高性能(我可以使用php脚本来完成,但是要花很多时间)。INSERT SELECT
在这种情况下的性能如何。
感谢您的任何进步。
SET NAMES utf8
和COLLATION
。但MEH IDK为什么数据的30%后损坏sed
。我认为批量加载将是最快的,但也许我缺少更多的东西。谢谢马克