复制mysql结构中的RENAME TABLE有哪些风险?
我有一个cron脚本,它创建一个为站点搜索目的而优化的mysql表的更新版本。复制mysql结构中的RENAME TABLE有哪些风险?
那就是在网站搜索中使用的表称为tblSearch
中的cronjob创建新表wrkSearch,当它已经完成填充表结束 下降tblSearch和重命名wrkSearch (包括表有MySam引擎)
DROP TABLE IF EXISTS `tblSearch
RENAME TABLE `wrkSearch` TO tblSearch
这是工作正常,但我想知道,如果是一个很好的解决问题的方法。
我想知道,如果你能考虑更改基于表大小...例如:“该解决方案可以为非常大表造成危险......”
我知道,每个查询这种情况正在改变mysql表中的某些东西正在将文件写入文件系统中......但是在执行RENAME而不是UPDATE/INSERT之间有区别吗?我试图了解,如果RENAME命令对文件系统的更多攻击。
在桌子上的另一个要素是TE数据库复制一个主从结构的事实,所以,我也想知道,如果这最终可能incrase风险的重命名查询
另一个背后对我来说很重要的一点是所使用的系统资源的数量...... RENAME操作可能比UPDATE/INSERT更贪婪吗?
重命名本身超快。如果你从表格中删除所有东西并创建新鲜的方法,那么这种方法很好。 (虽然请检查它是否确实复制正确。)
但是关于复制,它意味着需要传输表的整个数据。
如果可以,更新表中的数据会更好 - 这样,只有部分数据发生变化,而不是所有变化。
我应该指出,这种类型的操纵是皱眉 - 有充分的理由!但是像所有规则一样,有时你必须打破它们。
您应该更改顺序;第一重命名,比降:
RENAME TABLE tlbSearch TO tblSearchDropMe, wrkSearch TO tlbSearch;
DROP TABLE tblSearchDropMe;
由于重命名是原子没有办法其他进程将永远无法进入tblSearch;当第一次下降,然后重命名这可能会发生。
除此之外,我没有看到任何复制相关的问题。
感谢您的建议,但tblSearch的不可用性不是问题 – nulll
请问您可以扩展您的最后陈述吗?为什么这种类型的操纵是皱眉 - 有很好的理由_? – nulll