我的问题是,当我向活动数据库添加一个新列时,MySQL会遇到“连接太多”错误。MySql在连接太多的情况下添加新的列结果
数据库有100万条记录,所以需要一段时间才能添加。
- 表锁是什么原因?
- 如何保持表格运行?
我在桌子上执行1万条记录(InnoDB的)
ALTER TABLE table_name
ADD COLUMN new_table_column INT(11) NULL
DEFAULT NULL ;
感谢查询!
我的问题是,当我向活动数据库添加一个新列时,MySQL会遇到“连接太多”错误。MySql在连接太多的情况下添加新的列结果
数据库有100万条记录,所以需要一段时间才能添加。
我在桌子上执行1万条记录(InnoDB的)
ALTER TABLE table_name
ADD COLUMN new_table_column INT(11) NULL
DEFAULT NULL ;
感谢查询!
尝试运行show processlist;
以查看连接是什么。 http://dev.mysql.com/doc/refman/5.1/en/show-processlist.html
我也会看看你的mysql配置,特别是检查max_connections设置。更改该设置将需要重新启动mysql服务器。 http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html
InnoDB需要一个表锁,你可以做的事情不多。
看看这些关于如何做到这一点的一些想法:
Optimizing MySQL for ALTER TABLE of InnoDB
和
的MySQL是在添加列名的慢。
据我所知,所有数据库在添加列时锁定表,因为它们正在改变磁盘布局,并且它需要大量的I/O。
它通常很慢(特别是对于mysql),它在生产中的做法是创建一个带有额外列的新表,将数据复制,重命名表并开始使用新表。当然,当你这样做时,你会停止写入访问,但是完成工作要快得多。
是的,我认为有没有真正的另一种解决方案来保持表在这样的过程中活着。感谢你的回答! – directory
感谢您的回答和链接。我认为达到MySQL连接的最大限度并不是一个好的选择,你会很快遇到同样的问题(我猜)。无论如何感谢您的答案:) – directory