发布时间:2023-10-24 09:00
刚开始学习MySQL中锁的时候,网上一查出来一堆,什么表锁、行锁、读锁、写锁、悲观锁、乐观锁等等等,直接整个人就懵了。好多文章都尽量把很多锁给列举一遍,生怕写少了内容不够丰富,有的连死锁、分布式锁都给写上了。其实给这些锁归归类,就清楚很多了!本篇文章只聊共享锁和排他锁,不过我们也不妨先看下锁分类。
按照锁粒度划分,可以将锁划分成行锁、页锁和表锁。
这里只解释下行锁:按照行的粒度对数据进行锁定,锁定粒度小,发生锁冲突概率低,可以实现并发都高。但是对于锁的开销比较大,加上会比较慢;在程序中控制不好,可能出现死锁的情况。
说到粒度,顺带说下InnoDB 存储引擎的逻辑结构:所有数据都被逻辑地存放在一个空间内,称为表空间,而表空间由段(sengment)、区(extent)、页(page)组成。
共享锁(S):又称为读锁,多个事务可以一起读,但都不能写(这里有个细节,如果只有当前事务加了共享锁,那么该事务可以写。),共享锁之间不互斥,共享锁会阻塞排它锁。
排他锁(X):又称为写锁,允许获得排他锁的事务更新数据,但是阻止其他事务获得相同数据集的共享锁和排他锁。
这个跟MySQL没有直接性的关系,只是人们使用锁碰到的问题、或者使用程序解决具体场景的一些锁概念:悲观锁、乐观锁、分布式锁、死锁。
Python+Selenium自动化测试(五):Page Object模式
苦熬一个月,整出这份“架构脑图 / 面试解析 / 进阶知识 ”全都有的Spring全家桶
JavaEE框架整合开发入门到实战:Spring+SpringMVC+MyBAtis(微课版)——代码练习第一章
记一次 Druid 超时配置的问题 → 引发对 Druid 时间配置项的探究
【第30天】给定一个整数 n ,求它的因数之和 | 约数之和定理
PyTorch 深度剖析:并行训练的DP和DDP分别在什么情况下使用及实例
mysql入门很简单 视频下载_MySQL入门很简单全集共22课