请选择 进入手机版 | 继续访问电脑版

12360技术网 - 专业IT技术发表平台

 立即注册  找回密码
查看: 3565|回复: 7

事物隔离级别特性,优缺点,使用场景。

[复制链接]

18

主题

23

帖子

189

积分

注册会员

Rank: 2

积分
189
发表于 2020-1-16 19:55:02 | 显示全部楼层 |阅读模式
数据库提供的四种隔离级别:
1.Read uncommitted(读未提交):最低级别,任何情况都会发生。
2.Read Committed(读已提交):可避免脏读的发生。
3.Repeatable read(可重复读):可避免脏读,不可重复读的发生。
4.Serializable(串行化):避免脏读、不可重复读、幻读的发生。
四种隔离级别:Seralizable级别,最低的是Read uncommitted级别:级别越高,执行效率越低;隔离级别的设置只对当前链接有效,对JDBC操作数据库来说一个Connection对象相当于一个链接,只对该Connection对象设置的隔离级别只对该connection对象有关系,与其他链接connection对象无关。
Mysql的默认隔离级别是:可重复读:Repeatable read;
oracle数据库中,只支持seralizable(串行化)级别和Read committed();默认的是Read committed级别;
下面就四种隔离级别进行场景设计:
01: Read uncommitted 读未提交; 公司发工资了,领导把5000元打到singo的账号上,但是该事务并未提交,而singo正好去查看账户,发现工资已经到账,是5000元整,非常高兴。可是不幸的是,领导发现发给singo的工资金额不对,是2000元,于是迅速回滚了事务,修改金额后,将事务提交,最后singo实际的工资只有2000元,singo空欢喜一场。
02:Read committed 读已提交; singo拿着工资卡去消费,系统读取到卡里确实有2000元,而此时她的老婆也正好在网上转账,把singo工资卡的2000元转到另一账户,并在singo之前提交了事务,当singo扣款时,系统检查到singo的工资卡已经没有钱,扣款失败,singo十分纳闷,明明卡里有钱,为何…
03:Repeatable read 重复读 当singo拿着工资卡去消费时,一旦系统开始读取工资卡信息(即事务开始),singo的老婆就不可能对该记录进行修改,也就是singo的老婆不能在此时转账。
03:重复读可能出现幻读: singo的老婆工作在银行部门,她时常通过银行内部系统查看singo的信用卡消费记录。有一天,她正在查询到singo当月信用卡的总消费金额(select sum(amount) from transaction where month = 本月)为80元,而singo此时正好在外面胡吃海塞后在收银台买单,消费1000元,即新增了一条1000元的消费记录(insert transaction … ),并提交了事务,随后singo的老婆将singo当月信用卡消费的明细打印到A4纸上,却发现消费总额为1080元,singo的老婆很诧异,以为出现了幻觉,幻读就这样产生了。
04:Serializabale:最高的事务隔离级别,代价花费最高性能很低,很少使用,在此级别下,事务顺序执行,避免上述产生的情况。
优:
1.未提交读未提交读是最低的事务隔离,仅保证不读取物理损坏的数据。
2.提交读提交读比未提交读隔离级别更高一层,提交读隔离级别是大多数主流数据库的默认隔离级别,其保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”的情况发生。
3.可重复读可重复读保证了任何情况下,在同一个事务中前后数次所读取的数据是一致的,避免了“不可重复读取”的情况发生,是关系型数据库管理系统(MySQL)的默认隔离级别。
4.可串行化可串行化是最高的事务隔离等级,是将数据库中所有事务以串联的方式连接起来,防止一个事务影响其他事务。在此隔离级别,将没有并发事务。
                                                                                                                                       
                                                    
  • 点赞                        1                        
  • 收藏                        
  • 分享                                                                                                                        
  •                                                         
                                      
    • 文章举报                           
                                                
                                                                        
                                            
                                                        熊晓磊                                                                发布了54 篇原创文章 · 获赞 4 · 访问量 513                                                                                            私信                                                            关注
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x




下一篇:想要右键在新建文件栏中添加.md文件?注意以下细节!
回复

使用道具 举报

0

主题

22

帖子

472

积分

中级会员

Rank: 3Rank: 3

积分
472
发表于 2020-1-17 22:12:59 | 显示全部楼层
楼主,大恩不言谢了![www.12360.co]
回复

使用道具 举报

0

主题

19

帖子

409

积分

中级会员

Rank: 3Rank: 3

积分
409
发表于 2020-1-19 03:07:04 | 显示全部楼层
其实我一直觉得楼主的品味不错!呵呵![www.12360.co]
回复

使用道具 举报

0

主题

17

帖子

367

积分

中级会员

Rank: 3Rank: 3

积分
367
发表于 2020-1-22 19:36:16 | 显示全部楼层
我看不错噢 谢谢楼主![www.12360.co]
回复

使用道具 举报

0

主题

12

帖子

262

积分

中级会员

Rank: 3Rank: 3

积分
262
发表于 2020-1-22 21:38:19 | 显示全部楼层
这个帖子不回对不起自己![www.12360.co]
回复

使用道具 举报

0

主题

18

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
发表于 2020-1-22 23:12:07 | 显示全部楼层
楼主发贴辛苦了,谢谢楼主分享![www.12360.co]
回复

使用道具 举报

0

主题

23

帖子

493

积分

中级会员

Rank: 3Rank: 3

积分
493
发表于 2020-1-23 23:58:53 | 显示全部楼层
楼主,我太崇拜你了![www.12360.co]
社区不能没有像楼主这样的人才啊!
回复

使用道具 举报

0

主题

13

帖子

283

积分

中级会员

Rank: 3Rank: 3

积分
283
发表于 2020-2-6 05:48:25 | 显示全部楼层
既然你诚信诚意的推荐了,那我就勉为其难的看看吧![www.12360.co]
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12360技术网

GMT+8, 2020-2-29 14:21 , Processed in 0.093470 second(s), 26 queries .

本网站内容收集于互联网,Www.12360.Co不承担任何由于内容的合法性及健康性所引起的争议和法律责任。 欢迎大家对网站内容侵犯版权等不合法和不健康行为进行监督和举报。

© 2019-2020 Www.12360.Co

快速回复 返回顶部 返回列表