当前位置: 首页 > news >正文

MySQL高级-MVCC-基本概念(当前读、快照读)

文章目录

  • 1、MVCC基本概念
    • 1.1、当前读
      • 1.1.1、创建表 stu
      • 1.1.2、测试
    • 1.2、快照读

1、MVCC基本概念

全称Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个非阻塞读功能。MVCC的具体实现,还需要依赖于数据库记录中的三个隐式字段undo log日志readView

1.1、当前读

读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select…lock in share mode(共享锁),select…for update、update、insert、delete(排他锁)都是一种当前读。

1.1.1、创建表 stu

mysql> DROP TABLE IF EXISTS `stu`;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> CREATE TABLE `stu`  (->   `id` int NOT NULL AUTO_INCREMENT,->   `age` int NOT NULL,->   `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, ->   PRIMARY KEY (`id`) USING BTREE,->   INDEX `idx_t_age`(`age`) USING BTREE-> ) ENGINE = InnoDB CHARACTER SET = utf8mb4;
Query OK, 0 rows affected (0.37 sec)mysql> INSERT INTO `stu` VALUES (1, 1, 'tom');
Query OK, 1 row affected (0.01 sec)mysql> INSERT INTO `stu` VALUES (3, 3, 'cat');
Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO `stu` VALUES (8, 8, 'rose');
Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO `stu` VALUES (11, 11, 'jetty');
Query OK, 1 row affected (0.01 sec)mysql> INSERT INTO `stu` VALUES (19, 19, 'lily');
Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO `stu` VALUES (25, 25, 'luci');
Query OK, 1 row affected (0.00 sec)mysql> 
mysql> SET FOREIGN_KEY_CHECKS = 1;
Query OK, 0 rows affected (0.00 sec)mysql> 

1.1.2、测试

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

select * from stu lock in share mode;
  • 在测试中我们可以看到,即使是在默认的RR隔离级别下,事务A中依然可以读取到事务B最新提交的内容,
  • 因为在查询语句后面加上了 lock in share mode 共享锁,此时是当前读操作。
  • 当然,当我们加排他锁的时候,也是当前读操作。

1.2、快照读

简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读

  • Read Committed:每次select,生成一个快照读
  • Repeatable Read:开启事务后第一个select语句才是快照读的地方
  • Serializable:快照读会退化为当前读

相关文章:

MySQL高级-MVCC-基本概念(当前读、快照读)

文章目录 1、MVCC基本概念1.1、当前读1.1.1、创建表 stu1.1.2、测试 1.2、快照读 1、MVCC基本概念 全称Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,快照读为MySQL实现MVCC提供了一个…...

kubernetes给指定用户分配调用k8s的api权限

文章目录 概要利用RBAC添加角色权限使用shell命令创建角色权限使用配置文件创建角色权限 调用k8s的api获取k8s账户的token 小结 概要 使用kubernetes部署项目时,有些特殊场景,我们需要在自己创建的pod里面调用k8s的api来管理k8s,但是需要使用…...

无人机的弱点和限制

1.电池和续航能力: 续航时间短:大多数无人机依赖锂电池供电,续航时间通常在30分钟至1小时之间,限制了其长时间任务的执行能力。 能量密度低:现有电池技术的能量密度无法满足长时间飞行需求,需要突破性的发…...

ElementUI的基本搭建

目录 1,首先在控制终端中输入下面代码:npm i element-ui -S 安装element UI 2,构架登录页面,login.vue​编辑 3,在官网获取对应所需的代码直接复制粘贴到对应位置 4,在继续完善,从官网添加…...

Modbus TCP与TCP/IP协议间的差异与应用场景

Modbus TCP概述 Modbus协议简介 Modbus是一种专为工业自动化系统设计的通信协议,采用主从模式,即一个主设备(通常是计算机或可编程逻辑控制器)与多个从设备(如传感器、执行器等)进行通信。Modbus协议具有…...

Linux Doxygen快速生成文档

此前写过一篇编写Doxygen格式的注释以用于生成文档,点击以查阅, Doxygen常用语法与字段记录,但是当时用的windows桌面版的doxygen,最近使用ubuntu编写代码想直接使用doxygen生成,故写下此博客 Doxygen Doxygen是一个用于生成软件文档的工具,它可以从代码中提取注释…...

MobPush REST API的推送 API之批量推送

调用验证 详情参见 REST API 概述的 鉴权方式 说明。 频率控制 详情参见推送限制策略的 接口限制 说明。 调用地址 POST http://api.push.mob.com/v3/push/createMulti 推送对象 以 JSON 格式表达,表示一条推送相关的所有信息 字段类型必须说明pushWorkobje…...

Arthas快速入门

简介 Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类…...

python系列30:各种爬虫技术总结

1. 使用requests获取网页内容 以巴鲁夫产品为例,可以用get请求获取内容: https://www.balluff.com.cn/zh-cn/products/BES02YF 对应的网页为: 使用简单方法进行解析即可 import requests r BES02YF res requests.get("https://www.…...

PHP和phpSpider:如何应对反爬虫机制的封锁?

php和phpspider:如何应对反爬虫机制的封锁? 引言: 随着互联网的快速发展,对于大数据的需求也越来越大。爬虫作为一种抓取数据的工具,可以自动化地从网页中提取所需的信息。然而,由于爬虫的存在&#xff0c…...

学生宿舍管理系统

摘 要 随着高校规模的不断扩大和学生人数的增加,学生宿舍管理成为高校日常管理工作中的重要组成部分。传统的学生宿舍管理方式往往依赖于纸质记录和人工管理,这种方式不仅效率低下,而且容易出错,无法满足现代高校管理的需求。因此…...

一分钟彻底掌握Java迭代器Iterator

Iterator Iterator 是 Java 的 java.util 包中的一个接口 iterator() 是 Java 集合框架中的一个方法,它返回一个 Iterator 对象,该对象可以用来遍历集合中的元素。 Iterator确实是一个接口,你不能直接实例化一个接口。但是,你可以…...

第三十七篇——麦克斯韦的妖:为什么要保持系统的开放性?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 如果没有详细的学习这篇文章,我觉得我就是被麦克斯韦妖摆弄的…...

青岛网站建设一般多少钱

青岛网站建设的价格一般会根据网站的规模、功能、设计风格等因素来定,价格会存在着一定的差异。一般来说,一个简单的网站建设可能在数千元到一万元之间,而一个复杂的大型网站建设可能会需要数万元到数十万元不等。所以在选择网站建设服务时&a…...

Linux 进程状态:TASK_INTERRUPTIBLE 和 TASK_UNINTERRUPTIBLE

文章目录 1. 前言2. TASK_INTERRUPTIBLE 和 TASK_UNINTERRUPTIBLE2.1 语义2.2 实现2.2.1 TASK_INTERRUPTIBLE 实现2.2.1.1 等待的条件成立时 唤醒2.2.1.2 信号 唤醒2.2.1.3 中断 唤醒2.2.1.3.1 内核态的处理过程2.2.1.3.2 用户态的处理过程 2.2.2 TASK_UNINTERRUPTIBLE 实现 2.…...

vue3使用vant4的列表vant-list点击进入详情自动滚动到对应位置,踩坑日记(一天半的踩坑经历)

1.路由添加keepAlive <!-- Vue3缓存组件&#xff0c;写法和Vue2不一样--><router-view v-slot"{ Component }"><keep-alive><component :is"Component" v-if"$route.meta.keepAlive"/></keep-alive><component…...

Linux的fwrite函数

函数原型: 向文件fp中写入writeBuff里面的内容 int fwrite(void*buffer&#xff0c;intsize&#xff0c;intcount&#xff0c;FILE*fp) /* * description : 对已打开的流进行写入数据块 * param ‐ ptr &#xff1a;指向 数据块的指针 * param ‐ size &#xff1a;指定…...

python udsoncan 详解

python udsoncan 详解 udsoncan 是一个Python库&#xff0c;用于实现汽车统一诊断服务&#xff08;Unified Diagnostic Services&#xff0c;UDS&#xff09;协议。UDS是一种用于汽车诊断的标准化通信协议&#xff0c;它定义了一系列的服务和流程&#xff0c;用于ECU&#xff…...

基于自组织长短期记忆神经网络的时间序列预测(MATLAB)

LSTM是为了解决RNN 的梯度消失问题而诞生的特殊循环神经网络。该网络开发了一种异于普通神经元的节点结构&#xff0c;引入了3 个控制门的概念。该节点称为LSTM 单元。LSTM 神经网络避免了梯度消失的情况&#xff0c;能够记忆更长久的历史信息&#xff0c;更能有效地拟合长期时…...

240629_昇思学习打卡-Day11-Vision Transformer中的self-Attention

240629_昇思学习打卡-Day11-Transformer中的self-Attention 根据昇思课程顺序来看呢&#xff0c;今儿应该看Vision Transformer图像分类这里了&#xff0c;但是大概看了一下官方api&#xff0c;发现我还是太笨了&#xff0c;看不太明白。正巧昨天学SSD的时候不是参考了太阳花的…...

HarmonyOS6 半年磨一剑 - RcTextarea 组件核心架构与类型系统设计

文章目录前言一、组件整体架构1.1 文件结构1.2 装饰器体系二、类型系统深度解析2.1 边框模式类型2.2 清空触发类型2.3 格式化与解析函数类型2.4 文本对齐与回车键类型三、核心参数体系3.1 必传参数3.2 尺寸相关参数3.3 功能开关参数四、内部状态与生命周期4.1 内部状态设计4.2 …...

技术驱动B端拓客升级:号码核验行业的痛点突围与发展新路径,氪迹科技核验筛选算法系统,法人股东核验,阶梯式价格

在B端市场竞争愈发精细化的当下&#xff0c;拓客工作的核心竞争力已从“广撒网”转向“精准触达”&#xff0c;而企业核心决策人的有效联系方式&#xff0c;正是精准拓客的关键载体。号码核验作为拓客流程的前置核心环节&#xff0c;直接决定着拓客投入的回报效率&#xff0c;更…...

HybridCLR Generate All报错终极解决指南:UnityLinker.exe找不到HotUpdate.dll怎么办?

HybridCLR Generate All报错终极解决指南&#xff1a;UnityLinker.exe找不到HotUpdate.dll怎么办&#xff1f; 当你正在使用HybridCLR进行Unity热更新开发时&#xff0c;突然遇到Generate All报错&#xff0c;提示UnityLinker.exe无法解析HotUpdate.dll&#xff0c;这确实会让人…...

PDF24 Creator离线版隐藏技巧:5个连官网都没说的自动化妙用

PDF24 Creator离线版隐藏技巧&#xff1a;5个连官网都没说的自动化妙用 如果你经常需要处理PDF文档&#xff0c;可能已经听说过PDF24 Creator这款免费工具。但大多数人仅仅停留在基础功能的使用上&#xff0c;比如简单的PDF合并、分割或转换。今天我要分享的是PDF24 Creator离线…...

收藏!小白也能看懂的大模型如何改写工业效率?

收藏&#xff01;小白也能看懂的大模型如何改写工业效率&#xff1f; 本文介绍了中控技术的TPT大模型在工业生产中的应用&#xff0c;它通过实时监控、自动计算最优参数和风险预警&#xff0c;帮助企业提升效率、降低成本。与互联网领域的AI应用不同&#xff0c;工业AI的价值更…...

从RS485到TCP/IP:Modbus协议V1.1b3的三种组网方式对比(含WireShark抓包分析)

从RS485到TCP/IP&#xff1a;Modbus协议V1.1b3的三种组网方式深度实战解析 在工业自动化领域&#xff0c;Modbus协议已经服役超过40年&#xff0c;却依然保持着惊人的生命力。作为工程师&#xff0c;我们常常面临一个关键抉择&#xff1a;在RS485、Modbus和TCP/IP这三种主流组…...

别再手动折腾了!用Docker一键部署Oracle 11g开发环境(附阿里云镜像地址)

告别繁琐配置&#xff1a;Docker容器化Oracle 11g开发环境实战指南 每当新项目需要搭建Oracle开发环境时&#xff0c;开发者们总会面临相同的困境——数小时的安装配置、复杂的系统依赖、难以复现的环境问题。传统安装方式不仅消耗宝贵时间&#xff0c;更可能因系统差异导致团…...

Mermaid在线编辑器:技术图表制作的高效解决方案

Mermaid在线编辑器&#xff1a;技术图表制作的高效解决方案 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor …...

终极指南:用VizTracer可视化Python代码执行的完整教程

终极指南&#xff1a;用VizTracer可视化Python代码执行的完整教程 【免费下载链接】viztracer VizTracer is a low-overhead logging/debugging/profiling tool that can trace and visualize your python code execution. 项目地址: https://gitcode.com/gh_mirrors/vi/vizt…...

PyFluent:重新定义CFD仿真自动化的技术革命

PyFluent&#xff1a;重新定义CFD仿真自动化的技术革命 【免费下载链接】pyfluent 项目地址: https://gitcode.com/gh_mirrors/pyf/pyfluent 行业痛点分析&#xff1a;CFD工程师的效率困境 在现代工程设计流程中&#xff0c;计算流体动力学&#xff08;CFD&#xff09…...