mysql插入2000万数据_Mysql千万级别数据批量插入,性能提高
-----------------------------------------------------------方式1 ----------------------------------------------------------------------------------------
第一步:配置my.ini文件
文件中配置
bulk_insert_buffer_size=120M 或者更大
将insert语句的长度设为最大。
Max_allowed_packet=1M
Net_buffer_length=8k
保存
第二步:查看设置的参选有没有生效.
Mysql > SHOW VARIABLES;
bulk_insert_buffer_size默认是8M,我们要把它调成100M或百兆以上,也不要太大。下面看调整个好的,如下图:
第三步:完成设置后,批量插入数据时使用多条模式。
INSERT INTO table (field1,field2,field3) VALUES ('a',"b","c"), ('a',"b","c"),('a',"b","c");
----------------------------------------------------------- 方式2 ----------------------------------------------------------------------------------------
建表语句:
DROP TABLE IF EXISTS `stock_discover`;
CREATE TABLE `stock_discover` (
`code` char(6) NOT NULL,
`index` int(11) unsigned NOT NULL DEFAULT '0',
`name` varchar(20) NOT NULL,
`exchange` varchar(10) NOT NULL DEFAULT '',
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`yesterday` double unsigned NOT NULL,
PRIMARY KEY (`code`,`index`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
单个添加更新
如果记录在表中不存在则进行插入,如果存在则进行更新:
sql = "INSERT INTO stock_discover VALUES ('%s', 2, '%s', 'HZ', '%s', '%s')" \
" ON DUPLICATE KEY UPDATE `date` = '%s' , yesterday = '%s''"
#数据格式
data = ['000005', u'合肥', '2018-09-19 14:55:21', u'2520.64']
sql = sql % (data[0], data[1], data[2], data[3], data[2], data[3])
cursor.execute(sql)
批量添加更新
在更新大量数据时可能同时遇到两个问题:
① 如果每条更新执行一次sql性能很低,也容易造成阻塞;
② 批量更新时又有可能遇到主键重复的问题
使用 ON DUPLICATE KEY UPDATE 一条sql解决批量更新和主键重复问题(id为主键),使用executemany进行批量插入
# 记录在表中不存在则进行插入,如果存在则进行更新
sql = "INSERT INTO `stock_discover` VALUES (%s, %s, %s, %s, %s, %s) " \
"ON DUPLICATE KEY UPDATE `date` = VALUES(`date`) , yesterday = VALUES(yesterday)"
#数据格式如下:
data_info = [('000005', 2, u'合肥', 'HZ', '2018-09-19 14:55:21', u'2520.64'),
('000006', 2, u'北京', 'HZ', '2018-09-19 14:55:21', u'2694.92'),
('000007', 2, u'上海', 'HZ', '2018-09-19 14:55:21', u'2745.38')]
#批量插入使用executement
cursor.executemany(sql, data_info)
注意: ON DUPLICATE KEY UPDATE是mysql特有的语法,对于其他sql并不一定适用
也可以使用如下方法:
Mysql插入数据的SQL语句主要有:
1、insert into表示插入数据,数据库会检查主键,如果出现重复会报错;
2、replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;
3、insert ignore表示,如果表中如果已经存在相同的记录,则忽略当前新数据;
create table testtb(
id int not null primary key,
name varchar(50),
age int
);
insert into testtb(id,name,age)values(1,'bb',13);
select * from testtb;
insert ignore into testtb(id,name,age)values(1,'aa',13);
select * from testtb;
replace into testtb(id,name,age)values(1,"aa",12);
select * from testtb;
mysql插入2000万数据_Mysql千万级别数据批量插入,性能提高相关推荐
- mysql插入数据返回主键值_Mysql千万级别数据批量插入只需简单三步!
第一步:配置my.ini文件 文件中配置 bulk_insert_buffer_size=120M 或者更大 将insert语句的长度设为最大. Max_allowed_packet=1M Net_b ...
- mysql数据库 性别 优化_BATJ解决千万级别数据之MySQL 的 SQL 优化大总结
引用 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提高程序性能,还能减低线上故障的概率. 目前常用的 SQL 优化方式包括但不限于:业务层优化.SQL 逻 ...
- mysql数据库千万级别数据的查询优化和分页测试
原文地址:原创 mysql数据库千万级别数据的查询优化和分页测试作者:于堡舰 本文为本人最近利用几个小时才分析总结出的原创文章,希望大家转载,但是要注明出处 http://blog.sina.co ...
- B+Tree索引为什么可以支持千万级别数据量的查找——讲讲mysql索引的底层数据结构
MySQL索引底层数据结构 索引是存储引擎快速找到记录的一种数据结构 一. 有索引与没索引的差距 先来看一张图: 左边是没有索引的情况,右边是作为col2字段 二叉树索引的情况. 假如执行查找(假设表 ...
- Mysql千万级别数据如何 做分页?
后端开发中为了防止⼀次性加载太多数据导致内存.磁盘IO都开销过⼤,经常需要分⻚展示,这个时候就需要⽤到MySQL的LIMIT关键字.但你以为LIMIT分⻚就万事大吉了么,LIMIT在数据量⼤的时候极可 ...
- 快速清除oracle多个表,Oracle数据库之批量清除一个表的数据,TB级别数据
本文主要向大家介绍了Oracle数据库之批量清除一个表的数据,TB级别数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 有个需求,要求清理8TB的数据,只保留一个月的数据,现 ...
- 圆桌会回顾 | SecureBoost:挑战千万级别样本训练之性能提升篇
[私信获取圆桌会视频] 5月26日,FATE开源社区第九期圆桌会圆满落幕.本次圆桌会,微众陈伟敬为我们分享了SecureBoost:挑战千万级别样本训练之性能提升篇. 接下来带大家回顾经典问答环节,为 ...
- mysql千万级数据怎么删除,MySQL 快速删除大量数据(千万级别)的几种实践方案详解...
这篇文章主要介绍了MySQL 快速删除大量数据(千万级别)的几种实践方案详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 笔者 ...
- mysql如何更新两条数据_mysql根据查询结果批量更新多条数据(插入或更新)
mysql根据查询结果批量更新多条数据(插入或更新) 1.1 前言 mysql根据查询结果执行批量更新或插入时经常会遇到1093的错误问题.基本上批量插入或新增都会涉及到子查询,mysql是建议不要对 ...
最新文章
- 怎么自学python自动化测试-Python移动自动化测试面试 学习 教程
- SVN 使用方法(228)
- 任意两点最短路floyd算法matlab,多源最短路——Floyd算法
- Python if条件判断
- 一步步编写操作系统 29 cpu缓存简介
- ASP.net Ajax 调用Web Service
- 拓端tecdat|R语言中使用RCPP并行计算指数加权波动率
- MRP格式的手机QQ2008软件介绍
- catia中的螺旋伞齿轮画法,基于CATIA的螺旋锥齿轮参数化建模方法研究
- 五年程序员一般多少工资?网友:能活下来我都觉得是庆幸的!
- mysql怎么读取数据,面试建议
- http+flv+java,HTTP-FLV的两种方式
- 二进制除法原理——两种简便方法
- 利用Html与css从零开始制作基础静态网页(web课设)
- Flash鼠绘入门第八课:绘制脱俗荷花-Flash鼠绘脱俗荷花教程(6)
- 项目经理修炼手册 2.1.1 程序员的基本功
- icloud android,果粉当腻了?你和安卓手机只差一个iCloud同步
- 010day(表格及其相关属性)
- 服务器运维管理系统突发故障
- 易创索讯-百度快照劫持网站是一个致命的伤害。