MySQL的批处理

Posted 凌晨三点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL的批处理相关的知识,希望对你有一定的参考价值。

MySQL默认是关闭批处理的,所以我们在默认状态下(批处理未打开)向数据库中存入10000条数据,核心代码如下:

package cn.itcast.demo5;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.junit.Test;
import cn.itcast.demo3.JdbcUtils;
public class Demo5 {
    @Test
    public void fun5() throws SQLException {
        /*
         * pstmt:
         * > 添加参数到批中
         * > 执行批!
         */
        Connection con = JdbcUtils.getConnection();
        String sql = "INSERT INTO t_stu VALUES(?,?,?,?)";
        PreparedStatement pstmt = con.prepareStatement(sql);
        
        // 疯狂的添加参数
        for(int i = 0; i < 10000; i++) {
            pstmt.setInt(1, i+1);
            pstmt.setString(2, "stu_" + i);
            pstmt.setInt(3, i);
            pstmt.setString(4, i%2==0?"男":"女");            
            pstmt.addBatch();//添加批!这一组参数就保存到集合中了。
        }
        long start = System.currentTimeMillis();
        pstmt.executeBatch();//执行批!
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }
}

上述程序执行结束耗费时间412764MS

这是打开MySQL的批处理,打开方式:

  将MySQL参数  url=jdbc:mysql://localhost:3306/exam

  改为        url=jdbc:mysql://localhost:3306/exam?rewriteBatchedStatements=true

再次执行程序,耗时301MS,速度快了1000倍以上!

以上是关于MySQL的批处理的主要内容,如果未能解决你的问题,请参考以下文章

从mysql的片段中加载ListView

处理屏幕旋转上的片段重复(带有示例代码)

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段

使用 json rereiver php mysql 在片段中填充列表视图

你如何在 python 中处理 graphql 查询和片段?