MySQL有一个重命名的表状态,允许您更改表的名称。
手册提到
重命名操作是原子性的,这意味着在重命名运行时,没有其他会话可以访问任何表。
手册没有说明这个重命名是如何完成的。是否创建了整个表副本,给出了新名称,然后删除了旧表?或者MySQL在幕后做了一些魔术来快速重命名这个表?
换句话说,表的大小是否会影响重命名table语句运行所需的时间。是否还有其他事情可能导致块的重命名显着地阻塞?
发布于 2009-05-20 01:29:27
我认为MySQL只需要在存储过程中修改元数据和对表旧名称的引用--表中的记录数量应该是不相关的。
发布于 2009-05-20 02:03:22
除了修改元数据之外,它还重命名相关的.FRM文件。虽然他们可以声称它是一个“原子”操作,但这是mysql_rename_tables函数代码中的一个实际注释.
/* Lets hope this doesn't fail as the result will be messy */=)
https://stackoverflow.com/questions/885771
复制相似问题