事务

  • 事务是数据库执行的基本单元,在执行事务的过程中允许数据出现短暂的不一致,但是执行结束后必需保证数据的一致性。
  • 允许多个事务之间并发执行
  • ->带来的问题
    • 在出现软硬件错误时,如何保证数据库的一致性
    • 当多个事务并发执行时,要如何保证多个事务之间不会互相影响

事务的ACID特性

  • 为了解决上述问题,要求数据库中的事务必需具有ACID四个特性
  • Atomicity原子性
    • 指的事务所对应的一系列程序指令要么全部执行完,要么一条都没有执行。
    • 如果在转账业务的执行过程中系统错误,不能使部分执行的结果影响原来的数据库
    • 通常在磁盘上保存多个备份,在出现故障时使用旧值使事务恢复到执行前
  • Consistentency一致性
    • 保证事务在串行执行时,每一个事务的执行结果都是正确的
    • 如转账业务中,转账前后总额不变
    • 通常是事务管理器实现该特性
  • Isolation隔离性
    • 当多个事务并发执行时,要保证多个事务之间是互不影响的
    • 如在转账业务执行的过程中,另一个操作读取了接收方的金额,为了保证该操作读取到正确的数据
    • 由并发控制器实现,使多个任务的并发执行能够呈现串行执行的结果
  • Durability持久性
    • 事务完成后,对系统的影响是持久的
    • 由恢复管理器实现

事务的状态

  • Active活动状态,事务刚开始执行后的状态
  • Partially committed部分提交状态,事务最后一条指令执行完后的状态
  • Fialed失败状态,事务不能正常执行时的状态
  • Aborted终止状态,事务处于失败状态且已经回滚恢复到事务的初始状态
  • Committed提交状态,事务全部执行完会将执行结果提交给数据库,结果提交完的状态
  • Terminated终结状态,终止状态和提交状态都是终结状态

并发控制

  • 并发控制分四个部分:并发控制控制什么东西、并发冲突、基于锁机制解决并发冲突、两阶段锁协议

    • 并发控制是一系列机制,可以控制并发事务执行的执行顺序以及他们之间的互操作。
    • 用来防止并发冲突的产生,给数据库造成不一致,根本目标是解决并发冲突,用并发实现串行化
  • 并发冲突
    • 写写冲突,AB同时对数据做修改操作,数据最终的结果由谁先后执行决定,不符合实际的企业应用
    • 读写冲突,A读数据,B修改该数据,A又读数据,在A的连续两次读数据的过程中,读到了不同的数据
    • 写读冲突,A写了数据,B读了A的数据做了修改又写了数据,A发生问题后回滚,导致B写了错误的数据

锁机制

  • 锁分为两种

    • excluse排他锁,读写均可
    • shared共享锁,只读不写
  • 锁由并发管理器控制,每一个事务在执行前要向并发管理器申请相应的锁,只有得到锁之后才能进行相应的操作
  • 为了避免死锁与饿死现象的出现,提出了锁协议,锁协议会限制并发事务可能出现的并发执行的调度序列
  • 两阶段锁协议
    • 将事务分为两阶段,阶段一是增长阶段,阶段二是消减阶段。在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁,且在释放一个封锁之后,事务不再申请和获得任何其它封锁
    • 增长阶段允许事务申请锁,不允许事务释放锁
    • 消减阶段允许事务释放锁但是不允许事务申请锁
    • 可以证明,若并发执行的事务均遵守两段锁协议,则对事务的任何并发调度都是可串行化的
    • 但是它不能保证不发生死锁

