|
方法1:
Java code 复制代码 代码如下: conn = DriverManager.getConnection(JDBC_URL,JDBC_USER,JDBC_PASS); pstmt = conn .prepareStatement("insert into loadtest (id,data) values (?,?)"); for (int i = 1; i <= COUNT; i++) { pstmt.clearParameters(); pstmt.setInt(1,i); pstmt.setString(2,DATA); pstmt.execute(); }
MyISAM:246.6秒、InnoDB:360.2秒
方法2: 使用事务,不自动commit
Java code 复制代码 代码如下: conn = DriverManager.getConnection(JDBC_URL,JDBC_PASS); conn.setAutoCommit(false); pstmt = conn .prepareStatement("insert into loadtest (id,DATA); pstmt.execute(); if (i % COMMIT_SIZE == 0) { conn.commit(); } } conn.commit();
InnoDB:31.5秒
方法3: executeBatch
Java code 复制代码 代码如下: conn = DriverManager.getConnection(JDBC_URL + "?rewriteBatchedStatements=true",?)"); for (int i = 1; i <= COUNT; i += BATCH_SIZE) { pstmt.clearBatch(); for (int j = 0; j < BATCH_SIZE; j++) { pstmt.setInt(1,i + j); pstmt.setString(2,DATA); pstmt.addBatch(); } pstmt.executeBatch(); if ((i + BATCH_SIZE - 1) % COMMIT_SIZE == 0) { conn.commit(); } } conn.commit();
InnoDB:5.2秒
上面的使用时必须 1)rewriteBatchedStatements=true 2)useServerPrepStmts=true
方法4:先LOAD再COMMIT
Java code 复制代码 代码如下: conn = DriverManager.getConnection(JDBC_URL,JDBC_PASS); conn.setAutoCommit(false); pstmt = conn.prepareStatement("load data local infile '' " + "into table loadtest fields terminated by ','"); StringBuilder sb = new StringBuilder(); for (int i = 1; i <= COUNT; i++) { sb.append(i + "," + DATA + "n"); if (i % COMMIT_SIZE == 0) { InputStream is = new ByteArrayInputStream(sb.toString() .getBytes()); ((com.mysql.jdbc.Statement) pstmt) .setLocalInfileInputStream(is); pstmt.execute(); conn.commit(); sb.setLength(0); } } InputStream is = new ByteArrayInputStream(sb.toString().getBytes()); ((com.mysql.jdbc.Statement) pstmt).setLocalInfileInputStream(is); pstmt.execute(); conn.commit();
您可能感兴趣的文章:- Java实现批量向mysql写入数据的方法
- java基于jdbc连接mysql数据库功能实例详解
- java连接MySQL数据库的代码
- java向mysql插入数据乱码问题的解决方法
- java连接mysql数据库及测试是否连接成功的方法
- Java中如何获取mysql连接的3种方法总结
- Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|