-----------------------------------------------------------方式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千万级别数据批量插入,性能提高相关推荐

  1. mysql插入数据返回主键值_Mysql千万级别数据批量插入只需简单三步!

    第一步:配置my.ini文件 文件中配置 bulk_insert_buffer_size=120M 或者更大 将insert语句的长度设为最大. Max_allowed_packet=1M Net_b ...

  2. mysql数据库 性别 优化_BATJ解决千万级别数据之MySQL 的 SQL 优化大总结

    引用 在数据库运维过程中,优化 SQL 是 DBA 团队的日常任务.例行 SQL 优化,不仅可以提高程序性能,还能减低线上故障的概率. 目前常用的 SQL 优化方式包括但不限于:业务层优化.SQL 逻 ...

  3. mysql数据库千万级别数据的查询优化和分页测试

    原文地址:原创 mysql数据库千万级别数据的查询优化和分页测试作者:于堡舰  本文为本人最近利用几个小时才分析总结出的原创文章,希望大家转载,但是要注明出处  http://blog.sina.co ...

  4. B+Tree索引为什么可以支持千万级别数据量的查找——讲讲mysql索引的底层数据结构

    MySQL索引底层数据结构 索引是存储引擎快速找到记录的一种数据结构 一. 有索引与没索引的差距 先来看一张图: 左边是没有索引的情况,右边是作为col2字段 二叉树索引的情况. 假如执行查找(假设表 ...

  5. Mysql千万级别数据如何 做分页?

    后端开发中为了防止⼀次性加载太多数据导致内存.磁盘IO都开销过⼤,经常需要分⻚展示,这个时候就需要⽤到MySQL的LIMIT关键字.但你以为LIMIT分⻚就万事大吉了么,LIMIT在数据量⼤的时候极可 ...

  6. 快速清除oracle多个表,Oracle数据库之批量清除一个表的数据,TB级别数据

    本文主要向大家介绍了Oracle数据库之批量清除一个表的数据,TB级别数据,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 有个需求,要求清理8TB的数据,只保留一个月的数据,现 ...

  7. 圆桌会回顾 | SecureBoost:挑战千万级别样本训练之性能提升篇

    [私信获取圆桌会视频] 5月26日,FATE开源社区第九期圆桌会圆满落幕.本次圆桌会,微众陈伟敬为我们分享了SecureBoost:挑战千万级别样本训练之性能提升篇. 接下来带大家回顾经典问答环节,为 ...

  8. mysql千万级数据怎么删除,MySQL 快速删除大量数据(千万级别)的几种实践方案详解...

    这篇文章主要介绍了MySQL 快速删除大量数据(千万级别)的几种实践方案详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 笔者 ...

  9. mysql如何更新两条数据_mysql根据查询结果批量更新多条数据(插入或更新)

    mysql根据查询结果批量更新多条数据(插入或更新) 1.1 前言 mysql根据查询结果执行批量更新或插入时经常会遇到1093的错误问题.基本上批量插入或新增都会涉及到子查询,mysql是建议不要对 ...

最新文章

  1. 怎么自学python自动化测试-Python移动自动化测试面试 学习 教程
  2. SVN 使用方法(228)
  3. 任意两点最短路floyd算法matlab,多源最短路——Floyd算法
  4. Python if条件判断
  5. 一步步编写操作系统 29 cpu缓存简介
  6. ASP.net Ajax 调用Web Service
  7. 拓端tecdat|R语言中使用RCPP并行计算指数加权波动率
  8. MRP格式的手机QQ2008软件介绍
  9. catia中的螺旋伞齿轮画法,基于CATIA的螺旋锥齿轮参数化建模方法研究
  10. 五年程序员一般多少工资?网友:能活下来我都觉得是庆幸的!
  11. mysql怎么读取数据,面试建议
  12. http+flv+java,HTTP-FLV的两种方式
  13. 二进制除法原理——两种简便方法
  14. 利用Html与css从零开始制作基础静态网页(web课设)
  15. Flash鼠绘入门第八课:绘制脱俗荷花-Flash鼠绘脱俗荷花教程(6)
  16. 项目经理修炼手册 2.1.1 程序员的基本功
  17. icloud android,果粉当腻了?你和安卓手机只差一个iCloud同步
  18. 010day(表格及其相关属性)
  19. 服务器运维管理系统突发故障
  20. 易创索讯-百度快照劫持网站是一个致命的伤害。

热门文章

  1. STM32F103(五)——关于EXIT外部中断介绍
  2. OTT 的快速频道切换(FCC)
  3. MATLAB|学生版本|正版打开安装包出现无法连接mathworks解决方案
  4. JS创建、获取、删除 cookie 方法
  5. 何必心中无码,AI让你眼见为实
  6. VS2008 安装失败解决方案
  7. 主要的Ajax框架都有什么?
  8. 企业深入推进精细化管理,实现可持续发展
  9. python 3.8 安装pyaudio失败的解决办法
  10. qeephp3.0 发布了