数据库并发控制、事物的四大特性、原子性、一致性、隔离性、持久性,简称ACID、事物的概念、数据概念(脏读,不可重复读,幻读)、封锁协议、一级封锁协议、二级封锁协议、三级封锁协议、最强封锁协议

2023-05-16

文章目录

  • 5.数据库并发控制
    • 5.1事物的概念
    • 5.2事物的四大特性
      • 8.2.1 原子性
      • 5.2.2 一致性
      • 5.2.3 隔离性
      • 5.2.4 持久性
    • 5.3数据概念(脏读,不可重复读,幻读)
      • 5.3.1 脏读
      • 5.3.2 不可重复读
      • 5.3.3 幻读
    • 5.4封锁协议
      • 5.4.1一级封锁协议
      • 5.4.2二级封锁协议
      • 5.4.3三级封锁协议
      • 5.4.4最强封锁协议

5.数据库并发控制

5.1事物的概念

  事物这个概念在数据库中可谓是最为常见。它是指一些列操作序列(一个或一个以上)当一个事务被提交给了DBMS(数据库管理系统),则DBMS需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态(要么全执行,要么全都不执行);同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。从事物的概念出发。就可以引出事物的四大特性。

5.2事物的四大特性

  事务具有4个基本特征,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Duration),简称ACID

8.2.1 原子性

  事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,只允许出现两种状态之一,要么都成功,要么都失败
  任何一项操作都会导致整个事务的失败,同时其它已经被执行的操作都将被撤销并回滚,只有所有的操作全部成功,整个事务才算是成功完成
  比如:你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱。不可能划了卡,而钱却没出来。这两步必须同时完成,要么就不完成。

5.2.2 一致性

  事务的一致性是指事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处以一致性状态。
  比如:如果小明给小虎转账,不可能小明账户扣钱了,而小虎账户没有加钱

5.2.3 隔离性

  事务的隔离性是指在并发环境中,并发的事务是互相隔离的,一个事务的执行不能被其它事务干扰。也就是说,不同的事务并发操作相同的数据时,每个事务都有各自完整的数据空间。
  一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务是不能互相干扰的

5.2.4 持久性

  事务的持久性是指事务一旦提交后,数据库中的数据必须被永久的保存下来。即使服务器系统崩溃或服务器宕机等故障。只要数据库重新启动,那么一定能够将其恢复到事务成功结束后的状态
  在事物进行过程中,未结束之前,DML语句是不会更改底层数据,只是将历史操作记录一下,在内存中完成记录。只有在事物结束的时候,而且是成功的结束的时候,才会修改底层硬盘文件中的数据

5.3数据概念(脏读,不可重复读,幻读)

5.3.1 脏读

  脏数据所指的就是未提交的数据。也就是说,一个事务正在对一条记录做修改,在这个事务完成并提交之前,这条数据是处于待定状态的(可能提交也可能回滚),这时,第二个事务来读取这条没有提交的数据,并做进一步的处理,就会产生未提交的数据依赖关系,这种现象被称为脏读。

5.3.2 不可重复读

  一个事务先后读取同一条记录,而事务在两次读取之间该数据被其它事务所修改,则两次读取的数据不同,我们称之为不可重复读。

5.3.3 幻读

  是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,比如这种修改涉及到表中的“全部数据行”同时,第二个事务也修改这个表中的数据,这种修改是向表中插入“一行新数据"”。那么,以后就会发生操作第一个事务的用户发现表中还存在没有修改的数据行,就好像发生了幻觉—样。

5.4封锁协议

  在运用S锁和X锁对数据M加锁的时候,需要约定一些规则,例如何时申请S锁或者X锁,持锁时间,这些规则就是封锁协议。
  其中不同的封锁协议对应不同的隔离级别。

