博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
事物的基本概念,附图示
阅读量:6003 次
发布时间:2019-06-20

本文共 1005 字,大约阅读时间需要 3 分钟。

来源

《数据库系统原理》

 

并发操作问题

  事务是并发操作的基本单位,保证事务的ACID特征是事务处理的重要任务,而事务的ACID特征可能遭到破坏的原因之一是多个事务对数据库的并发操作造成的。为了保证事务的隔离性和一致性,DBMS需要对并发操作进行正确调度。其中完整性校验可以保证一个事务单独执行时,若输入的数据库状态是正确的,则其输出的数据库状态也是正确的,但当多个事务交错执行时,可能出现不一致的问题,这也称为并发操作问题,典型的有如下三种:丢失更新、不可重复读和读”脏“数据。

  (1)丢失更新

  设有两个事务T1和T2,当它们同时读入同一数据并加以修改时,事务T2的提交结果会破坏事务T1的提交的结果,由此导致事务T1的修改丢失。这就是一种由于对数据的并发操作而带来的数据不一致。

 

  (2)不可重复读

  设有两个事务T1和T2,不可重复读是指事务T1读取事务后,事务T2执行更新操作,使事务T1无法再现前一次读取的结果。通常,不可重复读包括三种情况。

    i)事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值。

    ii)事务T1按一定的条件从数据库中读取某些数据后,事务T1删除了其中部分记录,当事务T1再次按相同条件读取数据时,发现某些记录神秘的消失了。

    iii)事务T1按一定的条件从数据库中读取某些记录后,事务T2插入了一些记录,当事务T1再次按相同条件读取数据时,发现多了一些记录。

  (3)读”脏“数据

   设有两个事务T1和T2,读”脏“数据是指,事务T1修改了某一数据,并将其写回磁盘,事务T2读取同一数据后,事务T1由于某种原因被撤销,这时事务T1已经修改过的数据恢复原值,事务T2读到的数据,就与数据库中的数据不一致,则事务T2读到的数据就为‘’脏‘数据,即不正确的数据。

  产生上述三类数据不一致的主要原因是并发操作破坏了事务的隔离性,并发控制机制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致。

  解决并发操作所带来的数据不一致问题的方法有封锁、时间戳、乐观控制法和多版本并发控制等。本节接下来主要介绍封锁方法,这也是众多数据库产品采用的基本方法。  

转载于:https://www.cnblogs.com/dmeck/p/10457964.html

你可能感兴趣的文章
lvreduce -L 1000M /dev/vg0/lv0 表示最后缩减至多大,不是减少了多大
查看>>
ES 自动恢复分片的时候不恢复了是磁盘超过了85%,然后不恢复了 ES可以配置多个数据目录...
查看>>
linux查杀病毒的几个思路
查看>>
宽带速度
查看>>
构建之法阅读笔记5
查看>>
Android判断网络连接状态
查看>>
leetcode_1033. Moving Stones Until Consecutive
查看>>
logback logback.xml常用配置详解(二)<appender>
查看>>
js常用的函数库
查看>>
Sqlserver 数据库安全
查看>>
netstat命令简单使用
查看>>
Python标示符命名规则
查看>>
SSL certificate problem unable to get local issuer certificate解决办法
查看>>
20145209 刘一阳 《网络对抗》实验四:恶意代码分析
查看>>
个人学期总结
查看>>
CodeForces 985E Pencils and Boxes
查看>>
为什么Elasticsearch查询变得这么慢了?
查看>>
node.js中使用http模块创建服务器和客户端
查看>>
Away3D基础教程(六):支持双面交互的PlaneGeometry
查看>>
(十五)Centos之安装jdk
查看>>