【数据库事务】-1.数据库并发访问带来的4个问题

一.更新的丢失
举例:同一时间我把名字改成张三,你把名字改成李四,你一提交把我的更新张三覆盖了。

 造成原因:别人修改后的数据把我修改后的数据覆盖了。

 

二.脏读
举例:老师觉的本次考试题难,给每个学生加上10分,你本来考了59分没有及格,你一查询读到69分,我及格了很高兴回家了,但是老师觉得算了还是不要加10分了,又回滚了,那你又成了59分,但是你当时查的时候69分,高高兴兴回家了。

造成原因:用户读取的数据是其他事务修改进行中的数据。

 

三.可重复读

举例1:小明考了59分,去交补考费,先查一下是59分,sql语句缴纳补考费,再次sql确认查询一下自己分数,此时老师觉得小明是班长,给小明加上10分,当小明确认分数的时候成了69分了,小明说什么情况我补考费都交了,我怎么又成了69分,怎么回事?

举例2:超市,商品小于等于10个了,你就要上货,开始Sql查询商品是9个,Sql上货,另外一个人做盘盈,在角落里发现了1个,然后数量+1,这时候数量是10个,你Sql上货后下一步再次查询库存,一看是10个了,我去怎么回事,刚才不是9个么?

造成原因:在一个事务中,两次读取某一固定行中某列的值不一样,因为你在查的过程中,另外一个用户在更新数据。

四.幻影读

 

举例:老师查找网络版有多少学生,第1次查询是20条,第2次查询是25条,怎么回事第1次查询的条数和第2次查询的条数不一样。

 

造成原因:在一个事务中,两次读取满足某一定条件的记录数,条数不一样,因为你在查的过程中,另外一个用户在插入数据或者删除数据。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章