坚持打卡学习第十一天——事务处理

2021-12-26  本文已影响0人  去追星星

事务

一般来说,事务必须满足ACID:
(1)A:原子性,或称不可分割性;一个事务所有操作要么全完成,要么全不完成。事务执行过程发生错误,就会回滚到事务开始前的状态
(2)C:一致性;事务开始以及结束后,数据库完整性没被破坏(写入的数据,须符合预设的规则)
(3)I:隔离性;数据库允许多个并发事务同时操作数据,隔离性可防止多个并发事务导致的数据不一致。隔离级别分为:读未提交、不可重复读、可重复读、串行化
(4)D:持久性;事务结束后,对数据的修改是永久的

1、事务控制语言

(1)begin或start transaction显示开始一个事务
(2)commit或commit work提交修改
(3)rollback或rollback work回滚结束事务,撤销所有未提交事务

2、事务处理的两种方式

(1)用begin(开始)、rollback(回滚)、commit(提交确认)来实现
(2)用set改变自动提交:

3、事务隔离级别
事务隔离级别 脏读 不可重复读 幻读
读未提交(read uncommitted)
读已提交(read committed)
可重复读(repeatable read)
串行化(serializable)

注:

select @@transaction_isolation;
set session transaction isolation level 设置事务隔离级别;

(1)读未提交
所以事务都可以看到其他未提交事务的执行结果,读取未提交的数据也称之为脏读,实际基本不用
(2)读已提交
大多数数据库默认隔离级别,一个事务只能看见已经提交事务所做的改变
(3)可重复读
mysql默认隔离级别,确保同一事物多个实例并发读取数据时,看到同样的数据行
(4)串行化
最高隔离级别,在每个读的数据行加上共享锁,消耗太大

上一篇下一篇

猜你喜欢

热点阅读