MySQLInnoDB引擎事物隔离级别RC和RR_weixin_34119545的博客-程序员宝宝

技术标签: python  数据库  

说到mysql的事物就会想到事物的特性ACID:

  1. 原子性
  2. 一致性
  3. 隔离新
  4. 持久性

我这里针对mysqlinnodb存储引擎来说

mysql的隔离性实际上是通过lock来实现的,其他三条是通过redo,undo机制来实现

mysql中lock的类型

  1. 共享锁(允许事物读取一行数据)
  2. 排他锁(允许事物读取或更新一行数据)
  3. 意向锁 (表级别的锁定)

RC和RR的区别

在默认情况下mysql存储引擎默认使用的是一致性非锁定读操作

如果读取的行正在执行DELETE、UPDATE操作,这时读取操作不会因此等待行上锁的释放,而是会读取当前行的快照版本。但是读取快照的方式在不同隔离级别下方式是不一样的。***RC下读取的是行最新快照版本,RR模式下读取的是事物开始时候的行数据版本。***因此在RC模式下会产生不可重复读和幻读。因此RR支持MVVC(多版本并发控制)而RC不支持MVVC。

锁算法的实现

  1. Recort Lock (单个行记录上的锁)
  2. Gap Lock (间隙所,锁定一个范围,单不包含记录本身)
  3. Netx-Key Lock (锁定一个范围,并锁定记录本身)

InnoDB对于行的查询都是采用这种Netx-Key Lock算法。对于不同的SQL查询,可能设置为分为共享Netx-Key Lock和排他Netx-Key Lock。

参考

  • MySQL技术内幕

转载于:https://my.oschina.net/u/3706273/blog/1813433

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34119545/article/details/92401342

智能推荐

Linux的Web服务器配置_linux web_Anluo_agoni的博客-程序员宝宝

①.cd /run/media/root/CentOS\ 7\ x86_64/Packages (使用自动补全)1.准备两台虚拟机(CentOS):一台作为服务器,一台作为客户机(选择仅主机模式进行连接)1.进入web服务配置文件路径:vim /etc/httpd/conf/httpd.conf。4.嫌麻烦,可以连上网络,使用命令:yum install httpd下载。2.检查是否安装好了httpd:rpm -q httpd。进入文档路径:cd /var/www/html。出现了服务器端的文档表示成功。

pycharm运行os.system出现�����ڲ����ⲿ���Ҳ���ǿ����еij��� ���������ļ���_默默前行的虫虫的博客-程序员宝宝

pycharm运行出现�����ڲ����ⲿ���Ҳ���ǿ����еij��� ���������ļ���。os.system运行其他脚本文件时报的错,

[C++] string反转的5种方法_c++ string 反转_simidagogogo的博客-程序员宝宝

Different methods to reverse a string in C/C++Different methods to reverse a string in C/C++Given a string, write a C/C++ program to reverse it.1. Write own reverse function by swapping characters:One simple solution is to write our own reverse functio

助手的反叛——浏览器劫持(详细讲解了BHO的问题,推荐)_weixin_34413065的博客-程序员宝宝

转自[url]http://bbs.cnns.net/viewthread.php?tid=19781&extra=page%3D1[/url]详细讲解了BHO的问题,推荐助手的反叛——浏览器劫持一. 谁误导了浏览器  今天是大年初二,王先生家中来了许多客人,把平时埋头于工作的王先生弄了个手忙脚乱,由于客人带来的几个小孩子嚷嚷着要出去上网,王先生只好把...

linux内核协议栈 bind 系统调用(TCP)_bind系统调用_老王不让用的博客-程序员宝宝

目录1. bind 概述2. 端口信息的管理2.1 端口信息inet_bind_bucket2.2 已绑定端口信息哈希表inet_bind_hashbucket3. bind 内核实现(tcp)3.1 sys_bind()3.2inet_bind()3.3 inet_csk_get_port()(核心)3.3.1 动态端口范围3.3.2 端口和套接字映射inet_bind_hash3.3.3 端口复用1. bind 概述应用程序可以通过bind()...

ROS2 win10和Ubuntu通信配置方法_小朱 智能驾驶的博客-程序员宝宝

实验目的:在win10系统里面安装ROS2,Matlab 2019b,Carsim2019,在Ubuntu系统里面部署自动驾驶算法模型与ROS2系统,两者实现联合仿真,win10主要用于车辆的动力学求解。除了Carsim之外,还计划再装一下Prescan,然后进行场景加动力学模型的仿真。因为ROS2 没有主节点概念,配置过程比使用ROS1要方便很多,目前实验室系统逐渐移植到ROS2平台上。...

随便推点

[ PAT-A ] 1027 Colors in Mars (C++)_顾_wolf的博客-程序员宝宝

题目描述People in Mars represent the colors in their computers in a similar way as the Earth people. That is, a color is represented by a 6-digit number, where the first 2 digits are for Red, the middle...

【解决】redis启动权限问题_redis权限问题_toyuanx的博客-程序员宝宝

错误描述redis重新启动之后只能读不能写,并提示以下信息: (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check

『Git知识点』git 拉取远程分支到本地及git常用命令总结(详细版)_git 命令行获取远程目录结构_拎壳儿跑的蜗牛的博客-程序员宝宝

mkdir XX:创建一个空目录 XX指目录名pwd:显示当前目录的路径cat xx:查看xx文件内容git init:吧当前的目录变成可以管理的git仓库,生成隐藏的.git文件git add xx:把xx文件添加到暂存区git commit -m “xx”:提交文件 -m后面的是注释git status:查看仓库状态git log:查看历史记录git reset --hard ...

Flink 能否动态更改 Checkpoint 配置?_flink算子动态配置_zhisheng_blog的博客-程序员宝宝

前段时间在社区邮件中看到有人提问是否可以动态开启 Checkpoint,昨天在钉钉群中又看到有个同学在问能够动态调整 Checkpoint 的时间,其实不仅仅是这些,在社区邮件和群里经常...

学习记录:Scrapy爬取斗鱼直播间数据_HZNL的博客-程序员宝宝

爬取直播间信息 利用Selenium实现翻页前言学校的实训要求做一个大数据项目,我们的任务是一个斗鱼流量大数据平台。我先爬一下试试。

推荐文章

热门文章

相关标签