MySQL有一个RENAME TABLE statemnt,允许您更改表的名称。
手册提及
重命名操作以原子方式完成,这意味着没有其他会话可以 在重命名运行时访问任何表
本手册没有(据我所知)说明如何完成重命名。是否创建了表的完整副本,给定了新名称,然后删除旧表?或者MySQL在幕后做了一些魔术来快速重命名表?
换句话说,表的大小是否会影响RENAME表语句运行的时间。还有其他可能导致块重命名的事情会严重阻塞吗?
答案 0 :(得分:5)
我认为MySQL只需要在存储过程中更改元数据和对表的旧名称的引用 - 表中的记录数应该是无关紧要的。
答案 1 :(得分:1)
除了更改元数据外,它还重命名关联的.FRM文件。虽然他们可以声称它是一个“原子”操作,但这是mysql_rename_tables函数代码中的实际注释......
/* Lets hope this doesn't fail as the result will be messy */
=)