V_1.0 批处理:
将【多条sql】保存到【同一个数据库操作对象ps】中,【一次性】将多条sql命令输送到
数据库执行的过程。减少程序与数据库之间交互次数,节省时间,提升速度。
V_2.0 评价一个项目点:
1.项目对于需求解决能力
2.项目运行效率*****
3.项目数据安全性
4.项目可扩展性
5.项目易用性
V_3.0 项目运行效率,消耗时间点:
***** 内存与硬盘交互,决定项目的运行效率
***** 连接通道建立和销毁,消耗时间---------数据库连接池管理方案
***** 输送sql,返回得到数据,消耗时间------批处理
***** 数据库执行sql,消耗时间 --------- 数据类型
储存引擎
触发器,存储过程
水平分表,垂直分表,分区表
索引查询
主从表备份
V_4.0 使用传统的方式,添加20个部门,分析时间消耗点
V_5.0 ps.executeUpdate() 与 ps.executeUpdate(sql) 有什么区别?
ps.executeUpdate() 是直接从ps对象的【缓存区域】读取sql输送到数据库中
ps.executeUpdate(sql),首先将sql编译,并保存到ps对象中【记忆存储区】,
然后负责将【记忆存储区】备份到【缓存区】,然后再读取【缓存区】输送到数据库中
V_6.0 添加20个部门,暴露批处理过程存在的致命问题
1.修改dept表结构
alter table dept modify dname varchar(6); dname ='dept'+99 'dept100'>6 执行失败
2.如果批处理操作失败,在ps对象输送的sql中,会有部分的sql依然正常执行,此时增加的修改异常的成本
V_7.0 批处理操作产生的脏数据的来源。
1. 数据库在接收到外部输送的sql命令时,不会立刻执行。而是交给【事务对象】进行检测。
将检测报告通知数据库,由数据库决定当前事务包含的sql命令是否可以提交或则回滚
2. 在一个事务中,只要有一个sql出现语法错误,认为当前事务中所有的sql 都有问题。
3. 【事务对象】管理方式:
1.默认管理方式:1)事务对象行为【commit or rollback】是由数据库进行控制
2)一个事务检测一条sql命令
2.人工手动管理方式:1) 事务对象行为【commit or rollback】由开发人员控制
2) 一个事务对多条sql命令进行检测
V_8.0 批处理操作中,事务管理方式必须是人工手动:
1. mysql命令行:
start transaction;-----------通知数据库提供一个事务对象
将多条sql输送到同一个事务对象,进行检测
insert into dept values(200,'java_pro','sh');
insert into dept values(201,'pro','sh');
commit/rollback;
2.java程序实现人工事务管理:
1. con.setAutoCommit(false);
2. try{
ps.executeUpdate(sql_1);
ps.executeUpdate(sql_2);
con.commit();
}catch(SQLException ex){
con.rollback();
}