暂无图片
Mysql数据库里有多张表需要全量更新(删除所有数据重新写入),要么全部表更新成功要么全部表不更新,总的数据量大概在百万左右
我来答
分享
樱桃小丸子
2021-11-26
Mysql数据库里有多张表需要全量更新(删除所有数据重新写入),要么全部表更新成功要么全部表不更新,总的数据量大概在百万左右

我想到的方法是:
1.开启事务逐表更新完提交,但是事务锁时间太长会出问题
2.写入到临时表后再改名,但是万一某个重命名某个表错误数据就错乱了
请教大家一下有什么思路?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
文成

第二个方案比较好,可以写个通用的工具脚本,防止出错。
另外这种全量更新应该频次不频繁,如果比较频繁或者周期比较短,要考虑需求的合理性

暂无图片 评论
暂无图片 有用 1
暂无图片
樱桃小丸子
题主
2021-11-26
谢谢老师
DarkAthena

一般来说,这种应该是选导入临时表再重命名的方式,但是题主设定了一个特殊场景,有多张表,中间不人工介入,一旦失败就要都还原。

写脚本的话,中间要写判断。

先把所有表的数据都导入临时表,然后按指定的顺序开始重命名,一旦某个表重命名失败,就把前面重命名成功的表都重命名回去。但是按照题主的说法,可能重命名回去也会失败?

所以在这种奇葩的背景下,我想到的唯一方案就是克隆一个一模一样的库,在克隆库里随你怎么造,只有判断全部成功了,再切库,有一个失败就不切库

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