Mysql 提升大数据表的拷贝效率
工作上会经常遇到量级比较大的数据表 ;
场景: 该数据表需要进行alter操作 比如增加一个字段,减少一个字段. 这个在一个几万级别数据量的数据表可以直接进行alter表操作,但是要在一个接近1000W的数据表进行操作,不是一件容易的事;
可能情况:1.导致数据库崩溃或者卡死 2.导致其他进程 进行数据库读写I/O变慢 3.还有一个可能就是数据格式不一致 导致数据无法写入(比如一个varchar类型要改为int类型,当数据长度过大时会报错)
解决方案:--
1.重新创建一张数据表 create new_table select * from old_table 这种形式相当于复制一张新的数据表 ----(不建议): 这里面仅仅复制数据表的字段和数据 , 但是表结构 主键,索引和默认值都不会拷贝过来
2.分成两个步骤
1).create new_table like old_table 创建一个新表,表结构和old_table一致(包含主键,索引和默认值等)
2).insert into new_table select * from old_table 把old_table的数据全部拷贝到new_table里面去
----(如果数据量少的话,在几万行左右建议使用此方案, 如果数据量到达数百万 上千万时, 这个也是不适用的)
扩展: 如果你只要拷贝一部分数据表的话,可以指定 insert into new_table (字段1,字段2) select 字段1,字段2 from old_table [limit n,m] ;
3.
1).通过select from into outfile 命令来导出数据表数据
2).通过load data infile into 命令来导入数据表数据
不多废话 直接看图,感受下100万左右的数据量 方案2 和 方案3 处理速度相差多少
>select * from money_info into outfile '/var/lib/mysql-files/money.txt';
>create table money_info_cyq11 like money_info;
>load data infile '/var/lib/mysql-files/money.txt' into table money_info_cyq11;
>create table money_info_cyq22 like money_info;
>insert into money_info_cyq22 select * from money_info;
速度在4倍左右,网上说的20倍还没体验到[捂脸]
注:这里还存在一个问题
outfile的目录是有要求的
>show variables like '%secure%';
通过这条命令可以看到secure_file_priv 对应out_file的目录在哪个位置 , 指定这个位置导出即可;
Mysql 提升大数据表的拷贝效率的更多相关文章
- mysql 清除大数据表单
背景:mysql数据库中有个日志表记录高达800多万,影响了mysql的正常业务访问,现需要清理三个月之前的所有数据,大概600多万(大概13G) 方法一:传统delete from xxx,传统,普 ...
- Mysql提升大数据导入速度的绝妙方法
一.对于Myisam类型的表,可以通过以下方式快速的导入大量的数据. ALTER TABLE tblname DISABLE KEYS; loading the data A ...
- 浅谈利用PLSQL的多线程处理机制,加快处理大数据表的效率
我们在处理大数据表的时候经常会感觉的处理速度不够快,效率不够高,那么今天下面我就来简单实现下PLSQL的多线程编程处理数据: 我模拟一个简单的场景,把某一张表中的数据(当然这张表的数据非常大)同步到目 ...
- mysql千万级数据表,创建表及字段扩展的几条建议
一:概述 当我们设计一个系统时,需要考虑到系统的运行一段时间后,表里数据量大约有多少,如果在初期,就能估算到某几张表数据量非常庞大时(比如聊天消息表),就要把表创建好,这篇文章从创建表,增加数据,以及 ...
- DBeaver数据表的拷贝过程
通过DBeaver工具链接数据库后,我们就可以通过菜单或者命令功能来实现我们想要的目的. (一)创建数据库 新建数据库,如下图所示: ——> 在点击“确定”按钮后,可能会遇到失败,此时,我们可 ...
- mysql处理大数据量的查询速度究竟有多快和能优化到什么程度
mysql处理大数据量的查询速度究竟有多快和能优化到什么程度 深圳-ftx(1433725026) 18:10:49 mysql有没有排名函数啊 横瓜(601069289) 18:13:06 无 ...
- MySQL在创建数据表的时候创建索引
转载:http://www.baike369.com/content/?id=5478 MySQL在创建数据表的时候创建索引 在MySQL中创建表的时候,可以直接创建索引.基本的语法格式如下: CRE ...
- Oracle大数据表的分表处理
1.首先给大数据表创建rownum序列号 --增加序列号字段 alter table TEST add xlh number; --填充序列号 update TEST set xlh = rownum ...
- mysql status关键字 数据表设计中慎重使用
mysql status关键字 数据表设计中慎重使用
随机推荐
- oracle命令2
使用DDL创建和管理表 DBA角色:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构,并且系统权限也需要DBA授出,且DBA用户可以操作全体用户的任意基表,包括删除 grant dba t ...
- Postgresql导出数据报版本不对
zabbix使用得数据库是Postgresql,最近zabbix4.0版本出来了,准备把zabbix升级,得先把数据库备份,但是一直报错,如下: 查找服务器上是否有10的版本,也一直没找到 ...
- ubuntu拒绝root用户ssh远程登录解决办法
ubuntu拒绝root ssh远程登录通常情况是ssh设置了禁止root远程登录,解决办法就是:修改ssh配置,然后重启ssh服务即可. vi /etc/ssh/sshd_config 找到并用#注 ...
- Windows驱动开发
http://blog.csdn.net/sagittarius_warrior/article/details/51000241
- 机器学习简要笔记(五)——Logistic Regression(逻辑回归)
1.Logistic回归的本质 逻辑回归是假设数据服从伯努利分布,通过极大似然函数的方法,运用梯度上升/下降法来求解参数,从而实现数据的二分类. 1.1.逻辑回归的基本假设 ①伯努利分布:以抛硬币为例 ...
- Hibernate工作原理及为什么要用?
1.原理: 1.读取并解析配置文件 new Configuration().configure()2.读取并解析映射信息,创建SessionFactory sf=buildSessionF ...
- JS高级-异步
单线程 只有一个线程,同一时间只能做一件事 原因:避免DOM渲染的冲突 浏览器需要渲染DOM JS可以修改DOM结果 JS执行的时候,浏览器DOM渲染会暂停 两段JS也不能同时执行(修改DOM就冲突) ...
- 搭建基于MySQL的读写分离工具Amoeba
搭建基于MySQL的读写分离工具Amoeba: Amoeba工具是实现MySQL数据库读写分离的一个工具,前提是基于MySQL主从复制来实现的: 实验环境(虚拟机): 主机 角色 10.10.10.2 ...
- Python2.x 与 Python3.x 共存
一.Python2.x 安装 说明:我们先安装python2.x,默认C盘安装即可. 链接: https://pan.baidu.com/s/1yfsVNKmeOR-2C0fK0rPh4A 密码: x ...
- 关于tp5自动过滤index.php
在public/.htaccess 中输入这段代码即可实现过滤index.php <IfModule mod_rewrite.c> Options +FollowSymlinks -Mul ...