(一)事务与并发控制相关推荐

  1. 深入理解 MySQL ——锁、事务与并发控制

    本文对 MySQL 数据库中有关锁.事务及并发控制的知识及其原理做了系统化的介绍和总结,希望帮助读者能更加深刻地理解 MySQL 中的锁和事务,从而在业务系统开发过程中可以更好地优化与数据库的交互. ...

  2. 深入理解 MySQL—锁、事务与并发控制

    本文转载自"vivo 互联网技术",已获授权. 本文对 MySQL 数据库中有关锁.事务及并发控制的知识及其原理做了系统化的介绍和总结,希望帮助读者能更加深刻地理解 MySQL 中 ...

  3. 深入理解 MySQL ——锁、事务与并发控制 1

    深入理解 MySQL --锁.事务与并发控制 目录 MySQL 服务器逻辑架构 MySQL 锁 事务 隔离级别 并发控制 与 MVCC MySQL 死锁问题 1.MySQL 服务器逻辑架构 (图片来源 ...

  4. 【数据库原理实验(openGauss)】事务与并发控制

    事务与并发控制 文章目录 事务与并发控制 一.事务 (1)事务的ACID特性 (2)事务管理 (3)事务实例 1.未提交的事务 2.已提交的事务 二.并发控制 (1)加锁语法 (2)加锁实例 一.事务 ...

  5. 12事务与并发控制(数据库原理)

    事务与并发控制 目录 一.事务概述 二.事务的类型 三.事务处理语句 四.事务的并发控制 一.事务概述 1.关系数据库的四个特征: 安全性:防止未授权的用户随意更改数据库中的数据 完整性:实体完整性. ...

  6. mysql事务并发控制_MySQL之事务及并发控制

    本节索引: 一.事务Transaction 二.事务的隔离级别 三.并发控制 四.MVCC-多版本的并发控制协议 一.事务 什么是事务? 事务Transactions:一组原子性的SQL语句,或一个独 ...

  7. 《数据库原理与应用》(第三版)第9章 事务与并发控制 基础 习题参考答案

    1.试说明事务的概念及四个特征. 答:原子性.隔离性.一致性.持久性. 2.事务处理模型有哪两种? 答:T-SQL事务处理模型.T-SQL事务处理模型. 3.在数据库中为什么要有并发控制? 答:为避免 ...

  8. mysql 运行模式_MySQL的运行模式及一些特性,引擎、事务、并发控制、优化总结...

    一 MySQL总体架构 上图是<高性能MySQL>中对MySQL总体架构的描述,客户端对服务端的连接有很多条,有一个专门的处理组件,类似tomcat使用线程池处理请求.解析器负责解析sql ...

  9. 数据库事务和并发控制

    事务特征(ACID): 原子性:事务的操作要么全做要么全不做. 一致性:事务操作的结果是一个一致状态转换到另一个一致状态. 隔离性:一个事务的执行过程不能受到其他事务的干扰. 持久性:事务一旦提交,对 ...

  10. Informix的事务、并发控制、锁机制、隔离级别

    1.事务 事务是指作为单个逻辑工作单元执行的一系列操作. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源.通过将一组相关操作组合为一个要么全部成功要么全部失败的单 ...

最新文章

  1. red hat DHCP服务器配置
  2. 用于道路目标检测的少镜头学习
  3. 图解GeoHash算法--MongoDB 地理位置索引的实现原理
  4. Java 集合系列(三)Collection 接口
  5. 深度学习(主要是CNN)用于图片的分类和检测总结
  6. zippo油和zorro油的区别_陶瓷轴承润滑油的性能质量最指标油的区别?_搜狐汽车...
  7. 使用组策略配置QoS
  8. WPS个人版安装VBA教程
  9. java三大框架要学多久_新手学习SSH三大框架的几点建议
  10. echarts官网文档打开慢的解决方法
  11. python 批量word文档转pdf
  12. Excel使用技巧 查找重复值
  13. java简易日历表_java简易日历代码
  14. linux操作系统基础教程第二版附录答案,《linux操作系统》第2版完整习题答案 电子工业出版社.doc...
  15. LeetCode_376: 摆动序列
  16. 16进制颜色识别和搭配规律 (实用)
  17. 微信网页扫码登录与微信公众号授权登录的区别
  18. 数据分析师有哪些等级
  19. 人工神经网络研究的目的,人工神经网络训练过程
  20. 百度服务器自动重启,百度云服务器重启的两种方法介绍

热门文章

  1. openlayers4xy坐标转为经纬度坐标
  2. 大数据与数据挖掘的基本概念,它们之间的内在联系是什么?
  3. QEMU仿真aarch64处理器运行Linux kernel
  4. 解决MacOS系统字体不识别STXingkai问题
  5. excel中的相对引用、绝对引用和混合引用
  6. ionic android 教程,Ionic Capacitor Android环境搭建 创建项目
  7. 用自己电脑做网站服务器
  8. 网易严选小程序 ( 前端 ):mpvue-shop
  9. POI库读取xlsx和xls格式excel以及解决安卓上的适配
  10. java继承计算不同图形面积_第五章-子类与继承-实验2(图形面积的和)