首页 > mysql大量数据插入探讨(量变引起质变)

mysql大量数据插入探讨(量变引起质变)

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

 分类:见Visio图

000037_GFT0_1462678.jpg

 关于大量数据导入是应注意以下几点:

  1. 分批导入,导入一批后最后提交(commit),可以使用jdbc的(executeBatch)批量处理但是注意它的最大上限,否则只会执行一部分sql语句,超过上限的sql会自动丢弃;

  2. 注意内存使用(不要出现内存益出, Java heap space;

  3. 尽量使用大量导入工具(bcp,sqlLoader)来完成(未测试不确定) ;

  4. 数据量很大时导入时最好不要做太多的判断,这样会影响导入速度;

  5. 数据量很大时:是在建表时候添加主键(假设主键不是自增长ID列)后插入数据,还是插入数据后添加主键,前者主要的问题是大量数据插入速度减慢,如果是频繁的插入操作会导致数据库奔溃;后者的问题也是大量数据的表添加主键(需要删除重复记录,并根据mysql自己的添加主键机制来处理,速度很慢,而且频繁的操作也会导致数据库的奔溃);

  6. 如果原数据表中有索引,先删除索引,待到导入数据后再建立索引;(主键是唯一索引的特列,这也是 5.中所述的

  7. 由于数据量大的原因,需要配置mysql的my.ini 文件中相关选项,这个过程中如果不是很明白各个参数之间的相关关系,则需要一个参数一个参数的修改,从而提高mysql的整体性能;

  8. insert 语句的处理而言,用StringBuilder代替“+”其性能是个质的提高;

  9. 利用jdbc支持的批量插入(preparedstatement),手动控制事务(将插入的数据分割为多次提交),从而此番优化的程序可达到多线讲程并发高效插入的时效;

  10. 使用create table select *from soucre.table 方式建表和show create table tablename方式建表是不相同的,后者建立的表是和原来的表source.table 结构相同的,但是前者的建表方式得到的表结构是没有主键的;

 

转载于:https://my.oschina.net/u/1462678/blog/227170

更多相关:

  • 本文是西门子开放式TCP通信的第2篇,上一篇我们讲了使用西门子1200PLC作为TCP服务器的程序编写,可以点击下方链接阅读:【公众号dotNet工控上位机:thinger_swj】基于Socket访问西门子PLC系列教程(一)在完成上述步骤后,接下来就是编写上位机软件与PLC之间进行通信。上位机UI界面设计如下图所示:从上图可以看出...

  • 我有一个大型数据集,列出了在全国不同地区销售的竞争对手产品。我希望通过使用这些新数据帧名称中的列值的迭代过程,根据区域将该数据帧分成几个其他区域,以便我可以分别处理每个数据帧-例如根据价格对每个地区的信息进行排序,以了解每个地区的市场情况。我给出了以下数据的简化版本:Competitor Region ProductA Product...

  • 作为一名IT从业者,我来回答一下这个问题。首先,对于具有Java编程基础的人来说,学习Python的初期并不会遇到太大的障碍,但是要结合自己的发展规划来制定学习规划,尤其要重视学习方向的选择。Java与Python都是比较典型的全场景编程语言,相比于Java语言来说,当前Python语言在大数据、人工智能领域的应用更为广泛一些,而且大...

  • 这段时间通过学习相关的知识,最大的变化就是看待事物更加喜欢去了解事物后面的本质,碰到问题后解决问题思路也发生了改变。举个具体的例子,我在学习数据分析,将来会考虑从事这方面的工作,需要掌握的相关专业知识这个问题暂且按下不表,那哪些具体的问题是我需要了解的呢,以下简单罗列:1、了解数据分析师这个岗位在各个地区的需求情况?2、数据分析师的薪...

  • 这一节将开始学习python的一个核心数据分析支持库---pandas,它是python数据分析实践与实战的必备高级工具。对于使用 Python 进行数据分析来说,pandas 几乎是无人不知,无人不晓的。今天,我们就来认识认识数据分析界鼎鼎大名的 pandas。目录一. pandas主要数据结构 SeriesDataFrame二...

  • insertAdjacentText方法与 insertAdjacentHTML方法类似,只不过是插入纯文本,参数相同 参数说明: elementDOM.insertAdjacentHTML(where,html) elementDOM:用于参照插入位置的html元素对象 where:插入位置。包括"beforeBegin"、...

  • 1、基本思想:        已知待排序列r[1...n],先将序列中的第一个记录看成是一个有序的子序列,然后从第二个记录起逐个进行插入,直至整个序列变成关键字非递减有序序列为止。 具体操作如下:     (1)查找出r[i]在有序序列r[1...i-1]中的插入位置k;     (2)将r[k...i-1]中所有元素全部后移一个位...

  • oracle创建表时,不支持在建表时同时增加字段注释。故采用以下方式: #创建表 CREATE TABLE predict_data as (id integer NOT NULL, uid varchar2(80),mid varchar2(8...

  • 本章主要内容 一、单元格操作 二、插入批注 三、自动求和 四、填充序列 五、查找、替换 六、对齐方式 七、定位 八、插入形状及设置形状 九、页面设置   一单元格操作 1、插入 a、插入单元格    一个单元格选中状态---右击插入(单元左右移)--即可 b、插入单元行/列 c、插入多行单元行/列    选中多行---右击插入----...

  • 如果excel中有一列存的是手机号码或者身份证号码,那么导入到sql中时,会把手机或者身份证当作数字格式对待,因而会以科学记数法的形式存在sqlserver表中,解决方式,先将excel文件另存为文本文件(制表符)格式,之后sqlserver导入数据时,数据源选择选择“平面数据源”,之后选择刚刚存好的文本文件,导入到sqlserve...

  •   1--数据库导出(exp)    首先进入命令行    导出数据库    在命令行中输入如下命令:      exp   c2j/c2j@c2j    file=c:/table.dmp    tables=jbitaku,jbitakum   grants=y     然后按回车键    说明:     c2j/c2j@c2j...