一、问题的产生

1.数据库产生数据不一致的原因
一般导致数据库中数据不一致的原因有三种情况。产生数据不一致的原因主要有以下三种:一是由于数据冗余造成的;二是由于并发控制不当造成的;三是由于各种故障、错误造成的(比如软硬件故障或者操作错误)导致数据丢失或数据损坏。
根本原因:数据冗余
让我们具体讲讲这三种情况:
第一种情况:数据冗余
假如数据库中两个表都放了用户的地址,在用户的地址发生改变时,如果只更新了一个表的数据,那么两个表就有了不一致的数据。
第二种情况:并发控制不当
假如在飞机票订票系统中,如果两个购票点同时查询某张机票的订购情况,而且分别为订购了这张机票,如果并发控制不当,就会造成同一张机票卖给两个用户的情况。由于系统没有进行并发控制或者并发控制不当,造成数据不一致。
第三中情况:故障和错误
如果软硬件出现故障或者操作错误导致数据丢失或数据损坏,引起数据不一致。因此我们需要提供数据库维护和数据库数据恢复的一些措施。
要根据各种 数据库维护 手段(如转存、日志等)和 数据恢复 措施将 数据库恢复 到某个正确的、完整的、一致性的状态下。

二、活锁和死锁

封锁技术可以有效地解决并行操作的一致性问题,但也带来一些新的问题
死锁
事务T1封锁了数据R1
T2封锁了数据R2
T1又请求封锁R2,因T2已封锁了R2,于是T1等待T2释放R2上的锁
接着T2又申请封锁R1,因T1已封锁了R1,T2也只能等待T1释放R1上的锁
这样T1在等待T2,而T2又在等待T1,T1和T2两个事务永远不能结束,形成死锁

活锁
事务T1封锁了数据R
事务T2又请求封锁R,于是T2等待。
T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待。
T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求……
T2有可能永远等待,这就是活锁的情形

数据库期末复习之并发控制相关推荐

  1. 数据库期末复习知识点:(仅供参考)

    数据库期末复习知识点: 一运用SQL 基本sql语句 授权sql语句: 实体完整性sql语句: 二 ER 画出ER图,并转换成关系模式. 三.范式 范式 存储结构 一运用SQL 基本sql语句 (1) ...

  2. BISTU数据库期末复习指导

    BISTU数据库原理与应用期末复习指导 一.章节概览 数据库概述 数据模型与数据库结构 关系数据库 SQL语言基础以及数据定义功能 数据操作语句 索引和视图 触发器 关系规范化理论 数据库设计 安全管 ...

  3. MySQL数据库期末复习--这一篇就够了

    目录 一.前言 二.一些基本概念 1.时态数据库 2.分布式数据库 3.面向对象数据库 4.移动数据库 三.数据库的创建 1.工具 2.基本需求 3.根据上述需求画出E-R图 4.将E-R图转换成关系 ...

  4. 数据库期末复习之事务与数据恢复

    一.事务定义 一个数据库操作序列 一个不可分割的工作单位 恢复和并发控制的基本单位 二.事务的特性(ACID) 原子性(Atomicity):事务是数据库的逻辑工作单位 事务中包括的诸操作要么都做,要 ...

  5. 数据库期末复习(1-5章)

    第1章 概述 目录 引言 什么是数据库系统 什么是数据库 数据独立性 关系系统和其他 1.引言 对数据库可进行的一系列操作:增加.移除.检索.插入.修改.删除数据 DB:包含特殊实体的信息:DBMS: ...

  6. 2022-1-9数据库期末复习(五)第十章 - 第九章-第七章

    一.事务 用户定义的一组操作序列,要么全做,要么全不做. 是并发控制的基本单位. commit 事务正常结束 所有的数据是永久的更改 rollback 事务异常终止 撤销之前事务所做的更改,回滚到事务 ...

  7. 【期末考试】数据库期末复习

    一 简答题: 重点: 第一章(绪论), 第五章(数据库完整性), 第十一章(并发控制) 数据库模型和约束条件: 网状模型: 其实就是图 约数条件: 插入数据时, 允许插入尚未确定双亲结点值的子女结点值 ...

  8. 数据库期末复习选择题整理

    1.数据的逻辑独立性是指( ). A.内模式改变,模式不变         B.模式改变,内模式不变         C.模式改变,外模式和应用程序不变         D.内模式改变,外模式和应用程 ...

  9. 数据库期末复习资料 (超全的名词解释和简答题)

    如果对您有帮助的话,请多多点赞和关注我哦,这样我会更有动力生产更优质的内容!如果有疑问和批评指正,也欢迎在评论区给出哦! 英文名词解释: 范式 1NF:关系的每一个分量都不能再分,保证数据的原子性,不 ...

最新文章

  1. 网络数据包分析软件Wireshark简介
  2. FLUSH TABLES WITH READ LOCK 和 LOCK TABLES
  3. FSLib.Extension库
  4. windows server 2003中继代理
  5. 根据历史数据预测未来数据_未来销量预测——Kaggle基础方案(一):赛题背景和数据字段分析...
  6. C# DataTable怎么合计字段
  7. ORM框架之Mybatis(六)mybatis通用mapper
  8. I.MX6 2G DDR3 16G eMMC
  9. SQL Server 数据库所有表增加同一列
  10. vc中文件的读写操作
  11. Nesterov Momentum牛顿动量法
  12. nginx访问日志配置及访问日志切割实战
  13. python的基础网络编程是下列_python基础 - 网络编程
  14. UE4 视频播放打包Pak内
  15. 最新《Linux系统优化+Linux综合架构课程》
  16. php5.2.17 pecl,php pecl的使用
  17. c#中文字大全,转换为字符串格式
  18. 东拉西扯01世界的沧海桑田
  19. recovery介绍
  20. Mixly----利用超声波传感器控制LED灯

热门文章

  1. poj2723详解(二分 + 2-SAT)( 两种方法求解 )
  2. poj3692(二分图最大独立集)
  3. 学习笔记TF064:TensorFlow Kubernetes
  4. 在 Chrome 开发者工具中调试 node.js
  5. 第13章代码《跟老男孩学习Linux运维:Shell编程实战》
  6. 我的Android进阶之旅------gt;Android中通过adb shell input来模拟滑动、按键、点击事件...
  7. Web开发人员为什么越来越懒了?
  8. Oracle 10g 中通过DBLink访问MySQL数据库
  9. 有了这篇 Shell 脚本实践指南,同事对我“刮目相看”!
  10. 爱奇艺基于SpringCloud的韧性能力建设