5.4.1一级封锁协议

  一级封锁协议对应READ-UNCOMMITTED 隔离级别,本质是在事务A中修改完数据M后,立刻对这个数据M加上共享锁(S锁)[当事务A继续修改数据M的时候,先释放掉S锁,再修改数据,再加上S锁],根据S锁的特性,事务B可以读到事务A修改后的数据(无论事务A是否提交,因为是共享锁,随时随地都能查到数据A修改后的结果),事务B不能去修改数据M,直到事务A提交,释放掉S锁。

  • 缺点:可能会造成如下后果

1.丢失更新。
2.脏读。
3.不可重复读。
4.幻读。

5.4.2二级封锁协议

  二级封锁协议对应READ-COMMITTED隔离级别,本质是事务A在修改数据M后立刻加X锁,事务B不能修改数据M,同时不能查询到最新的数据M(避免脏读),查询到的数据M是上一个版本(Innodb MVCC快照)的。

  • 优点:

1.避免脏读。

  • 缺点:可能会造成如下后果

1.丢失更新。
2.不可重复读。
3.幻读。

5.4.3三级封锁协议

  三级封锁协议对应REPEATABLE-READ隔离级别,本质是二级封锁协议基础上,对读到的数据M瞬间加上共享锁,直到事务结束才释放(保证了其他事务没办法修改该数据),这个级别是MySql 5.5 默认的隔离级别。

  • 优点:

1.避免脏读。
2.避免不可重复读。

  • 缺点:

1.幻读。
2.丢失更新。

