今天,对mysql数据库的插入数据的速度做了个简单的测试。
JdbcUtil.java
SqlTest.java
背景:
1、mysql数据库
2、表结构为
id varchar(10)
name varchar(10)
3、采用非自动提交的PrepareStatement批处理
测试结果:
数据量(条) 插入所需时间(ms)
1 0
10 15
100 62
1,000 422
10,000 2,922
100,000 26,922
1000,000 272,219
测试过程学习到的:
1、批处理要conn.setAutoCommit(false)(默认会自动提交,不能达到批处理的目的,速度极慢!)。
2、pstmt.executeBatch();
conn.commit();
要提交,数据库才会有数据。
3、避免内存溢出,应每x(如:万)条提交一次数据。
4、可用“数据库名.表名”的方法来访问数据库表
这样,则在写JdbcUtil的DB_CONNECTION = "jdbc:mysql://localhost:3306/"时,
可不具体到数据库,方便跨数据库的数据操作。
5、Statement和PrepareStatement不仅可以操作DDL,添加删除表和数据库的sql都可以操作,用execute(String sql)方法。
本文通过Java的JDBC进行MySQL数据库的批量插入数据测试,分析不同数据量下的插入耗时,强调了批处理设置、适时提交和跨数据库操作的重要性。

1223

被折叠的 条评论
为什么被折叠?



