位置: 编程技术 - 正文

MySQL语句加锁的实现分析(mysql 加锁处理分析)

编辑:rootadmin

推荐整理分享MySQL语句加锁的实现分析(mysql 加锁处理分析),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql加锁规则,mysql 加锁处理分析,mysql锁怎么用,mysql加表锁语句,mysql加表锁语句,mysql 加锁处理分析,mysql 加锁处理分析,mysql加锁语法,内容如对您有帮助,希望把文章链接给更多的朋友!

摘要: MySQL两条SQL语句锁的分析

看一下下面的SQL语句加什么锁

(1)id 是不是主键

(2)当前系统的隔离级别是什么

(3)id列如果不是主键,那么id列上有索引吗

(4)id列上如果有二级索引,那么这个索引是二级索引吗

(5)两个SQL的执行计划是什么?索引扫描还是全表扫描

实际的执行计划需要根据MySQL的输出为准

组合一:id列是主键,RC隔离级别组合二:id列是二级唯一索引,RC隔离级别组合三:id列是二级非唯一索引,RC隔离级别组合四:id列没有索引,RC隔离级别组合五:id列是主键,RR隔离级别组合六:id列是二级唯一索引,RR隔离级别组合七:id列是二级非唯一索引,RR隔离级别组合八:id列上没有索引,RR隔离级别

Serializable隔离级别

在RR RC隔离级别下,SQL1:select 均不加锁,采用的是快照读;以下仅讨论SQL2:delete操作的加锁Percona

组合一:id主键+RCPercona

MySQL

组合二:id唯一索引+RC在唯一索引上的更新需要两个X锁,一个对应唯一索引id= 记录,一个对应于聚簇索引name='d'的记录Percona

MySQL语句加锁的实现分析(mysql 加锁处理分析)

MySQL

组合三:id非唯一索引+RCID列为普通索引,那么对应的所有满足SQL查询条件的记录,都会被加锁;同时,这些记录在主键索引上的记录,也会被加锁Percona

MySQL

组合四:id无索引+RCPercona

MySQL

组合五:id主键+RR参考 组合一

组合六:id唯一索引+RR参考 组合二

组合七:id非唯一索引+RRPercona

MySQL

组合八:id无索引+RRPercona

MySQL

组合九:Serializable

针对前面提到的简单的SQL,最后一个情况:Serializable隔离级别。对于SQL2:delete from t1 where id = ; 来说,Serializable隔离级别与Repeatable Read隔离级别完全一致,因此不做介绍。

Serializable隔离级别,影响的是SQL1:select * from t1 where id = ; 这条SQL,在RC,RR隔离级别下,都是快照读,不加锁。但是在Serializable隔离级别,SQL1会加读锁,也就是说快照读不复存在,MVCC并发控制降级为Lock-Based CC。

结论:在MySQL/InnoDB中,所谓的读不加锁,并不适用于所有的情况,而是隔离级别相关的。Serializable隔离级别,读不加锁就不再成立,所有的读操作,都是当前读。

详解mysql中的冗余和重复索引 mysql允许在相同列上创建多个索引,无论是有意还是无意,mysql需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑,这会影

Mysql中explain作用详解 一、MYSQL的索引索引(Index):帮助Mysql高效获取数据的一种数据结构。用于提高查找效率,可以比作字典。可以简单理解为排好序的快速查找的数据结构

MySQL中or语句用法示例 1.mysql中or语法的使用,在mysql语法中or使用注意点。项目遇到坑,遍历发放奖励数据查询错误!!!$sql='SELECT*FROM`vvt_spread_doubleegg_exchange_award`ASpWHEREp.`act_t

本文链接地址:https://www.jiuchutong.com/biancheng/348296.html 转载请保留说明!

上一篇:mysql 启动1067错误及修改字符集重启之后复原无效问题(mysql启动时报1067)

下一篇:详解mysql中的冗余和重复索引(mysql冗余字段)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络