批处理|学习笔记

简介: 快速学习批处理

开发者学堂课程【JDBC数据库开发入门:批处理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/29

批处理


内容简介

一、批处理的概念

二、批处理的运行

 

一、批处理的概念

批处理的概念就是一批一批的处理,原先处理数据库是一条一条的处理,发送一条语句过去,服务器执行一条。发一条执行一条对网络的传输来说过于频繁,往返的次数过多会影响效率,所以这时考虑到批处理,也就是客户端能不能一批一批的把sq语句运送到服务器,然后服务器一批一批的执行,所谓批可以理解成集合。

批处理有两种形式,一种是用Statement来完成,另一种是用PreparedStatement来完成,第一种不再介绍。现在主要介绍第二种PreparedStatement。

 

二、批处理的运行

如何做到一批一批的往外传送呢?

1.新创建一个Demo5。

首先介绍批处理。psrmt对象内部有集合,有集合可以理解为有批。

(1)用循环疯狂向pstmt中添加sql参数,它自己有模板,使用一组参数与模板没罚可以匹配出一条sql语句。

(2)调用它的执行批方法,完成向数据库发送!

2.实验

现在至少需要两个方法给我们提供,也就是说pstmt需要提供两个方法

(1) 添加参数到批中,

(2)执行批!复制三条代码:

Connection con=JdbcUtils.getConnection();

String sql="select from tab_bin";

PreparedStatement pstmt=con.prepareStatement(sql);

更改模板,用以下的表做实验:

image.png

清除数据 delete from t_stu ,接下来插入"INSERT INTO t_stu VALUES(?,?,?,?)"

3.疯狂的添加参数

设置参数for(int i=0;i<10000;i++),一万行记录需要往数据库里插。

第一个参数:pstmt.setInt(1,i+1);第一个是int类型

第二个参数:pstmt.setString(2,“stu_”+i);这就是stu0,stu1……

第三个参数:年龄,pstmt.setInt(3,i);第一个人0岁,最后一个人9999岁。

第四个参数:性别,pstmt.setString (4,i&2==0?“男”:“女”);

这些参数给完了思考一个问题:

现在是执行还是怎样?循环回来是否要把参数覆盖掉?

要记住:不要把参数扔了,循环回来还是一个参数,又重复了,所以有一个非常重要的代码:pstmt.addBatch();添加批,这一组参数就保存到集合中了。

然后循环回来又设置一组参数,又添加进去了,到现在为止循环完还未执行,所以最后的代码就是:pstmt. execteBatch(); 执行批

代码写完了,一共用了两个方法,一个是添加批,一个是执行批。

执行批更加耽误时间。添加批是发送。添加批内部有集合,执行批则是把集合一起发送。添加批相当于装车,而执行批相当于发车。

这时,需要记录时间:long start=System.currentTimeMillis();

long end=System.currentTimeMillis();

最后输出System.out.println(end-start);代码写完了。

如图:

image.png

4.测试

测试一下:select count(*) FROM t_stu;耐心等待,可以比较出来批处理到底快不快。这时的批处理较慢,是因为MySQL默认批处理是封闭的,打开它需要一个参数rewriteBatchedStatements=true把参数配到url处加一问号打开 然后保存,等这一遍执行完了,再来执行第二遍。一个是使用批处理的效果,一个不使用批处理的效果。当前数据库不支持批处理,只有把参数加上才能比较出来批处理到底快不快。

image.png

注意:Mysql不支持批处理是因为缺少变量,参数rewriteBatchedStatements=true一定要加在url后面,前面一定要加问号。Mysql是支持批处理的,代码一定要有变量。

一万条大概执行六分钟。算一下时间,用了412764毫秒,除以1000,得到秒,除以60,得到6.8794分钟。

输入代码:System.out.println(end-start)// 412764,6.8794分钟。

由于前面重复组建了,所以执行之前先清除数据库,输入:DELETE FROM t_stu,使一万行消失,得到0行。右键执行,得到520毫秒。一秒钟都用不上。以上是二者的区别,再次删掉执行,301毫秒。

这就是批处理的作用。

相关文章
|
Apache 流计算 Python
Flink第一课!使用批处理,流处理,Socket的方式实现经典词频统计
Flink第一课!使用批处理,流处理,Socket的方式实现经典词频统计
377 0
Flink第一课!使用批处理,流处理,Socket的方式实现经典词频统计
|
Java
什么是批处理
什么是批处理:批处理就是多个dos命令组成的,双击可执行里面的命令。(微软系统) 批处理:桌面文件以双击就能打开,而java一双击是打不开的因为java是一个class文件他需要虚拟机得运行才能打开。
2289 0
|
安全 数据安全/隐私保护 Windows
|
人工智能 数据安全/隐私保护 Windows
|
Go 数据安全/隐私保护