优化MySQL插入数据

 

优化MySQL插入数据

表结构:6个字段,2个数值型,4个字符串型,字符型字段长度3~20个字符

数据量:1000

MySQL版本:4.1

测试程序与MySQL服务器在同一台机器,单线程插入处理。

 

优化方法1

修改表的类型

       MySQL数据库表有两种类型,一种是支持事务处理,一种是不支持事务处理。MySQL在处理这两种表时,分别使用了不同类型的数据库引擎,因此数据库引擎在插入时效率不同,理论上说启用了事务功能后会比较慢。

修改方法:在创建表时,指定表类型

Create Table(

….. /*字段说明*/

) ENGINE=InnoDB

红色部分为表类型,InnoDB表示带事务,MyISAM表示不带事务功能

 

 

优化方法2

一次插入多条数据

       MySQL通过一次执行插入多条数据,可以减少插入时间,提高效率,不过一次插入多条记录的SQL语法有点特别,貌似MS SQL Server不支持这样的语法:

Insert into `table` values(data1),(data2),(data3)

       虽然可以将多次插入的数据一次插入,但是一次插入的量还是有限制的:拼接出的SQL语句字符串长度不能超过1M,记录数不限。不太清楚是MySQL限制还是MySQL.Data数据库访问组件的限制造成的。

 

测试结果:

 

 

带事务

不带事务

执行1000次一次插1条记录

18s

430ms

执行1次一次插1000条记录

100ms

60ms

 

 

 

 

 

 

posted on 2007-08-08 17:01  yahle  阅读(4446)  评论(0编辑  收藏  举报