文档章节

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

h
 hubert_yu
发布于 2017/04/06 15:46
字数 359
阅读 261
收藏 0

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

       表的锁死是生产环境锁不能接受的,尤其是这么长的时间。于是建了一张新的表,满足扩展字段,修改字段长度的需求。然后选择在凌晨将凌晨以前的数据导入新表中,我是分成小段插入的新表,语句如下,有四万多条这样的语句,写个小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

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

© 著作权归作者所有

共有 人打赏支持
h
粉丝 0
博文 6
码字总数 1398
作品 0
浦东
私信 提问
请教各位,关于企业应用中大数据量事务性业务的技术方案

各位好, 遇到一个技术性问题,希望大家支支招,给些建议。 我把业务需求简化一下:A表(主表),A1表(A表的子表),B表。 数据量:A 千万级 A1 (子表A1中1万~10万条记录对应一条A记录) B表...

王树兵
2012/02/19
943
21
Python 一次性转换MySQL数据库所有表的存储引擎

废话不多说,上脚本先: #encoding=utf8import mysql.connector,re 定义一个列表,用于保存数据库内所有表的名称; tl = [] 定义链接信息 config={'host':'192.168.1.254' 'user':'账号', 'p......

水果糖
2016/01/09
193
0
【Oracle】-【索引】先查数据再建索引,还是先建索引再插数据?

问题: 1、新建一个表结构,创建索引,将百万或千万级的数据使用insert导入该表。 2、新建一个表结构,将百万或千万级的数据使用isnert导入该表,再创建索引。 这两种效率哪个高呢?或者说用...

bisal
2013/06/27
0
0
如何把结构相似(不完全相同)的表结构合并,然后部分数据迁移都另一张表中(不知道说清楚没得^o^)

某系统根据用户购买数据已经生成了同时购买同一类别下两个产品的数据,现需要使用该数据,生成同时购买同一类别下三个产品的数据,请设计并简要实现: 说明: 1、表结构如下: create table...

小B
2013/06/19
222
0
Mysql InnoDB的几个疑问

不熟悉Mysql,往各位大佬不吝指点,谢谢! 引擎:InnoDB 版本:Mysql 7.5+/8 数据量:单表千万级 疑问: 1.此种数据量情况增加字段、修改字段长度的操作速度几何?(几秒/几分/几小时/几十小...

IdleMan
2018/07/25
296
5

没有更多内容

加载失败,请刷新页面

加载更多

如何在 Linux 系统查询机器最近重启时间

在你的 Linux 或类 UNIX 系统中,你是如何查询系统上次重新启动的日期和时间?怎样显示系统关机的日期和时间? last 命令不仅可以按照时间从近到远的顺序列出该会话的特定用户、终端和主机名...

来来来来来
今天
2
0
Redis协议是什么样的

前言 我们用过很多redis的客户端,有没有相过自己撸一个redis客户端? 其实很简单,基于socket,监听6379端口,解析数据就可以了。 redis协议 解析数据的过程主要依赖于redis的协议了。 我们...

春哥大魔王的博客
今天
4
0
乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxCool
今天
4
0
携程Apollo统一配置中心的搭建和使用(java)

一.Apollo配置中心介绍 1、What is Apollo 1.1 Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到...

morpheusWB
今天
3
0
远程获得的有趣的linux命令

使用这些工具从远程了解天气、阅读资料等。 我们即将结束为期 24 天的 Linux 命令行玩具日历。希望你有一直在看,如果没有,请回到开始,从头看过来。你会发现 Linux 终端有很多游戏、消遣和...

Linux就该这么学
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部