gpt4 book ai didi

mysql - 我需要将当前有 10 亿条记录的数据库的数据类型从 float 更改为十进制

转载 作者:可可西里 更新时间:2023-11-01 07:19:59 24 4
gpt4 key购买 nike

我需要将当前有 10 亿条记录的数据库的数据类型从 float 更改为十进制。有什么不可预见的问题吗?谢谢

最佳答案

这将需要很长时间,并且需要大量周密的计划。如果你非常仔细地做,你应该计划好几天。如果您只是执行 ALTER TABLE,它可能会运行一周然后崩溃。我不是在开玩笑。

你能避免这样做吗?您能否创建一个将浮点列显示为十进制的 View ?尽量避免它会很聪明。

如果您必须继续这样做,您应该尝试向表中添加一个新列,而不是更改现有列。假设您的旧列称为 metric,新列称为 dmetric。进一步假设您的 metric 列定义为 NOT NULL。

然后创建新列,使其允许 NULL。

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

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

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

这将以合理大小的 block 进行转换,并防止事务(如果您在 innodb 世界中)变得太大。

在表格的副本上试试这个。

关于mysql - 我需要将当前有 10 亿条记录的数据库的数据类型从 float 更改为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34277208/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com