gpt4 book ai didi

mysql - 为什么重命名数据库需要复制数据?

转载 作者:行者123 更新时间:2023-11-29 21:42:07 24 4
gpt4 key购买 nike

使用 phpMyAdmin,我尝试重命名我的 6GB 数据库,却发现该操作需要几个小时。根据this SO question ,听起来重命名数据库需要创建一个新数据库并复制数据。为什么名称不只是指向可以随意更改的文本的指针?

2016 年 3 月 14 日编辑

我最初接受了甘道夫的回答,因为我无法复制数据库重命名花了这么长时间。但这个漫长的更名过程再次发生。下面是phpMyAdmin挂起的截图:

enter image description here

下面是直接连接到 MySQL 服务器时 SHOW PROCESSLIST 结果的屏幕截图:

enter image description here

看起来查询在添加约束时正在旋转。我很确定 phpMyAdmin 运行的命令是:

RENAME TABLE harmonizome_temp TO harmonizome;

最佳答案

如果在此过程中出现错误,这可能是确保数据库完整性所必需的。

有关数据库的信息既存储在文件系统(每个数据库是一个目录)中,也存储在 INFORMATION_SCHEMA 数据库中。当您重命名数据库时,两者都必须更新。如果它只是重​​命名目录并更新 INFORMATION_SCHEMA,那么在一段时间内它们会不同步。如果进程在此阶段中止,数据库将被损坏。

通过复制数据,可以确保它们永远不会不同步。直到 INFORMATION_SCHEMA 更新为引用新数据库名称之后之后,旧目录才会被删除。如果该过程在中间中止,文件系统中将会有重复的数据,但 INFORMATION_SCHEMA 将指向其中之一(事务可以确保 INFORMATION_SCHEMA 中的所有内容> 以原子方式更新)。

关于mysql - 为什么重命名数据库需要复制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34404139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com