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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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沈剑提供。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
存储 关系型数据库 MySQL
百度搜索:蓝易云【MySQL的行锁、表锁触发教程】
需要注意的是,行锁和表锁的使用会对数据库的性能产生影响。行锁可以提高并发性,但可能导致死锁问题,而表锁可以简单粗暴地避免死锁,但会降低并发性。因此,在使用锁时需要根据实际情况来选择合适的锁级别。如果需要更精细的并发控制,可以考虑使用行锁,如果对并发性要求不高,可以考虑使用表锁。
25 1
|
3月前
|
SQL 关系型数据库 MySQL
Mysql锁之——全局锁、表锁
Mysql锁之——全局锁、表锁
|
4月前
|
SQL 存储 关系型数据库
MySQL表锁、行锁、排它锁和共享锁
MySQL表锁、行锁、排它锁和共享锁
49 0
MySQL表锁、行锁、排它锁和共享锁
|
6月前
|
关系型数据库 MySQL Java
Java 最常见的面试题:说一下 mysql 的行锁和表锁?
Java 最常见的面试题:说一下 mysql 的行锁和表锁?
|
9月前
|
SQL 存储 关系型数据库
Mysql表锁与行锁
Mysql表锁与行锁
74 0
|
11月前
|
关系型数据库 MySQL 索引
MySQL - 无索引行锁升级为表锁
MySQL - 无索引行锁升级为表锁
73 0
|
11月前
|
存储 SQL NoSQL
mysql锁(全局锁、表锁、行锁、页锁、排他锁、共享锁)
mysql锁(全局锁、表锁、行锁、页锁、排他锁、共享锁)
302 0
|
SQL 存储 Oracle
MySQL 中的锁(表锁、行锁)
MySQL 中的锁(表锁、行锁)
|
SQL 关系型数据库 MySQL
MySQL怎么将表中一列数据复制到另外一个字段;MySQL表锁了,强制释放锁;索引mysql;MySQL事务,串行化,索引
MySQL怎么将表中一列数据复制到另外一个字段 UPDATE order_user_config SET record_count = count; count有数据 注意把有数据的count字段复制到record_count
181 0
MySQL怎么将表中一列数据复制到另外一个字段;MySQL表锁了,强制释放锁;索引mysql;MySQL事务,串行化,索引