MySQL修改数据类型的问题总结(r10笔记第74天)
公众号:杨建荣的学习笔记 · 作者:杨建荣 · 发布:2016-11-05 23:09:35 · 原文链接
昨天快下班的时候,突然开发的同事找我说有个紧急需求,负责这个业务的DBA同事回家了,想让我帮忙看看,运行个SQL语句,几秒钟就好。我一听,就本着人道主义的精神留下来处理,但是发现似乎留给我的是一个大坑。
了解了问题之后,让我有些后背发凉,这个表根据开发同事反馈有20亿的数据,这得多大的一个表啊,当前的问题是这个表里的主键id数据类型是int,因为数据类型的限制已经达到了最大值,现在插入不了数据了。希望我帮忙处理一下,把数据类型修改为bigint.
我们简单来了解一下MySQL的数据类型。
对于数据类型有下面的一些总结,更详细可以参见之前写的一篇。MySQL数据类型(r3笔记第87天)

所以现在的int数据类型已经达到了最大值2 147 483 647。
修改数据类型,扩展一般是可行的,但是这个环境MySQL版本还比较低,所以pt-osc的工具是别想了,而且20亿的数据就算处理也得耗上不少的时间。
简答了解了下问题,我一直纠结这个修改数据类型的操作影响时长。
20亿的数据做这样的操作,想必经历的人也不会太多,偏偏当了友情支持,我登录到指定的环境,仔细一看,这个表原来没有20亿的数据,只是id递增到了20亿的级别,表里有几百万的数据,对应的数据文件看有500M左右,所以这个问题让我悬着的心终于踏实了一些。
