海量数据表,更改表字段类型问题

  最近服务器上有个数据表,在设计的时候主键是int自增长的,但是最近都没有进入数据,一查发现是表的数据量已经达到20多亿行了。int类型的最大也就大概21亿多,显然是插不进数据,唯有将主键改为bigint型,一开始想更改主键类型  就用一般常想到的方法 先删除主键,再将字段类型改为bigint,然后添加上主键,   alter table drop  index  alter table alter column id bigint  ,后来对一个上亿的表进行测试发现时间很慢,这道没什么,关键是涉及到alter操作日志暴增,很快盘就塞满了,只能中断。

  后来一个同事提议可以新建一个表,只是主键是bigint,其他和原表还是一样,将数据导过去就行,用最基本的select、 insert 操作就行,虽然这也耗时,但是这样日志基本不写,而且由于这个表存的都是外键的key值所以相对可能比alter操作还快,后来试试,这个方式的确不错。而且每次循环小批量插入,操作安全,对表可能的损害见到最小,最后改个表名就行了。

  其实有时候想想用最简单的操作,反而效果是好的,当然如果数据量不大还是写几句alter语句执行就行,不用建表删表那么麻烦。

 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值