(一)事务与并发控制
事务
- 事务是数据库执行的基本单元,在执行事务的过程中允许数据出现短暂的不一致,但是执行结束后必需保证数据的一致性。
- 允许多个事务之间并发执行
- ->带来的问题
- 在出现软硬件错误时,如何保证数据库的一致性
- 当多个事务并发执行时,要如何保证多个事务之间不会互相影响
事务的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共享锁,只读不写
- 锁由并发管理器控制,每一个事务在执行前要向并发管理器申请相应的锁,只有得到锁之后才能进行相应的操作
- 为了避免死锁与饿死现象的出现,提出了锁协议,锁协议会限制并发事务可能出现的并发执行的调度序列
- 两阶段锁协议
- 将事务分为两阶段,阶段一是增长阶段,阶段二是消减阶段。在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁,且在释放一个封锁之后,事务不再申请和获得任何其它封锁
- 增长阶段允许事务申请锁,不允许事务释放锁
- 消减阶段允许事务释放锁但是不允许事务申请锁
- 可以证明,若并发执行的事务均遵守两段锁协议,则对事务的任何并发调度都是可串行化的
- 但是它不能保证不发生死锁
(一)事务与并发控制相关推荐
- 深入理解 MySQL ——锁、事务与并发控制
本文对 MySQL 数据库中有关锁.事务及并发控制的知识及其原理做了系统化的介绍和总结,希望帮助读者能更加深刻地理解 MySQL 中的锁和事务,从而在业务系统开发过程中可以更好地优化与数据库的交互. ...
- 深入理解 MySQL—锁、事务与并发控制
本文转载自"vivo 互联网技术",已获授权. 本文对 MySQL 数据库中有关锁.事务及并发控制的知识及其原理做了系统化的介绍和总结,希望帮助读者能更加深刻地理解 MySQL 中 ...
- 深入理解 MySQL ——锁、事务与并发控制 1
深入理解 MySQL --锁.事务与并发控制 目录 MySQL 服务器逻辑架构 MySQL 锁 事务 隔离级别 并发控制 与 MVCC MySQL 死锁问题 1.MySQL 服务器逻辑架构 (图片来源 ...
- 【数据库原理实验(openGauss)】事务与并发控制
事务与并发控制 文章目录 事务与并发控制 一.事务 (1)事务的ACID特性 (2)事务管理 (3)事务实例 1.未提交的事务 2.已提交的事务 二.并发控制 (1)加锁语法 (2)加锁实例 一.事务 ...
- 12事务与并发控制(数据库原理)
事务与并发控制 目录 一.事务概述 二.事务的类型 三.事务处理语句 四.事务的并发控制 一.事务概述 1.关系数据库的四个特征: 安全性:防止未授权的用户随意更改数据库中的数据 完整性:实体完整性. ...
- mysql事务并发控制_MySQL之事务及并发控制
本节索引: 一.事务Transaction 二.事务的隔离级别 三.并发控制 四.MVCC-多版本的并发控制协议 一.事务 什么是事务? 事务Transactions:一组原子性的SQL语句,或一个独 ...
- 《数据库原理与应用》(第三版)第9章 事务与并发控制 基础 习题参考答案
1.试说明事务的概念及四个特征. 答:原子性.隔离性.一致性.持久性. 2.事务处理模型有哪两种? 答:T-SQL事务处理模型.T-SQL事务处理模型. 3.在数据库中为什么要有并发控制? 答:为避免 ...
- mysql 运行模式_MySQL的运行模式及一些特性,引擎、事务、并发控制、优化总结...
一 MySQL总体架构 上图是<高性能MySQL>中对MySQL总体架构的描述,客户端对服务端的连接有很多条,有一个专门的处理组件,类似tomcat使用线程池处理请求.解析器负责解析sql ...
- 数据库事务和并发控制
事务特征(ACID): 原子性:事务的操作要么全做要么全不做. 一致性:事务操作的结果是一个一致状态转换到另一个一致状态. 隔离性:一个事务的执行过程不能受到其他事务的干扰. 持久性:事务一旦提交,对 ...
- Informix的事务、并发控制、锁机制、隔离级别
1.事务 事务是指作为单个逻辑工作单元执行的一系列操作. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源.通过将一组相关操作组合为一个要么全部成功要么全部失败的单 ...
最新文章
- red hat DHCP服务器配置
- 用于道路目标检测的少镜头学习
- 图解GeoHash算法--MongoDB 地理位置索引的实现原理
- Java 集合系列(三)Collection 接口
- 深度学习(主要是CNN)用于图片的分类和检测总结
- zippo油和zorro油的区别_陶瓷轴承润滑油的性能质量最指标油的区别?_搜狐汽车...
- 使用组策略配置QoS
- WPS个人版安装VBA教程
- java三大框架要学多久_新手学习SSH三大框架的几点建议
- echarts官网文档打开慢的解决方法
- python 批量word文档转pdf
- Excel使用技巧 查找重复值
- java简易日历表_java简易日历代码
- linux操作系统基础教程第二版附录答案,《linux操作系统》第2版完整习题答案 电子工业出版社.doc...
- LeetCode_376: 摆动序列
- 16进制颜色识别和搭配规律 (实用)
- 微信网页扫码登录与微信公众号授权登录的区别
- 数据分析师有哪些等级
- 人工神经网络研究的目的,人工神经网络训练过程
- 百度服务器自动重启,百度云服务器重启的两种方法介绍
热门文章
- openlayers4xy坐标转为经纬度坐标
- 大数据与数据挖掘的基本概念,它们之间的内在联系是什么?
- QEMU仿真aarch64处理器运行Linux kernel
- 解决MacOS系统字体不识别STXingkai问题
- excel中的相对引用、绝对引用和混合引用
- ionic android 教程,Ionic Capacitor Android环境搭建 创建项目
- 用自己电脑做网站服务器
- 网易严选小程序 ( 前端 ):mpvue-shop
- POI库读取xlsx和xls格式excel以及解决安卓上的适配
- java继承计算不同图形面积_第五章-子类与继承-实验2(图形面积的和)