MariaDB InnoDB基本介绍
InnoDB锁定模式
事务获取锁,以防止并发事务修改甚至读取某些行或行范围。这样做是为了确保并发写入操作不会冲突。
共享锁(S)和排他锁(X)
两种标准的行级锁是共享锁(S)和排他锁(X)
获取共享锁以读取行,并允许其他事务读取锁定的行,但不能写入锁定的行。其他事务也可能获取自己的共享锁。
获得排他锁以写入一行,并阻止其他事务锁定同一行。它的具体行为取决于隔离级别;默认值(REPEATABLE READ可重复读),允许其他事务从排他锁定的行读取。
意向锁
InnoDB还允许表锁定,并允许表和行级别的锁定优雅地共存,存在一系列称为意图锁的锁。
意向共享锁(IS)表示事务打算设置共享锁。
意向排他锁(IX)表示事务打算设置排他锁。
是否授予锁定可以总结如下:
- 如果持有其他任何锁(X,S,IX,IS),则不授予X锁。
- 如果持有X或IX锁,则不授予S锁。如果持有S或IS锁,则将授予此权限。
- 如果持有X或S锁,则不授予IX锁。如果持有IX或IS锁,则将授予此权限。
- 如果持有X锁,则不授予IS锁。如果持有S,IX或IS锁,则将授予此权限。
间隙锁
使用innodb_locks_unsafe_for_binlog的默认设置和默认隔离级别REPEATABLE READ,将使用一种称为间隙锁定的方法。当InnoDB在记录上设置共享或排他锁时,它实际上在索引记录上。记录将具有内部InnoDB索引,即使它们没有定义唯一索引也是如此。同时,在索引记录之前的间隙上保持了锁定,因此另一个事务无法在该记录与先前记录之间的间隙中插入新的索引记录。
间隙可以是一个索引值,也可以是多个索引值,或者根本不存在,这取决于索引的内容。如果一条语句使用唯一索引的所有列来搜索唯一行,则不使用间隙锁定。
类似于上述共享和排他意图锁,可以有多种类型的间隙锁。这些包括共享间隙锁,排他间隙锁,意图共享间隙锁和意图排他间隙锁。
如果设置了innodb_locks_unsafe_for_binlog系统变量,或者隔离级别设置为READ COMMITTED,则禁用间隙锁。
MariaDB InnoDB基本介绍的更多相关文章
- MySQL InnoDB Cluster介绍
目录 一.MySQL InnoDB Cluster介绍 二.环境准备 三.将MGR节点加入MySQL Cluster 四.问题汇总 五.性能测试 六.个人总结 一.MySQL InnoDB Clust ...
- mariadb:InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
mariadb 启动中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 起因:线上正在运行的系统,因为需要调整性能,变更了my ...
- MySQL InnoDB索引介绍以及在线添加索引实例分析
引言:MySQL之所以能成为经典,不是没有道理的,B+树足矣! 一.索引概念 InnoDB引擎支持三种常见的索引:B+树索引,全文索引和(自适应)哈希索引.B+树索引是传统意义上的索引,构造类似二叉树 ...
- mariadb一些命令介绍及mariadb架构图和索引
mariadb> SHOW GLOBAL VARIABLES; 全局变量影响服务器的全局操作 mariadb> SHOW [SESSION] VARIABLES; 客户端变量,只对当前会话 ...
- MariaDB · 版本特性 · MariaDB 的 GTID 介绍
本文来自阿里的数据库内核月报,写的很详细,主要是关于mariadb开启gtid之后做主从的方法. 原文连接:http://mysql.taobao.org/monthly/2016/02/08/
- MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)
MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群) OneAPM蓝海讯通7月3日 发布 推荐 4 推荐 收藏 14 收藏,1.1k 浏览 MariaDB 作为 ...
- MariaDB Galera Cluster 部署
原文 http://code.oneapm.com/database/2015/07/02/mariadb-galera-cluster/MariaDB作为Mysql的一个分支,在开源项目中已经广泛 ...
- MariaDB Galera Cluster 部署(如何快速部署MariaDB集群)
MariaDB Galera Cluster 部署(如何快速部署MariaDB集群) [日期:--] 来源:Linux社区 作者:Linux [字体:大 中 小] MariaDB作为Mysql的一个分 ...
- 私有云Mariadb集群搭建
MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性, 同时提高系统的负载能力,集群部署是必不可少的. MariaDB Gale ...
随机推荐
- NSSCTF-[UTCTF 2020]Zero
做misc嘛,先把题目一开始就给的一串英文翻译一下, 可以看到说明的是这个txt文档可能是包含其他的文本量,这个文本里面还有其他的东西,只是正常是看不到, 使用binwalk或者fomost分离尝试, ...
- Python 随机(random)模块的不可预测之美
1 . 概念 1.1 真.伪随机数 大部分的计算机语言都会提供 API 生成随机数,此类 API 称为随机数生成器. 计算机可以用随机数模拟现实世界中的各种随机概率问题,没有随机生成器的编程语言不是& ...
- 【缓存】CPU高速缓存 之MESI 性协议 Gif 动画
CPU缓存架构 不同的CPU厂商的架构也有些不同,在这里只介绍流行的缓存架构 缓存一致性可以分为三个点: 在进程每个写入运算时都立刻采取措施保证资料一致性 每个独立的运算,假如它造成资料值的改变,所有 ...
- 在shell脚本里使用sftp批量传送文件
转至:https://blog.csdn.net/istronger/article/details/52141530?utm_medium=distribute.pc_relevant.none-t ...
- 60天shell脚本计划-12/12-渐入佳境
--作者:飞翔的小胖猪 --创建时间:2021年3月23日 --修改时间:2021年3月27日 说明 每日上传更新一个shell脚本,周期为60天.如有需求的读者可根据自己实际情况选用合适的脚本,也可 ...
- windows下CMD常用命令(url链接)
https://blog.csdn.net/LJFPHP/article/details/78818696
- LeetCode-015-三数之和
三数之和 题目描述:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组. 注意:答案 ...
- .Net Core(.NET6)中接入Log4net和NLog进行日志记录
一.接入Log4net 1.按日期和大小混合分割日志 nuget包安装 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore 配置文件 配置文 ...
- (七)React Ant Design Pro + .Net5 WebApi:后端环境搭建-日志、异常处理
一.日志 日志具有帮助开发者快速的定位问题,记录各种信息,配合其他分析框架使用等等功能,收集日志的各类框架如:Log4net.NLog.Exceptionless.Serilog等等,百度或园子里介绍 ...
- 关于malloc源码中的bin_at宏定义的个人见解
0x01:简介 在堆中的内存申请和释放中,为了减少使用系统调用函数对内存操作,malloc_state(分配区)结构中使用了fastbinsY数组和bins数组.当chunk被free后,bins链会 ...