事务处理

1.事务的四大特性

1.原子性

​ 事务中的所有的操作是不可分割的原子单位,要么全部操作成功,要么全部失败。

2.一致性

​ 当事务执行后,数据库的状态应该和业务规则保持一致。比如说,转账业务,无论事务成功与否,两个账户的金额之和因当是不变的。

3.隔离性

​ 隔离性是指在并发操作中,不同的事务应该隔离,并发操作的事务不应该互相干扰。

4.持久性

​ 一旦事务提交成功,所有的数据操作应该持久化到数据库中。即使在事务提价之后,数据库崩溃了,数据库重启后也能通过某种机制恢复数据库

2.Mysql中开启和关闭事务

--开启事务
start transaction
--关闭事务
commit  表示提交
rollback  表示回滚

3.jdbc中完成事务处理

try{
    con.setAutoCommit(false);  //false开启事务
       ...
       con.commit();   //try的最后提交事务
 } catch () {
     con.rollback();//回滚事务
 }

4.事务的隔离级别

1.事务的并发读问题

脏读:读取到另一个事务为提交数据;

不可重复读:两次读取不一致,因为一次事务对其造成了修改

幻读:读到另一事务已经提交的数据。

脏读:

事务一:张三给李四转账100元。

事务二:李四查看自己的账户。

事务一开始,张三给李四转账100元

事务二开始,李四看到自己的账户多出100元,并提交事务

事务一回滚事务,回到了转账之前的状态。

不可幻读:

事务一:酒店查看两次1048房间状态

事务二:预定1048号房间

事务一开始,查看房间为空闲状态

事务二开始,预定1048号房间

事务二提交事务。

事务一再次查看,1048号房间已被使用

事务一提交

对同一记录的两次查询结果不一致

四大隔离级别

1SERIALIZABLE串行化

2REPEATABLE READ可重复读

3READ COMMMITTED读已提交数据

4READ UNCOMMMITTED读未提交数据

Last modification:February 13th, 2020 at 06:22 pm
如果觉得我的文章对你有用,请随意赞赏