浅夏110 发表于 2020-5-11 16:36

常见的数据库事务隔离级别

2020年第十三届“认证杯”数学中国数学建模网络挑战赛
正在火热进行中,大家不要错过哦
详情请点击链接进行查看:http://www.tzmcm.cn/

为什么会出现数据库的隔离级别呢?
数据库隔离级别是为了解决数据库并发访问过程中产生的各种数据安全问题.

事务的基本要素(ACID)
原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。

一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。

隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

事务的并发问题
脏读 :读到的数据是未确认的数据 ( 未提交 ) , 如果另一个客户端在操作过程中,回滚了操作.那么用户读到的数据其实是无效数据.
不可重复读 :是指一个客户端在同一个事务中多次读取相同的数据 , 结果不一致
幻读 :一个客户端多次读取相同的数据,每次得到的结果都跟第一次得到的数据一样.但其实数据已经发生了变化.但是查不到结果.
小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

四种事务隔离级别:
读未提交        read uncommitted
读已提交        read committed        ( oracle默认 )
可重复读 repeatable read        ( mysql默认 )
串行事务        serializable
由事务隔离级别产生的几个常见问题:
读未提交,导致        ----->>>> 脏读
读已提交,导致        ----->>>> 不可重复读
可重复读,导致        ----->>>> 幻读

————————————————
版权声明:本文为CSDN博主「蓝山.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Lance_welcome/java/article/details/106034635


关于网挑的含金量:
网挑比赛属于全国大学生建模比赛预备赛,题目类型和国赛一样,参赛者获奖后(获奖率高达70%)会对以后就业有所帮助(金融、风控等),考研、保研也会有帮助,包括出国留学!
报名截止到5月14号零点
报名网址:http://www.madio.net/forum.php?mod=viewthread&tid=460005&fromuid=1534206


详情请扫码加入我们的互动交流QQ群


页: [1]
查看完整版本: 常见的数据库事务隔离级别