重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 568|回复: 0
打印 上一主题 下一主题

sqlserver中数据可能发生的异常

[复制链接]
跳转到指定楼层
楼主
发表于 2023-9-3 17:53:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数据可能发生个异常状况
1)脏读:读未提交,顾名思义,读到了不该读的东西

                               
登录/注册后可看大图

事务B读到了事务A回滚的数据,就是脏读。
2)不可重复读:读已提交,同个事务内,多次读取同个数据,却返回不同结果,偏向数据更新

                               
登录/注册后可看大图

事务B发生了不可重复读。
3) 幻读:同个事务内,因其他事务插入或删除数据,导致读取到不同的数据量(本质和不可重复读相似)

                               
登录/注册后可看大图

事务B发生了幻读。

数据库用什么机制来处理这些异常情况的发生,四种隔离级别
1)读未提交(Read Uncommitted):发生脏读,基本没有数据库使用这个级别了
2)读已提交(Read Committed):大多数数据库系统的默认隔离级别,解决了脏读问题
3)可重复读(Repeatable Read):同一事务的多个实例在并发读取数据时,会看到同样的数据,解决了不可重复读问题
4)可串行化(Serializable):这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。但可能导致大量的超时现象和锁竞争
总结:四种级别越往后越影响性能,但数据越稳定,实现机制就是"锁";



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-5 18:49 , Processed in 0.119909 second(s), 19 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

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