MySQL表锁,以为自己懂了,结果一个答对的都没有!!!

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: MyISAM确实现在不是主流,但其中的技术思路,也值得我们学习。

关于MySQL的如下问题,你能准确的答出来么?

(1)和行锁相比,表锁有什么优势?

(2)频繁group by的业务,用MyISAM更好,还是InnoDB更好,为什么?

(3)某个session占有了表写锁,有另外N个session又要对表进行写操作,MySQL是如何处理的?

(4)某个session释放了表写锁,有另外N个session要对表进行写操作,同时还有M个session要对表进行读操作,谁先抢到锁,为什么?

(5)如何判断表锁是不是主要冲突点?

(6)如何高效的实现并发插入与查询,如何互斥?

(7)MyISAM什么情况下,数据文件会出现空洞?

(8)MyISAM,假如数据文件有空洞,新插入的数据是先补上空洞,还是插入在文件尾部?

 《频繁插入(insert)的业务,用什么存储引擎更合适?》,上述问题都是小case。 画外音:可以跳回原文去找答案。   从评论留言来看,不少同学的反馈是:

“…文章太容易了…”

“…MyISAM过时了…”

听了大家的反馈,我起初是抱歉,以为聊了一个大家都非常清楚的话题,浪费了大家的时间。   可是,从作业题的评论情况来看:
image.png

竟然没有一个同学答对!!! 画外音:可以跳回原文去看评论,很遗憾一个offer都发不出去。   当然,可能会有朋友说,你乱出题,你的答案靠谱么。这样,这次我直接贴MySQL官网的截图吧:
image.png

通常情况下,下列四种情况,表锁会优于行锁: 这些情况,用更粗粒度的锁,更易于应用程序调优,因为锁开销会比行锁更小。 画外音:英文不好,翻译不对的大家提出。
很多时候,我们以为自己懂了,其实懂的不透彻。

很多时候,思路比结论重要,MyISAM确实现在不是主流,但其中的技术思路,也值得我们学习。

本文转自“架构师之路”公众号,58沈剑提供。

相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
关系型数据库 MySQL 数据库
【MySQL实战笔记】 06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?-01
【4月更文挑战第17天】MySQL的锁分为全局锁、表级锁和行锁。全局锁用于全库备份,可能导致业务暂停或主从延迟。不加锁备份会导致逻辑不一致。推荐使用`FTWRL`而非`readonly=true`因后者可能影响其他逻辑且异常处理不同。表级锁如`lock tables`限制读写并限定操作对象,常用于并发控制。元数据锁(MDL)在访问表时自动加锁,确保读写正确性。
352 31
|
11月前
|
SQL 存储 关系型数据库
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
滴滴面试:明明 mysql 加的是 行锁,怎么就变 表锁 了?
|
关系型数据库 MySQL 数据库
【后端面经】【数据库与MySQL】12|数据库锁:明明有行锁,怎么突然就加了表锁?
【4月更文挑战第15天】在MySQL的InnoDB引擎中,锁通过索引实现,主要锁定叶子节点。查询使用哪个索引,就锁哪个;无索引时锁全表。若查询值不存在,InnoDB会构造临键锁阻止插入。锁在事务结束(Rollback或Commit)时释放。乐观锁在尝试更新时检查数据变化,适合读多写少场景,悲观锁一开始就加锁,适用于写多读少。InnoDB支持行锁和表锁,行锁依赖索引。共享锁允许多个线程加同类型锁,排它锁则独占。
273 1
|
SQL 存储 关系型数据库
MySQL数据库——锁-表级锁(表锁、元数据锁、意向锁)
MySQL数据库——锁-表级锁(表锁、元数据锁、意向锁)
969 0
|
存储 关系型数据库 MySQL
百度搜索:蓝易云【MySQL的行锁、表锁触发教程】
需要注意的是,行锁和表锁的使用会对数据库的性能产生影响。行锁可以提高并发性,但可能导致死锁问题,而表锁可以简单粗暴地避免死锁,但会降低并发性。因此,在使用锁时需要根据实际情况来选择合适的锁级别。如果需要更精细的并发控制,可以考虑使用行锁,如果对并发性要求不高,可以考虑使用表锁。
195 1
|
SQL 存储 关系型数据库
MySQL表锁、行锁、排它锁和共享锁
MySQL表锁、行锁、排它锁和共享锁
223 0
MySQL表锁、行锁、排它锁和共享锁
|
SQL 关系型数据库 MySQL
Mysql锁之——全局锁、表锁
Mysql锁之——全局锁、表锁
|
关系型数据库 MySQL Java
Java 最常见的面试题:说一下 mysql 的行锁和表锁?
Java 最常见的面试题:说一下 mysql 的行锁和表锁?
|
SQL 存储 关系型数据库
Mysql表锁与行锁
Mysql表锁与行锁
320 0

推荐镜像

更多