当前位置:  开发笔记 > 编程语言 > 正文

我需要将数据类型从浮点数更改为当前获得10亿条记录的数据库的十进制数

如何解决《我需要将数据类型从浮点数更改为当前获得10亿条记录的数据库的十进制数》经验,为你挑选了1个好方法。

我需要将数据类型从浮点数更改为当前获得10亿条记录的数据库的十进制数.有没有不可预见的问题?谢谢



1> O. Jones..:

这需要很长时间,并需要进行大量精心规划.如果你非常小心,你应该计划多天.如果您只是执行ALTER TABLE,它可能会运行一周然后崩溃.我不是在开玩笑.

你能避免这样做吗?你能创建一个将float列显示为十进制的视图吗?你会很聪明地试图避免它.

如果你必须继续这样做,你应该尝试在表中添加一个新列而不是改变现有列.假设您的旧列被调用metric并且调用了新列dmetric.进一步假设您的metric列定义为NOT NULL.

然后创建新列,以便它允许NULL.

然后在新列上放置一个索引.

然后运行此UPDATE查询大约五十万次,直到它不处理任何行.

UPDATE table SET dmetric = metric
 WHERE dmetric IS NULL
 LIMIT 2000

这将以合理大小的块进行转换,并保持交易(如果你在innodb世界中)变得太大.

请在表的副本上尝试此操作.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有