9.14随笔

本文详细解释了数据库事务处理中的ACID特性,包括原子性、一致性、隔离性和持久性,并介绍了如何通过Java API实现这些特性。此外,还讨论了不同的事务隔离级别及其应用场景。
感觉会在以后的代码中常出现。嗯嗯。 我要弄明白 弄清楚。

1. 事务ACID

原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。

一致性(consistency):在事务处理执行前后,数据库是一致的(两个账户要么都变,或者都不变)。

隔离性(isolcation):一个事务处理对另一个事务处理没有影响。

持续性(durability):事务处理的效果能够被永久保存下来 。

1.1. 常用API

connection.setAutoCommit(false);

关闭自动提交, 打开事务。

connection.commit();

提交事务。

connection.rollback();

回滚事务。

Savepoint sp = conn.setSavepoint();

设置保存点

conn.rollback(sp);

回滚到保存点

conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

设置隔离级别, 可以通过Connection中的常量设置

1.2. 隔离级别

在多线程并发访问数据库并且使用事务的时候, 可能会遇到脏读, 不可重复读, 幻读的情况, 需要设置隔离级别来避免

脏读: 读到的线程未提交的数据

不可重复读: 在一个事务中读取同一个记录两次, 获取数据不同

幻读: 在一个事务中, 读取到的记录数不同

隔离级别

脏读

不可重复读

幻读

读未提交 Read Uncommitted

读已提交 Read Committed

可重复读 Repeatable Read

可序列化 Serializable

select @@tx_isolation;

查看隔离级别

set transaction isolation level read uncommitted;

设置读未提交

set transaction isolation level read committed;

设置读已提交

set transaction isolation level repeatable read;

设置可重复读

set transaction isolation level serializable;

设置可序列化

start transaction;

开始事务

rollback;

回滚事务

commit;

提交事务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值