挖坑,InnoDB的七种锁

2023-11-30 15:08
文章标签 innodb 七种 挖坑

本文主要是介绍挖坑,InnoDB的七种锁,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Case 1

MySQL,InnoDB,默认的隔离级别(RR),假设有数据表:
t(id PK, name);

数据表中有数据:
10, shenjian
20, zhangsan
30, lisi

事务A先执行,还未提交:
insert into t values(11, xxx);

事务B后执行:
insert into t values(12, ooo);

问:事务B会不会被阻塞?

Case 2

MySQL,InnoDB,默认的隔离级别(RR),假设有数据表:

t(id AUTO_INCREMENT, name);

数据表中有数据:
1, shenjian
2, zhangsan
3, lisi

事务A先执行,还未提交:

insert into t(name) values(xxx);

事务B后执行:
insert into t(name) values(ooo);

问:事务B会不会被阻塞?


本质上,这些都是InnoDB锁机制的问题。总的来说,InnoDB共有七种类型的锁

(1)共享/排它锁(Shared and Exclusive Locks)
(2)意向锁(Intention Locks)
(3)记录锁(Record Locks)
(4)间隙锁(Gap Locks)
(5)临键锁(Next-key Locks)
(6)插入意向锁(Insert Intention Locks)
(7)自增锁(Auto-inc Locks)

后续为大家逐一讲解。

画外音:我c,为什么有些没锁有听过,不会是楼主杜撰的吧,,,额,,,怎么可能呢,有这本事就好了=_=

上面的两个case,事务B会不会被阻塞呢?

画外音:平时加班多,争取周末写。

相关文章:

《InnoDB并发如此高,原因竟然在这?》

《缓存架构,一篇足够?》

这篇关于挖坑,InnoDB的七种锁的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/437494

相关文章

InnoDB的多版本一致性读的实现

InnoDB是支持MVCC多版本一致性读的,因此和其他实现了MVCC的系统如Oracle,PostgreSQL一样,读不会阻塞写,写也不会阻塞读。虽然同样是MVCC,各家的实现是不太一样的。Oracle通过在block头部的事务列表,和记录中的锁标志位,加上回滚段,个人认为实现上是最优雅的方式。 而PostgreSQL则更是将多个版本的数据都放在表中,而没有单独的回滚段,导致的一个结果是回滚非

MySQL技术内幕_innodb存储引擎

MySQL技术内幕_innodb存储引擎 INNODB innodb中如果表没有主键 表是否由 非空唯一键,有则该字段为主键没有,则自动创建一个6字节大小的指针 innodb存储引擎的所有数据都存储在表空间中,表空间由段,区,页(块)组成。 如果启用了 innodb_file_per_table, 则每张表内的数据可以单独放在一个表空间中即使启用了上面参数,共享表空间也会因为 系统事务信息

Mysql中的隐式COMMIT以及Savepoints的作用以及MySQL的Innodb分空间存储、设计优化、索引等几个小知识点整理

一、Mysql中的隐式COMMIT以及Savepoints的作用     Mysql默认是自动提交的,如果要开启使用事务,首先要关闭自动提交后START TRANSACTION 或者 BEGIN 来开始一个事务,使用ROLLBACK/COMMIT来结束一个事务。但即使如此,也并不是所有的操作都能被ROLLBACK,以下语句在执行后会导致回滚失效,比如DDL语句创建一个数据库,而且不止此,这样的语

MySQL Innodb 插入调优

1)提高数据库插入性能中心思想:尽量将数据一次性写入到Data File和减少数据库的checkpoint 操作。这次修改了下面四个配置项:  1)将 innodb_flush_log_at_trx_commit 配置设定为0;按过往经验设定为0,插入速度会有很大提高。 0: Write the log buffer to the log file and flush the

MySql系列之Innodb存储引擎

插件化存储引擎是MySQL特点,用户可以根据自己的需求使用不同的存储引擎,甚至通过抽象的API接口实现自己的存储引擎。innodb存储引擎支持行级锁以及事务特性,也是多种场合使用较多的存储引擎,本文将介绍innodb存储引擎。 存储引擎简介 mysql系统来说,存储引擎是真正实现数据的存储与读取操作的对象,数据库实例通过抽象API接口与存储引擎交互,存储引擎自定义实现数据的物理、逻辑组织形式以

如何提高工作效率-杜绝以下七种事情

想提升工作效率,就別再做这七件事 试想一位小公司老板每日孜孜不倦地工作,为何不能从为数众多的竞争者脱颖而出? 一位创业家可以不眠不休一天工作24 小时,整整一周不休假。 然而,时间有限,且竞争者却永远可以投入更多钱与心力,让竞争更剧烈。那么,为什么某些小型新创公司可以完成许多大型企业无法完成的事情呢? ●Instagram──只有13 名员工却被Facebook 用几十亿买下的公

面试官给我挖坑:URI中的 “//” 有什么用?

点击上方“朱小厮的博客”,选择“设为星标” 后台回复”加群“获取公众号专属群聊入口 欢迎跳转到本文的原文链接:https://honeypps.com/network/whats-the-use-of-/-in-uri/ 我们在浏览网页的时候,需要在浏览器中输入http://或者https://开头的URL地址,类似http://honeypps.com,那么这里的"://"或者"//"有什么

mysql5.6InnoDB通过frm与ibd对数据进行恢复

1. 安装MySQL Utilities 下载地址:https://dev.mysql.com/downloads/utilities/ 下载完后直接安装即可 如果运行时需要python就下载 https://dev.mysql.com/downloads/connector/python/ 本机还需要安装与需要恢复数据的一样版本的Mysql 2. 使用mysqlfrm命令读取frm

MySQL基础学习:为什么推荐使用InnoDB而不是MyISM

这里写自定义目录标题 一、事务支持二、锁机制三、外键支持四、性能和优化五、崩溃恢复能力六、其他特性 一、事务支持 InnoDB:支持事务处理,通过ACID(原子性、一致性、隔离性、持久性)事务模型保证数据的完整性和一致性。这对于需要保证数据一致性和可靠性的应用场景至关重要。MyISAM:不支持事务处理,这在进行大量数据修改时可能导致数据不一致的风险。 二、锁机制 InnoDB

mysql innodb分表实战

目的:为了了解mysql单表分区方法,特此作为学习笔记记录一下。 一。准备表,创建一个学生表,包含主键sid和名称sname字段 create table students( sid int(5) primary key, sname varchar(24) ); 二。准备数据 insert into students(sid,sname) values(10003,'tom