首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在复制的mysql结构中重命名表的风险是什么?

问在复制的mysql结构中重命名表的风险是什么?
EN

Stack Overflow用户
提问于 2011-07-27 11:49:12
回答 2查看 3.4K关注 0票数 1

我有一个cron脚本,它创建了mysql表的更新版本,该表是为站点搜索目的而优化的。

在站点搜索中使用的表称为tblSearch。

cronjob创建一个新的表wrkSearch,当它填充表结束时,删除tblSearch和重命名wrkSearch (两个表都有MySam引擎)。

代码语言:javascript
复制
DROP TABLE IF EXISTS `tblSearch
RENAME TABLE `wrkSearch` TO tblSearch

这很好,但我想知道这是否是解决这个问题的好办法。

我想知道你的考虑是否根据表的大小而改变.例如:“对于非常大的表来说,解决方案可能是危险的.”

我知道,在mysql表中更改某些内容的每个查询都是在文件系统上写东西.但是,在重命名而不是更新/插入之间有什么区别吗?我正在试图了解RENAME命令是否对文件系统有更大的影响。

表中的另一个元素是te数据库是用主从结构复制的.因此,我还想知道这是否最终会增加重命名查询背后的风险

对我来说重要的另一个方面是使用的系统资源的数量.重命名操作是否比更新/插入更贪婪?

EN

回答 2

Stack Overflow用户

发布于 2011-07-27 12:23:00

您应该更改顺序;首先重命名,而不是删除:

代码语言:javascript
复制
RENAME TABLE tlbSearch TO tblSearchDropMe, wrkSearch TO tlbSearch;
DROP TABLE tblSearchDropMe;

由于重命名是原子的,因此其他进程绝不会访问tblSearch;当第一次删除时,可能会发生重命名。

除此之外,我没有看到任何与复制相关的问题。

票数 2
EN

Stack Overflow用户

发布于 2011-07-27 11:53:47

重命名本身是超快的。如果要删除表中的所有内容并将其创建为creating,则此方法是可以的。(不过,请检查它是否确实正确地复制。)

但是,关于复制,这意味着需要传输表的整个数据。

如果可以的话,最好是更新表中的数据--这样只会改变一些数据,而不是所有的东西。

我要指出的是,这种操纵是不受欢迎的但就像所有的规则一样,有时你必须打破它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6843801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档