雨雨雨雨辰

事务简单理解

电脑版发表于:2019/6/12 9:52

事务特性

  • 原子性:事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

  • 持久性:事务执行完成后 数据一直保持

  • 隔离性:同一时间只能一个事务操作一个数据。(衍生出隔离级别)

  • 一致性:事务在完成后,数据库的数据确定不会再回滚等

一致性由原子性、持久性、隔离性保证

原子性由Undo Log保证 Undo log:保存每次变更前的记录,用来恢复数据,回滚什么的

持久性由Redo Log保证 Redo Log:事务commit前,都会将记录保存到Redo log中,保存成功后才会允许commit,如果commit前断电之类不可抗力 可以通过redo log恢复

隔离性:

事务隔离级别

  • Read Uncommitted(读取未提交内容):基本没啥用 什么都不能限制

  • Read Committed(读取提交内容):大部分数据库的默认级别,只能看到已提交的改变(避免脏读)

  • Repeatable Read(可重复读):mysql的默认级别,同一事务并发时 保证读取数据行一样(避免脏读与重复读)

  • Serializable(串行化):最高级别 但是性能差,锁竞争(避免脏读、重复读、幻读)

脏读:读取到事务未提交的数据(A读取到B未提交的数据,B回滚,那么A的数据就是脏数据)

幻读:事务进行中读取到其他已提交的数据(A更新后,B操作数据库插入什么的,导致A发现仍有数据未更新)

不可重复读:事务进行时提交前后读取到的数据不一致(A事务未提交时,其他数据先提交)

1
2
3
4
5
select @@tx_isolation; /*查询当前会话事务隔离级别*/
select @@global.tx_isolation;/*查询系统事务隔离级别*/

set session transaction isolatin level repeatable read; /*设置当前会话隔离级别*/
set global transaction isolation level repeatable read; /*设置系统隔离级别*/

  • …….


关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