0
点赞
收藏
分享

微信扫一扫

事务的ACID属性和隔离级别

那小那小 2022-05-02 阅读 59

事务的ACID属性

<1>原子性

原子性是指事务是一个不可分割的单元,事务中的操作要么都发生,要么都不发生

<2>一致性

一致性是指,事务必然从一个一致性状态转换到另一个一致性状态

<3>隔离性

事务的隔离性是指,一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的

其他事务是隔离的,并发执行的各个事务之间不能互相干扰

<4>持久性

持久性是指,事务一旦提交,他对数据库的改变就是持久性的,接下来的操作对这个事务不会有任何影响

数据库的并发问题

<1>脏读

脏读:对于两个事务T1,T2, T1读取了已经被T2更新但是还没有提交的内容,当T2回滚以后,T1读到的数据就是无效的了

不可重复读:对于两个事务T1, T2,T1读取了一个字段,然后这个字段被T2更新了,之后T1再读取这个字段,这个字段就不同了。

幻读:对于两个事务T1, T2,T1从字段中读取了一行数据,然后T2在表中插入了一些新的行,之后,如果T1再读取这个表,就会发现多了一些行

remark后面两种情况我们有时会认为是正常的,所以有时就不对其进行处理,只处理脏读问题

事务的几种隔离级别

在这里插入图片描述

REPEATABLE READ: 能够解决前面两个问题,使用这个隔离级别的话,在连接还没有断开之前,T1读取到的字段都是T2提交更新前的字段

Mysql 命令行验证事务的隔离级别

查看当前的事务隔离级别:
select @@tx_isolation;

设置当前连接的隔离级别:
set transaction isolation level read commited;

设置数据库的全局隔离级别:
set global transaction isolation level read commited;

举报

相关推荐

0 条评论