添加新列的MySql会导致连接太多

时间:2012-11-06 17:55:10

标签: mysql sql

我的问题是当我向我的实时数据库添加新列时,MySQL会遇到“Too many connections”错误。

数据库有100万条记录,因此需要一段时间才能添加。

  • 桌子锁定的原因是什么?
  • 如何让桌子继续运行?

我在表上执行的查询有100万条记录(InnoDB)

ALTER TABLE table_name 
ADD COLUMN new_table_column INT(11) NULL 
DEFAULT NULL ;

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试运行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

ALTER TABLE without locking the table?

答案 1 :(得分:0)

在添加列时,mysql的速度非常慢。

据我所知,所有数据库在添加列时都会锁定表,因为它们正在更改磁盘上的布局,并且需要大量的I / O.

通常它很慢(特别是使用mysql),它在生产中的方式是创建一个带有额外列的新表,复制数据,重命名表并开始使用新表。你当然会在你这样做时停止写访问,但是完成工作要快得多。