小编ine*_*rsa的帖子

如何将列添加到 MySQL 中的大表

我是一名 PHP 开发人员,所以不要太严格。我有一个大表 ~5.5gb 转储。我们的 PM 决定在其中创建新列以执行新功能。表是 InnoDB 所以我试过:

  1. 使用表锁定更改屏幕中的表。花了大约 30 小时,一无所获。所以我只是阻止了它。首先我犯了一个错误,因为我没有结束所有交易,但第二次没有多锁。状态是copy to tmp table

  2. 由于我还需要为此表应用分区,因此我们决定使用相同的名称和新结构进行转储、重命名和制作表。但是转储正在制作严格的副本(至少我没有发现其他东西)。所以我添加了转储一个新列sed并查询它。但是一些奇怪的错误开始了。我相信这是由字符集引起的。utf-8 中的表和文件在sed. 所以我在 30% 的数据上遇到了错误(未知命令 '\'')。所以这也是一种不好的方式。

还有哪些其他选项可以实现这一点并提高性能(我可以使用 php 脚本来完成,但需要很长时间)。INSERT SELECT在这种情况下会有什么表现。

感谢您的任何提前。

mysql innodb

16
推荐指数
3
解决办法
4万
查看次数

标签 统计

innodb ×1

mysql ×1