数据量千万级的表修改表结构的处理方法

       因为业务需求,用到了以前建表的预留字段,可是所需栏位的字段长度较长,须要修改预留字段的长度。在测试库上进行了修改测试,测试库的数量是3千万量级的,操做过程当中数据库会进行批量锁死,处理时间大于两个小时(修改的字段是varchar类型,且长度从64扩展到512,耗时主要跟单条记录的数据宽度有关)。sql

       表的锁死是生产环境锁不能接受的,尤为是这么长的时间。因而建了一张新的表,知足扩展字段,修改字段长度的需求。而后选择在凌晨将凌晨之前的数据导入新表中,我是分红小段插入的新表,语句以下,有四万多条这样的语句,写个小demo提早生产.sql文件数据库

INSERT INTO asset_record_copy (id, uid, uname,) SELECT id, uid, uname, FROM asset_record r WHERE AND r.time > '' LIMIT 19980000, 10000
INSERT INTO asset_record_copy (id, uid, uname,) SELECT id, uid, uname, FROM asset_record r WHERE AND r.time > '' LIMIT 19990000, 10000

     而后把以前的表名进行切换,重启新的服务就实现了改表结构的需求。在切换表名重启服务的过程当中,会有两三分钟的中止对外服务。最后把拉下的不到一天的数据补上就行了。测试

相关文章
相关标签/搜索