千万级数据update导致mysql数据库占用率剧增

我从sysbase数据库中迁移了5000万条数据到mysql,因为数据中存在大量空格我就按数据日期进行了update,结果导致数据库占用剧增将近100G。有人知道是什么原因导致的么,没有插入新的数据仅做了update。

应该是增加了日志文件的大小,可以查看一下日志文件。

啧啧,千万级update
首先where不走索引的话就全表扫描了,在然后lock住where捕获的行数量大的话直接裂开
这种情况还是在数据迁移过程中直接处理空格比较好

Mysql我并不太了解,但是从数据库角度来说以下这种情况是可能的。
由于你在进行更新时,很有可能现有的数据块无法存储下这些数据,可能发生了行迁移或行连接,那么存储这些数据本身会使空间增加。数据是按块存储的,例如一个块8KB,哪怕只用了7字节,但是仍然会占用8KB。
其次分配数据块的时候表越大每次分配的空闲数据块会越多。例如一开始分配8个块,随着表增大每次就变成16,甚至8192个块,那么这会导致额外分配了大量空间,你在磁盘上看使用了大量空间,但是实际上并没有这么多数据,因为这些块很多可能是空闲以及不满的。这种情况后续的insert仍然会将其补满
如果你是Oracle,我可以教你如何确定是这种问题,但mysql我现在不是很精通,所以无法指导你,我建议你可以按照我说的方向去百度找个方法验证一下。
当然也有一种方法去验证,你新建一个表空间,和数据文件,然后并新建一个表到这个表空间上,然后UPDATE的数据插入到这张表看看空间使用多少,然后再将原表删除,然后收缩原表空间的数据文件,大概可以确定是不是该问题引起。