我需要将数据类型从浮点数更改为当前获得10亿条记录的数据库的十进制数.有没有不可预见的问题?谢谢
这需要很长时间,并需要进行大量精心规划.如果你非常小心,你应该计划多天.如果您只是执行ALTER TABLE,它可能会运行一周然后崩溃.我不是在开玩笑.
你能避免这样做吗?你能创建一个将float列显示为十进制的视图吗?你会很聪明地试图避免它.
如果你必须继续这样做,你应该尝试在表中添加一个新列而不是改变现有列.假设您的旧列被调用metric
并且调用了新列dmetric
.进一步假设您的metric
列定义为NOT NULL.
然后创建新列,以便它允许NULL.
然后在新列上放置一个索引.
然后运行此UPDATE查询大约五十万次,直到它不处理任何行.
UPDATE table SET dmetric = metric WHERE dmetric IS NULL LIMIT 2000
这将以合理大小的块进行转换,并保持交易(如果你在innodb世界中)变得太大.
请在表的副本上尝试此操作.