Heim >Datenbank >MySQL-Tutorial >mysql大量数据插入探讨(量变引起质变)_MySQL

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

WBOY
WBOYOriginal
2016-06-01 13:10:391432Durchsuche

 分类:见Visio图

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

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

  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 结构相同的,但是前者的建表方式得到的表结构是没有主键的;

 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn