您现在的位置是:首页 > 正文

mysql加锁机制的理解

2024-04-01 00:06:47阅读 3

使用这个表来举例子吧,我们可以看到只有d这个字段没有索引。没有索引就会全表扫描,全表扫描的意思就是扫描全部主键


CREATE TABLE `t` (
  `id` int(11) NOT NULL,
  `c` int(11) DEFAULT NULL,
  `d` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `c` (`c`)
) ENGINE=InnoDB;

insert into t values(0,0,0),(5,5,5),
(10,10,10),(15,15,15),(20,20,20),(25,25,25);

现在有这么一条语句

select * from where d = 5 for update;

假设现在RC就是读提交的级别下,全表扫描,扫描的行都会加锁,但d != 5的行 锁都会被释放掉,这确实破坏了两阶段锁(要锁的时候锁,解锁的时候在commit的时候解锁)

而在RR级别下就是可重复读的级别下,也是全表扫描,但不符合条件的行的锁不会被释放,并且还会加上间隙锁来避免幻读。间隙锁就是左开右闭区间加锁,这些小小的缝隙就是间隙锁了。间隙锁加锁是不会冲突的。
在这里插入图片描述

网站文章

  • 炉石兄弟 Hearthbuddy 新手教程 热门推荐

    交流QQ群 775059127 第一步:安装微软组件支持库(可在群文件中下载) 第二步:进入游戏开启炉石兄弟登陆并进入游戏,自己把卡牌添加好,选择好模式,并选择角色。比如对战模式,选好你需要挂机的角色。 用什么角色选下即可。然后启动炉石兄弟。 接开启即可进入CDK登陆窗口,初次使用会提示Configuration窗口 点击Select稍等片刻。 然后会弹出填写CDK的窗口,在窗...

    2024-04-01 00:06:21
  • Vins-Fusion 实时外参camera-imu 标定

    Vins-Fusion 实时外参camera-imu 标定 一、camera两帧间匹配点计算得到位姿:1.对极几何求得本质矩阵E;2.利用svd分解求得四个可能解R,t; 3.通过三角测量深度最大确定最终正确解,得到位姿Rcamera。二、camera两帧间imu计算得到位姿Rimu;三、构建最小二乘问题求得外参Rcamera-imu。

    2024-04-01 00:06:13
  • 【ClickHouse】表引擎详解

    【ClickHouse】表引擎详解

    目录1.日志引擎系列--Log系列1.1TinyLog1.2Log1.3StripeLog2.Special系列2.1Memory2.2Merge2.3Distributed3.MergeTree系列...

    2024-04-01 00:06:07
  • Django框架基础知识点

    Django框架基础知识点

    Django框架1.Django创建项目的命令django-admin startproject 项目名称python manage.py startapp 应用app名2.Django创建项目后,项目文件夹下的组成部分此题考的是学员对MVT 的理解项目文件夹下的组成部分:manage.py 是项目运行的入口,指定配置文件路径。与项目同名的目录,包含项目的配置文件。init.py ...

    2024-04-01 00:05:44
  • 【环境踩坑】MAC M1安装 mysqlclient 报错

    【环境踩坑】MAC M1安装 mysqlclient 报错

    ImportError: dlopen(/Usersopt/anaconda3/lib/python3.9/site-packages/MySQLdb/_mysql.cpython-39-darwin...

    2024-04-01 00:05:37
  • Siri自定义Intent以及处理

    一、新建自定义Intent 1.Xcode->New->File->搜索Intent 2.左下角'+'号新建Intent 3.完善Intent资料 注意:1.Inte...

    2024-04-01 00:05:29
  • JSON解析的理解

    JSON解析的理解

    2019独角兽企业重金招聘Python工程师标准>>> ...

    2024-04-01 00:05:05
  • MongoDB的水平扩展,你做对了吗?

    MongoDB的水平扩展,你做对了吗?

    分布式数据库的前世今生当人们一开始使用数据库系统的时候,所有数据都是跑在一台服务器上,即所谓的单机数据库服务器。在企业级应用中,我们会搭建一台应用程序服务器,一般它会被运行在一台服务器或者工作站上,大多数情况下采用 Linux/Unix/Windows 操作系统,也有人把这样的服务器称之为应用程序服务器。顾名思义,他的作用是处理复杂的业务逻辑。但是一点需要注意的是,在这样的构架中,这台应用程...

    2024-04-01 00:04:58
  • 指针之交换两个变量的值 热门推荐

    指针之交换两个变量的值 热门推荐

    方案1:不使用指针  如果不使用指针交换两个变量的值,坦白来说是个不可能完成的任务,你可能会写成这样的:   #include "stdio.h"void swap(int a,int b) { int temp; temp = a; a = b; b = a; }int main() { int m = 1,n = 2; swap(m,n);

    2024-04-01 00:04:53
  • js键盘控制方块运动(自动运动,仅控制方向,到达屏幕边缘会自动反弹)

    <style> * { padding: 0; margin: 0; } .box { width: 100px; height: 100px...

    2024-04-01 00:04:47