提高MySQL插入记录的速度
http://hi.baidu.com/jackbillow/blog/item/65ea47248f645521d50742e7.html 在myisam engine下 1. 尽量使用insert into table_name values (...), (.....),(.....)这样形式插入数据,避免使用inset into table_name values (); inset into table_name values
http://hi.baidu.com/jackbillow/blog/item/65ea47248f645521d50742e7.html
在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的硬件上进
行,能缩减完成的时间,已经防止出现问题)。
上一篇: PHP 过滤页面中的BOM(实现代码)
下一篇: 为啥不能获取URL中的&后面的参数
推荐阅读
-
提高MySQL插入记录的速度
-
php程序随机记录mysql rand()造成CPU 100%的解决方法
-
appserv的mysql和独立的php,apache,mysql的查询响应速度不一样
-
Java实现获得MySQL数据库中所有表的记录总数可行方法_MySQL
-
关于使用一条SQL语句 找出同时符合多个tag条件的记录集合算法_MySQL
-
php 随机记录mysql rand()造成CPU 100%的解决办法
-
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法,mysql记录数_PHP教程
-
如果mysql 某个表存1亿左右的数据 速度 和性能 有问题吗?
-
SQL获取第一条记录的方法(sqlserver、oracle、mysql数据库)
-
mysql-刚学JAVA,求个MySQL使用线程池插入表的例子