Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74124
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 302
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-03 09:20
文章分类

全部博文(29)

文章存档

2015年(29)

我的朋友

分类: 系统运维

2015-07-22 16:26:49

当用load命令导入数据的时候,适当地设置可以提高导入的速度。
对于myisam存储引擎的表,可以通过以下方式导入大量的数据:
alter  table  tb_name  disable  keys;
load  data  infile  '/data/film.txt'  into  table  film_test;
alter  table  tb_name  enable  keys;

disable|enable keys 用来打开或者关闭myisam表非唯一索引的更新。当导入大量数据到一个非空的myisam表时,通过设置这两条命令可以提高导入的效率;而对于导入大量数据到一个空的myisam表时,默认就是先导入数据再建立索引的,所以不需要进行任何设置。


对于innodb存储引擎表,这种方式并不能优化导入速度。可以有以下几种方式提高导入速度:
1.因为innodb表是按主键顺序保存的,所以将要导入的数据按照主键顺序排列,可以有效地提高导入数据的效率。
2.导入数据前执行set  unique_checks=0,关闭唯一性校验,再导入结束时再执行set  unique_checks=1恢复唯一性校验,可以提高导入的效率。


3.如果应用采用自动提交的方式,建议在导入前执行set  autocommit=0,关闭自动提交;导入结束后在执行set  autocommit=1,开启自动提交。这样也可以提高导入效率。

阅读(1826) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~