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 ...
随机推荐
- 『无为则无心』Python面向对象 — 57、类属性和实例属性
目录 1.类属性 (1)类属性的访问 (2)修改类属性 2.类属性和实例属性区别 1.类属性 (1)类属性的访问 类属性就是 类对象 所拥有的属性,它被 该类的所有实例对象 所共有. 类属性可以使用 ...
- JsonResponse类的使用、form表单上传文件补充、CBV和FBV、HTML的模板语法之传值与过滤器
昨日内容回顾 Django请求生命周期 # 1.浏览器发起请求 到达Django的socket服务端(web服务网关接口) 01 wsgiref 02 uwsgi + nginx 03 WSGI协议 ...
- RFC2544优化步长测试——信而泰网络测试仪实操
一.测试拓扑 拓扑说明 1.测试仪两个端口和DUT两个端口相连 2.测试仪P1端口发出流量,经过DUT转发后,从B端口发出,进入测试仪P2端口. 二.测试思路 1.在测试仪端口上创建两个Interfa ...
- 思迈特软件Smartbi光鲜亮丽的背后是什么在支撑?
思迈特软件Smartbi是国内知名BI厂商,自2011年成立以来就以提升和挖掘客户的价值为使命,致力于为客户提供一站式商业智能平台和BI解决方案,发展到如今已经获得了来自国家.地方政府.国内外权威分析 ...
- MegaRAID管理工具操作手册-从零到无
--时间:2021年1月25日 --作者:飞翔的小胖猪 前言 文档约定红色字体的E表示Enclosure Device ID.红色字体S表示Slot Number.红色字体A表示Adapter号.红色 ...
- Python:Scrapy(四) 命令行相关
学习自Scrapy 2.4.1 documentation 这一部分是对官方文档的学习,主要是理解翻译,来对之前的应用部分进行详细的理论补充. 1.保存爬取到的要素的方式: ①运行scrapy指令时, ...
- JDBC学习一---JDBC入门
原文链接 今天开始会写一系列 Java 后端学习的笔记,一方面是为了以后翻阅查看,更主要的原因是通过写作输出的方式让自己的印象更深,避免遗忘. 首先是简单记录下自己学习使用 JDBC 的历程,由于目前 ...
- Export大数据量导出和打包
项目需求 导出生成大批量数据的文件,一个Excel中最多存有五十万条数据,查询多余五十万的数据写多个Excel中.导出完成是生成的多个Excel文件打包压缩成zip,而后更新导出记录中的压缩文件路 ...
- PHP命令执行集锦
前言 代码审计总要遇到命令执行或者说RCE,打CTF的过程中难免不会碰见,毕竟PHP是世界上最好的语言,总结一下 命令执行函数 E.g.1 <?php error_reporting(0); s ...
- SQL学习日记
目录 SQL学习日记 1. 常见的数据库对象 2. DDL 定义语句 3. DML 操作语句 4. DQL 查询语句 5. DCL 控制语句 SQL学习日记 1. 常见的数据库对象 对象名 关键字 描 ...