一 概念
一组sql语句组成的数据库逻辑处理单位,这组操作要么一起成功,要么一起失败。
二 事务的原则
1 ACID原则
-
原子性(Atomicity)
事务是最小的执行单位,是不可分割的。
原子性是指对数据的修改要么全部成功,要么全部失败。 -
一致性(Consistency)
在事务操作前后,事务状态保持一致,也可理解为数据一致。 -
隔离性(Ioslation):
是指并发访问数据库时,一个用户的事务不被其他事务所干扰,各并发事务数据库是独立的。 -
持久性(Durability):
是指事务提交后, 把事务的状态会被持久化到数据库中,也就是事务的提交, 对数据的新增、更新将会持久到数据库中。
三 ACID的原理
原理:基于日志的undo/redo机制
- 原子性 :基于undo log
- 持久性 : 基于redo log
- 隔离性 :锁机制,Mvcc, undo log的版本链, readView
- 一致性:事务追求的最终目标,一致性的实现需要数据库层面的保障,也需要应用层面的保障。
四 事务的隔离级别
1 多个事务同时进行会怎么样?
-
脏读
A事务读到了B事务未提交的内容,而后B事务进行了回滚。 -
不可重复读
A事务读取了B事务已提交的部分,造成了A事务两次读取的结果不一样,因为此期间B事务进行了提交操作。 -
幻读
A事务读取了一个范围的内容, 而B事务在此期间新插入的一条数据,导致了“幻读”。
2 事务的隔离级别有哪些?
- 未提交读
- 已提交读
- 可重复读
- 串行化
3 Innodb使用了哪种隔离级别?
Innodb默认使用的是可重复读隔离级别。
4 设置隔离级别的语句
set global transaction isolation level read uncommitted.
这里的global 也可以换成session
global表示全局的, 而session表示当前会话,也就是当前窗口有效。