0
点赞
收藏
分享

微信扫一扫

分享几个国内免费的ChatGPT镜像网址(亲测有效-4月25日更新)

逸省 2023-04-26 阅读 78

文章目录

1.事务的四大特性

1.1原子性

事务的最小的执行单位,不允许分割,事务的原子性确保动作要么全部完成,要么全部不完成(例如:多条SQL,要么都执行,要么都不执行)

1.2一致性

执行事务的前后,数据要保持一致,业务上,需要有一定的数据一致性,某个业务操作前后数据要保持一致

1.3隔离性

(1)并发访问数据的时候,一个用户的事务不被其他事务所干扰,各并发事务之间的数据库是独立的,不同隔离级别下,可能不一定满足某种场景下的隔离性
(2)不同隔离级别,一个事务修改的数据根据隔离级别的不同,对其他事务可能可见,也可能不可见

1.4持久性

一个事务被提交后,他对数据库中的数据的改变是持久的没及时数据库发生故障也不应该对其有任何影响,事务提交后数据会持久化到硬盘
(1)rollback回滚:内存中执行的回滚不执行
(2)commit提交:内存中修改的操作执行(写入硬盘)

2.并发访问中存在的一些问题

2.1丢失更新

事务1修改数据的操作在事务2修改后就被覆盖了(相当于丢失)在这里插入图片描述

2.2脏读

第一个事务修改数据还未提交,第二个事务就读取了,在第一个事务回滚以后,第二个事务读取的数据就是脏数据在这里插入图片描述

2.3不可重复读

一个事务两次读取数据,中间另一个事务做了修改,第一个事务两次读取的数据就不同在这里插入图片描述

2.4幻读

一个事务两次读取数据,另一个事务做了插入操作,造成第一个事务读取的结果不同在这里插入图片描述

3.隔离级别解决一致性的问题

3.1未提交读

事务中的修改即使没有提交对其他事务也可见(一般不用)

3.2提交读

一个事务只能读取已经提交的事务所做的修改,也就是说一个事务所做的修改在提交前对其他事务不可见(使用的最多)

3.3可重复读

保证在同一个事务中多次读取同一数据的结果是一样的(MySQL默认的隔离级别)

3.4可串行化

强制事务串行执行,多个事务之间互不干扰,不会出现并发一致性问题(性能太差,一般不用)

4.不同隔离级别可以解决的问题

在这里插入图片描述

举报

相关推荐

0 条评论