我是一名 PHP 开发人员,所以不要太严格。我有一个大表 ~5.5gb 转储。我们的 PM 决定在其中创建新列以执行新功能。表是 InnoDB 所以我试过:
使用表锁定更改屏幕中的表。花了大约 30 小时,一无所获。所以我只是阻止了它。首先我犯了一个错误,因为我没有结束所有交易,但第二次没有多锁。状态是copy to tmp table
。
由于我还需要为此表应用分区,因此我们决定使用相同的名称和新结构进行转储、重命名和制作表。但是转储正在制作严格的副本(至少我没有发现其他东西)。所以我添加了转储一个新列sed
并查询它。但是一些奇怪的错误开始了。我相信这是由字符集引起的。utf-8 中的表和文件在sed
. 所以我在 30% 的数据上遇到了错误(未知命令 '\'')。所以这也是一种不好的方式。
还有哪些其他选项可以实现这一点并提高性能(我可以使用 php 脚本来完成,但需要很长时间)。INSERT SELECT
在这种情况下会有什么表现。
感谢您的任何提前。