代码之家  ›  专栏  ›  技术社区  ›  Alana Storm

MySQL的重命名表语句是如何工作/执行的?

  •  3
  • Alana Storm  · 技术社区  · 15 年前

    MySQL有一个重命名表状态,允许您更改表的名称。

    手册提到

    重命名操作是自动执行的,这意味着没有其他会话可以 运行重命名时访问任何表

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

    换句话说,表的大小是否影响RENAME TABLE语句的运行时间?是否还有其他可能导致块重命名为显著块的事情?

    2 回复  |  直到 15 年前
        1
  •  5
  •   Alex Martelli    15 年前

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

        2
  •  1
  •   great_llama    15 年前

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

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

    =)