MySQL的RENAME TABLE语句如何工作/执行?

MySQL有一个RENAME TABLE statemnt,允许您更改表的名称。

手册提到

重命名操作以primefaces方式完成,这意味着在重命名运行时,没有其他会话可以访问任何表

手册没有(据我所知)说明如何完成重命名。 是否创建了表的完整副本,给定了新名称,然后删除旧表? 或者MySQL在幕后做了一些魔术来快速重命名表?

换句话说,表的大小是否会影响RENAME表语句运行的时间。 还有其他可能导致块重命名的事情会严重阻塞吗?

我相信MySQL只需要在存储过程中改变元数据和对表的旧名称的引用 – 表中的记录数应该是无关紧要的。

除了更改元数据外,它还重命名关联的.FRM文件。 虽然他们可以声称它是一个“primefaces”操作,但这是mysql_rename_tables函数代码中的实际注释…

/* Lets hope this doesn't fail as the result will be messy */ 

=)