JDBC - 学习6 -Betach - 批处理测试

news/2024/5/18 23:11:25 标签: JDBC, 批处理, Betach

文章目录

      • 1. 不使用Betach、使用Statement
      • 2. 不使用Betach、使用PreparedStatement
      • 3. 使用Betach、PreparedStatement

运行时间以我自己的手提电脑为例


批处理差异
MySQL:默认关闭批处理 -- 自行百度开启批处理功能
Oracle:默认开启批处理

测试:执行10K条同样的SQL语句的运行时间 – oracle数据库

BetachStatement_18">1. 不使用Betach、使用Statement

  运行时间:15秒

@Test
public void test7() throws Exception {
    Connection conn = ConnectionTest.getConnection5();

    Statement statement = conn.createStatement();

    long start = System.currentTimeMillis();
    for (int i = 0; i < 10000; i++) {
        String sql = "insert into imgTable(name) values ('name_" + (10000 + i + 1) + "')";
        statement.execute(sql);
    }
    long end = System.currentTimeMillis();

    System.out.println((end - start) / 1000 + "秒");

    ConnectionTest.closeResource(conn, statement, null);
}

BetachPreparedStatement_45">2. 不使用Betach、使用PreparedStatement

  运行时间:5秒

@Test
public void test6() throws Exception {
    Connection conn = ConnectionTest.getConnection5();

    String sql = "insert into imgTable(name) values ( ?)";
    PreparedStatement ps = conn.prepareStatement(sql);

    long start = System.currentTimeMillis();
    for (int i = 0; i < 10000; i++) {
        ps.setObject(1, "name_" + i);
        ps.execute();
    }
    long end = System.currentTimeMillis();

    System.out.println((end - start) / 1000 + "秒");

    ConnectionTest.closeResource(conn, ps, null);
}

BetachPreparedStatement_72">3. 使用Betach、PreparedStatement

  运行时间:257毫秒

@Test
public void test8() throws Exception {
    Connection conn = ConnectionTest.getConnection3();

    String sql = "insert into imgTable(name) values (?)";
    PreparedStatement ps = conn.prepareStatement(sql);

    long start = System.currentTimeMillis();
    for (int i = 0; i < 10000; i++) {
        ps.setObject(1, "name_" + i);

        // 1. 将SQL语句先存起来
        ps.addBatch();

        // 2. 一旦存起来的SQL语句有500条,则一次性执行存起来的SQL语句,并且清空运行的SQL语句
        if ((i + 1) % 500 == 0) {
            ps.executeBatch();
            ps.clearBatch();
        }

    }

    // 3. 防止还有存起来的SQL语句没有执行
    ps.executeBatch();
    ps.clearBatch();
    long end = System.currentTimeMillis();

    System.out.println((end - start) + "豪秒");

    ConnectionTest.closeResource(conn, ps, null);
}

http://www.niftyadmin.cn/n/1658157.html

相关文章

php curl 超时 try_如何进行php curl超时设置

php curl超时设置的方法&#xff1a;1、使用“curl_setopt($ch, opt)”进行一些超时的设置&#xff1b;2、使用“CURLOPT_DNS_CACHE_TIMEOUT”设置在内存中保存DNS信息的时间。推荐&#xff1a;《PHP教程》在php中使用curl时&#xff0c;进行超时设置的详细方法访问HTTP方式很多…

JDBC - 学习7 -连接池C3P0、DBCP -- 获取Connection连接

文章目录1. 连接池的简介2. C3P0 - 连接池2.1 硬编码获取连接2.2 配置文件进行获取连接对象3. DBCP - 连接池3.1 硬编码获取连接3.2 配置文件获取连接4. Druid - 连接池4.1 硬编码获取连接4.2 配置文件获取连接1. 连接池的简介 连接池&#xff1a; 为数据库建立一个缓冲池&…

控制面板设置java_win10系统打开java控制面板的具体技巧

win10系统使用久了&#xff0c;好多网友反馈说关于对win10系统打开java控制面板设置的方法&#xff0c;在使用win10系统的过程中经常不知道如何去对win10系统打开java控制面板进行设置&#xff0c;有什么好的办法去设置win10系统打开java控制面板呢&#xff1f;在这里小编教你只…

php跳转 原理,PHP的简单跳转提示的实现详解

在PHP开发中&#xff0c;尤其是MVC框架或者项目中&#xff0c;会碰到很多跳转情况&#xff0c;比如&#xff1a;登录成功或失败后的跳转等等。以下以MVC框架开发中为基础&#xff0c;示例讲解&#xff1a;在基础控制器类中&#xff1a;Conrtoller.class.php/*** 基础控制器类*/…

JDBC - 学习8 - Apache-DBUtil类库的使用

文章目录1. 介绍2. QueryRunner2.1 更新操作 - 增删改2.2 查询操作2.2.1 单条记录查询 - BeanHandler2.2.2 多条记录查询 - BeanListHandler2.2.3 用于查询特殊值的单行函数 - ScalarHandler2.2.4 自定义结果集的处理器2.2.5 单条记录查询 - MapHandler2.2.6 多条记录查询 - Ma…

php 嵌套 json数据,PHP实例:php如何在json里嵌套一个json

常见需求&#xff1a;把一个父栏目下的子栏目循环出来&#xff0c;每个子栏目下再显示最新的几篇内容。<?php $servername "localhost";$username "root";$password "root";$dbname "test";// 创建连接$conn new mysqli($ser…

php工作日,计算工作日(jessie看)-PHP教程,PHP应用

现在还有问题周一&#xff0c;周二不能做节假日可能算法上还有问题&#xff0c;等待你的更新…/*** sports98* flyrunshotmail.com (欢迎交流)*/计算工作日(计算一年内)body,td {font-size:12px}工作日计算器(计算一年内)开始日期:-01-01">结束日期:">周休息数…

java语法基础 - 第七部分 - File,Properties,Path,Files

文章目录1. 文件1.1 File1.1.1 方法讲解1.1.2 具体应用1.1.2.1 查找某个目录下的某个文件1.2 Properties - 可读写配置文件获取配置文件数据修改配置文件数据1.3. Path1.4 Files -- 文件的操纵1.4.1 简略1.4.2 常用方法介绍1. 文件 1.1 File 1.1.1 方法讲解 唯一与文件、文件…