每天进步一点点——load data infile的相关优化

来源:互联网 发布:编程证明哥德巴赫猜想 编辑:程序博客网 时间:2024/05/22 14:28

对MyISAM引擎

         通过DISABLE KEYS和ENABLE KEYS用来打开或者关闭唯一索引的更新,在导入大量数据到一个非空的MyISAM表时,通过设置这两条命令可以提高导入效率。但是导入一个空的MyISAM表,就不需要此设置:

ALTER TABLE 表名 DISABLE KEYS;

loading the data

ALTER TABLE 表名 ENABLE KEYS;

首先通过直接导入的方式进行导入

(film_text2相当于没有parmary key的film_text,并且内容为以前的14倍)

mysql>load data infile '/tmp/film_text2.txt' into table film_text2;

Query OK, 14000 rows affected (5.59 sec)

Records: 14000  Deleted: 0 Skipped: 0  Warnings: 0

 

通过disable keys和enable keys来进行导入

mysql>alter table film_text2 disable keys;

Query OK, 0 rows affected (0.00 sec)

 

mysql>load data infile '/tmp/film_text2.txt' into table film_text2;

Query OK, 14000 rows affected (0.11 sec)

Records: 14000  Deleted: 0 Skipped: 0  Warnings: 0

 

mysql>alter table film_text2 enable keys;

Query OK, 0 rows affected (4.54 sec)

对于InnoDB引擎
因为InnoDB类型的表是按照主键的顺序保存的,所以将导入的数据按照主键的顺序排列,可以有效地提高导入数据效率。

film_text2是有主键的,顺序的。film_text5是没有主键的,乱序的。但是行数是一样的。

mysql>load data infile '/tmp/film_text2' into table film_text3;

Query OK, 56000 rows affected (1.10 sec)

Records: 56000  Deleted: 0 Skipped: 0  Warnings: 0

 

mysql>load data infile '/tmp/film_text5' into table film_text3;

Query OK, 56000 rows affected (1.56 sec)

Records: 56000  Deleted: 0 Skipped: 0  Warnings: 0

 

在导入数据前执行SET UNIQUE_CHECKS=0,关闭唯一性校验,在导入结束后执行SETUNIQUE_CHECKS=1恢复唯一性校验,可以提高效率。

 

当SETUNIQUE_CHECKS=0时

mysql>Load data infile '/tmp/film_text5' into table film_text3;

Query OK, 56000 rows affected (1.05 sec)

Records: 56000  Deleted: 0 Skipped: 0  Warnings: 0

 

当SETUNIQUE_CHECKS=1时

mysql>Load data infile '/tmp/film_text5' into table film_text3;

Query OK, 56000 rows affected (1.30 sec)

Records: 56000  Deleted: 0 Skipped: 0  Warnings: 0

关闭自动提交也可以提高导入效率

mysql>set autocommit=0;

Query OK, 0 rows affected (0.00 sec)

 

mysql>load data infile '/tmp/film_text2' into table film_text3;

Query OK, 56000 rows affected (1.08 sec)

Records: 56000  Deleted: 0 Skipped: 0  Warnings: 0

 

mysql>set autocommit=1;

Query OK, 0 rows affected (0.16 sec)

 

mysql>load data infile '/tmp/film_text2' into table film_text3;

Query OK, 56000 rows affected (1.38 sec)

Records: 56000  Deleted: 0 Skipped: 0  Warnings: 0

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 生完孩子奶水越来越少怎么办 生完孩子回奶了怎么办 产妇3天没奶水怎么办 产后7天了奶水少怎么办 刚生完小孩没有奶水怎么办 突然就没奶水了怎么办 生完小孩没有奶水怎么办 生完宝宝没有奶怎么办 剖腹产奶涨的疼怎么办 生产一天了没奶怎么办 第一天断奶 奶水一直流出怎么办 新生儿刚出生没奶水怎么办 安卓手机死机了怎么办 婴幼儿几天不拉大便怎么办 樱桃吃多了胃不舒服怎么办 空腹吃水果胃不舒服怎么办 吃水果后胃不舒服怎么办 吃水果伤胃了怎么办 大人吃退烧药不出汗怎么办 稍微吃点凉水果胃就疼怎么办 1岁宝宝感冒发烧怎么办 3岁小儿反复发烧怎么办 热感冒喉咙疼要怎么办 孩子感冒咳嗽嗓子疼怎么办 孕妇感冒了嗓子疼咳嗽怎么办 4岁宝宝反复高烧怎么办 小孩吃完药不退烧怎么办 六个月婴儿发烧怎么办退烧快点 咳嗽20天老不好怎么办 吃过退烧药出汗怎么办 5岁儿童发烧39度怎么办 小孩烧到39度怎么办 儿童7岁发烧39度怎么办 发烧没药怎么办怎样退烧快 小孩发烧怎么办怎样退烧快 发烧头疼怎么办最快最有效 发烧头晕怎么办最快最有效 婴儿发烧怎么办最快最有效 孩子一直37度8怎么办 一岁半宝宝37度5怎么办 发烧打了针35度怎么办