数据库-事务

本文深入解析事务的ACID特性:原子性、一致性、隔离性和持久性,并详细阐述了在MySQL和JDBC中如何操作事务,包括开启、提交和回滚事务的方法,以及事务隔离级别的设置与并发读问题的解决。

事务-事务特性(ACID)

原子性:事务中所有操作是不可分割的原子单位。

一致性:事务执行后,数据库状态与其他业务规则

隔离性:并发操作中,不同事务之间应隔离的,每个并发中事务不会相互干扰

持久性: 一旦事务提交成功,事务中所有数据必被持久化到库中。

MySQL中操作事务

  1. 默认下,每执行一条SQL与,都是一个单独事务
  2. 开启事务: start transaction 
  3. 结束事务: commit 表示提交    rollback 表示回滚。

JDBC中操作事务

  1. 开启事务 :setAutoCommit(boolean) 【true默认一个SQL;false 开启事务,不自动提交事务】
  2. 结束事务:  commit();  提交事务                     rollback(); 回滚事务
  3. 教科书式 格式:
try{
co.setAutoCommit(false);
.....
co.commit

}
catch(.....)
{
co.rollback();
}

事务隔离的并发读问题

1、有如下三种

  1. 脏读: 读取到另一个事务未提交的数据
  2. 不可重复读  两次读取不一致(读到另一个事务修改的记录)
  3. 幻读   两次读取不一致(读取到另一个事务插入的记录)

2、四大事务隔离级别

事务隔离级别脏读不可重复读幻读备注
读未提交(read-uncommitted)不处理,无人用
不可重复读(read-committed)MySQL默认
可重复读(repeatable-read)MySQL默认
串行化(serializable)易出现死锁(不可用)
     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值