zoukankan      html  css  js  c++  java
  • 优化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

  • 相关阅读:
    mybatis的缓存机制
    mybatis动态SQL
    mybatis关联集合List&分布查询传递多列值
    winrt获取文件MD5码
    在wpf中使用winrt的Toast弹框效果
    winrt控件
    WdatePicker组件不显示
    Thread.Sleep in WinRT
    google 语音api
    UTF8编码转换(C#)
  • 原文地址:https://www.cnblogs.com/yahle/p/848060.html
Copyright © 2011-2022 走看看