5.4.4最强封锁协议

  最强封锁协议对应Serialization隔离级别,本质是从MVCC并发控制退化到基于锁的并发控制,对事务中所有读取操作加S锁,写操作加X锁,这样可以避免脏读,不可重复读,幻读,更新丢失,开销也最大,会造成读写冲突,并发程度也最低。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库并发控制、事物的四大特性、原子性、一致性、隔离性、持久性,简称ACID、事物的概念、数据概念(脏读,不可重复读,幻读)、封锁协议、一级封锁协议、二级封锁协议、三级封锁协议、最强封锁协议 的相关文章

  • 【CubeMX】使用CubeMX创建KEIL工程

    之前一直使用的是STM32F103xx以及STM32F407xx这两个系列的单片机 xff0c 有很多代码可以复用 xff0c 所以习惯复制工程稍作修改开发 这次使用了一款高性价比的F405系列的单片机 xff0c 决定使用CubeMX完成
  • 【PARROT ANAFI】无人机仿真(一)——在Ubuntu18.04完成Olympe+Sphinx配置

    1 本机参数 操作系统 xff1a Ubuntu 18 04 在虚拟机与原生系统基本无差别 系统架构 xff1a 基于x64的处理器 更新时间 xff1a 2020 10 24 2 Olympe配置 创建文件夹 xff0c 安装repo工具
  • 【UBUNTU】在Ubuntu18.04安装无线网卡驱动(解决Operation not permitted问题)

    笔者当前使用一台老式台式机完成一个项目 这个机子没有无线网卡 购置了一个号称免驱的无线网卡 xff08 TP Link TL WDN5200H如图 xff09 xff0c 然而只能在windows系统上免驱 因为一些问题 xff0c 在Ub
  • C++头文件进阶--包含问题

    原文看这里 https blog csdn net fengcq126 article details 103016917 很多事不深入以为自己懂了 xff0c 但真正用到项目上 xff0c 才发现了问题 曾以为自己写C语言已经轻车熟路了
  • #1035-D: single-precision operand implicitly converted to double-precision

    keil编译C 43 43 代码时 xff0c 出现警告 xff1a 1035 D single precision operand implicitly converted to double precision float代表浮点型数据
  • 字符串连接 和 字符串子串查找的库函数实现

    字符串比较 xff0c s gt t xff0c 则返回1 xff1b s 61 t xff0c 则返回0 xff1b s lt t xff0c 则返回 1 int strcompare char s char t 字符串比较 xff0c
  • 迷你光流传感器

    淘宝链接 xff1a https item taobao com item htm spm 61 a230r 1 14 189 23787c06xGJdIO amp id 61 620288594189 amp ns 61 1 amp ab
  • catkin:: 解决find_package(catkin) failed.

    背景 xff1a 不安装ros的情况下 xff0c 使用catkin进行项目工程管理 一种方法是 直接将catkin package放到项目工程中 xff0c 这样每个工程都要复制一个 xff0c 太麻烦 另一种方法是 xff0c 安装ca
  • UnfamiliarWords-3

    prune pruning pruned prunes 英 pru n 美 pru n CET6 TEM4 vi 删除 xff1b 减少 vt 修剪 xff1b 删除 xff1b 剪去 n 深紫红色 xff1b 傻瓜 xff1b 李子干 a
  • valgrind:内存泄漏 memory leak 调试教程

    1 安装 sudo apt install valgrind 如果找不到 xff0c 先运行 sudo apt update 2 运行程序 程序不带参数运行 valgrind tool 61 memcheck leak check 61 f
  • ubuntu 设置固定ip地址 或设置自动获取ip地址

    查看网卡名称 ifconfig 查看网卡名称 xff0c 如enp5s0 enp3s0等 配置固定或自动ip sudo vi etc network interfaces interfaces文件内容如下 xff1a 注释或启用auto i
  • 解决警告——有符号 无符号不匹配

    转 xff1a https blog csdn net lxw907304340 article details 47399207 解决警告 warning C4018 lt 有符号 无符号不匹配 今天遇到这个问题 xff0c 虽然不影响程
  • python中config.yaml文件的使用

    config yaml文件读入后是一个字典 xff0c 可用来配置程序中的相关参数 xff1b config test yaml文件 39 39 39 yaml文件 注意事项 xff1a 不要用Tab xff0c 用空格 xff01 用空格
  • 超声波电机

    超声波电机 简称USM xff0c 一种全新概念的驱动装置 xff0c 它利用压电材料的逆电效应 xff08 即电致伸缩效应 xff09 xff0c 把电能转换为弹性体的超声振动 xff0c 并通过摩擦传动的方式转换成运动体的回转或直线运动
  • 单片机学习笔记(四)——串行口

    51单片机内部有一个全双工的异步通信串行口 xff0c 有四种工作方式波特率可由软件设置片内的定时器 计数器来控制 特殊功能寄存器SCON和PCON用来对串行口进行控制 下面先介绍这两个寄存器 xff1a 1 SCON 字节地址98H xf
  • 时代的一粒沙,压在个人头上便是整整的一座山

    校招这段时间以来 xff0c 于我的感觉就是满眼的 荒唐 宛如跳梁小丑 xff0c 宛如粉墨登场的花旦 于我如此乐观之人 xff0c 常常感慨生在了好时代 xff0c 遇上了大变局 好机遇 xff0c 是如此的想大展拳脚 xff0c 幻想中
  • linux中rtklib程序中rnx2rtkp程序make错误

    https blog csdn net qq 39600809 article details 80839138 utm medium 61 distribute pc relevant none task blog 2 7Edefault
  • 【职场必备知识】一文搞懂五险一金(打工人必备)

    社保局电话 xff1a 12333五险一金非常重要的是 xff1a 缴纳基数和缴纳比例 xff01 文章目录 五险一金是什么五险一金缴纳比例北京职工社保缴费基数和比例成都职工社保缴费基数和比例 xff08 2022年7月15日 xff09
  • 【职场必备知识】毕业留蓉政策与发展前景分析

    成都人才安居服务网入口 xff08 附网址 xff09 成都人才安居服务网人才公寓房源展示 文章目录 1 成都简介1 1 国家中心城市1 2 内陆开放高地1 3 交通畅达全球1 4 产业门类丰富 2 高新区简介2 1 高新区发展历程2 2
  • 【购房必备知识】成都公积金贷款/商业贷款的一些知识记录

    文章目录 还贷计算器成都公积金贷款指南公积金贷款利率商业贷款利率贷款额度计算公式最低首付款比例等额本息 vs 等额本金按揭和按揭成数的理解房贷基点 vs 房贷利率参考 还贷计算器 贷款计算器1贷款计算器2成都公积金 APP 成都公积金贷款指

随机推荐