提高 mysql 插入数据的速度 .txt 一个人 一盒烟 一台电脑过一天一个人 一瓶酒 一盘
蚕豆过一宿。永远扛不住女人的小脾气,女人 永远抵不住男人的花言巧语。
【转】 提高 mysql 插入数据的速度。 2011-03-23 17:29 转载自 jackbillow
最终编辑 dhbvsdhq 在 myisam engine 下
1. 尽量使用 insert into table_name values (...), (.....),(.....) 这样形式插入数据,
避免使用 inset into table_name values (); inset into table_name values (); inset into
table_name values ();
2 增加 bulk_insert_buffer_size( 默认 8M)
3 如果是非空表,使用 alter table table_name disable keys ,然后 load data infile,
导入完数据在执行:
alter table table_name enable keys. 如果是空表,就不需要这个操作,因为 myisam 表在
空表中导入数据时,是先导入数据然后建立 indexs 。
4 在插入数据时考虑使用: insert delayed.... 这样操作实际 mysql 把 insert 操作放到队列
里面,进行相对集中的插入,速度更快。
5. 使用 load data infile 比使用 insert 操作快近 20 倍,尽量使用此操作。
在 innodb engine 下
1. 导入数据之前执行 set unique_checks=0 来禁止对唯一索引的检查,数据导入完成之后再
运行 set unique_checks=1.
2. 导入数据之前执行 set foreign_key_checks=0 来禁止对外键的检查,数据导入完成之后
再执行 set foreign_key_checks=1.
3. 导入数据之前执行 set autocommit=0 禁止自动事务的自动提交, 数据导入完成之后, 执行
set autocommit=1 恢复自动提交操作。
使用 innodb engine 的表,物理存储都是按 PK 的顺序存的。不能使用类似于 myisam 一样
disable keys.
硬件上提高磁盘的 I/0 对插入速度很有好处(所以如果进行大数据量的导入导出工作,尽量
在比较 NB的硬件上进行,能缩减完成的时间,已经防止出现问题) 。
评论0
最新资源