https://blog.csdn.net/localhost01/article/details/78720727

https://blog.csdn.net/c466254931/article/details/53463596

https://www.cnblogs.com/zhanht/p/5431273.html

https://www.cnblogs.com/liaoweipeng/p/7615959.html

锁的基本概念
  当多事务争取一个资源时,有可能导致数据不一致,这个时候需要一种机制限制,并且将数据访问顺序化,用来保证数据库数据的一致性,锁就是其中的一种机制。我们可以用商场的试衣间来做个比喻,商场里得每个试衣间都可供多个消费者使用,因此可能出现多个消费者同时试衣服需要使用试衣间,这时候就产生冲突了,为了避免冲突,试衣间装了锁(其实就是进去之后把门拴住),某一个试衣服的人在试衣间里把锁锁住了,其他顾客就不能再从外面打开了,只能等待里面的顾客,试完衣服,从里面把锁打开,外面的人才能进去(网上找到的比喻,非常形象)。不过我想要是并发了就尴尬了,哈哈。

行级锁 行级锁–>分为共享锁和排他锁

行级锁是Mysql中锁定粒度最细的一种锁,能大大减少数据库操作的冲突,
由于其粒度小,加锁的开销最大。

MySQL主要的两种锁的特性可大致归纳如下:
 表级锁: 开销小,加锁快;不会出现死锁(因为MyISAM会一次性获得SQL所需的全部锁);
锁定粒度大,发生锁冲突的概率最高,并发度最低。
 行级锁: 开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高

MyIsam -----》只支持表级锁

Innodb -----》InnoDB存储引擎既支持行级锁( row-level locking),也支持表级锁,但默认情况下是采用行级锁。

共享锁又称为读锁,简称S锁
顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。

排他锁又称为写锁,简称X锁
顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁的事务是可以对数据就行读取和修改。排他锁指的是一个事务在一行数据加上排他锁后,其他事务不能再在其上加其他的锁

mysql InnoDB引擎默认的修改数据语句,
update,delete,insert都会自动给涉及到的数据加上排他锁,
select语句默认不会加任何锁类型,如果加排他锁可以使用select…for update语句,
加共享锁可以使用select … lock in share mode语句。

  1. 所以加过排他锁的数据行在其他事务种是不能修改数据的, 也不能通过for update和lock in share
    mode锁的方式查询数据, 但可以直接通过select …from…查询数据,因为普通查询没有任何锁机制。

下面做实验验证上面的结论

show VARIABLES like 'autocommit';


设置自动提交事务为否

set  autocommit = 0;


执行事务提交

COMMIT ;

结论:也就是说,Innodb存储引擎执行数据 update时候,会加上排他锁,这时候,执行 update ,delete ,insert , 或者 select select…for update 和 select … lock in share mode 都会发生阻塞,但是执行 select * from table 是不会阻塞的。

常问 3: 谈谈MySQL共享锁与排他锁相关推荐

  1. mysql共享锁使用方法_浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景...

    Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |-- ...

  2. mysql锁的应用场景_浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

    Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |-- ...

  3. 浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

    Mysql共享锁.排他锁.悲观锁.乐观锁及其使用场景 一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |-- ...

  4. Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

    一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁( ...

  5. mysql 共享锁和排他锁 意向锁 记录锁 Gap Locks Next-Key Locks 插入意向锁介绍

    文章目录 前言: 共享锁和排它锁 LOCK TABLES 和 UNLOCK TABLES 语句 意向锁 记录锁Record Locks 间隙锁 Gap Locks 下一键锁定 next-key 插入意 ...

  6. mysql共享锁与排他锁

    mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流. 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能 ...

  7. Mysql共享锁和排他锁

    文章目录 前言 一.什么是共享锁和排他锁? 二.数据准备 三.测试验证 1.对数据行加入排他锁,测试其它锁 2.对数据行加入共享锁,测试其它锁 3.对数据行进行insert.delete.update ...

  8. mysql共享锁、排他锁、意向锁

    1.共享锁(读锁) 加了读锁,只允许别的事务继续加读锁而不能加写锁,也就是只读. 用法是SELECT - LOCK IN SHARE MODE 2.排他锁(写锁) 加了写锁,别的事务不允许加任何锁. ...

  9. Mysql共享锁实例_mysql共享锁与排他锁用法实例分析

    本文实例讲述了mysql共享锁与排他锁用法.分享给大家供大家参考,具体如下: mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流. 共享锁又称 ...

最新文章

  1. 使用SC命令时注意事项
  2. Mysql之case when用法总结
  3. qt-designer使用教程3--编写自己的槽
  4. 牛津花卉数据集贴标签分类
  5. linux php后门,Linux_一个初级的linux后门制作方法,众所周知,Linux的文件权限如: - phpStudy...
  6. [ZT]恐怖“标语”
  7. discuz viewthread.php,修改discuz论坛的标题header和footer
  8. 前后落差大用什么词语_形容落差很大的成语_四字词语 - 成梦词典
  9. 面向对象编程方法-抽象
  10. smartsvn 8.6.6 for linux 的安装与破解
  11. 中国港口年鉴(2000-2020年)
  12. python词云图的制作(用户评论分析)
  13. python测试工程师简历模板_自动化测试工程师简历专业技能怎么写
  14. z变换解差分方程例题_Z变换解差分方程的思考
  15. The destination is read-only
  16. java dwr 漏洞_DWR异常情况处理常见方法解析
  17. 数据库SQLServer的视图
  18. 应对长尾分布的目标检测 -- Balanced Group Softmax
  19. 黄光裕主宰不了国美的未来
  20. 开源一个小工具,是一个封装的数据查询小框架

热门文章

  1. Kafka Metrics指标监控
  2. ASP.NET Core 基于SignalR实时通讯的前后端分离技术
  3. spring——autowire自动注入
  4. jupyter新建文件_Jupyter渲染网页的3种方式
  5. seata不兼容mysql8的解决方案
  6. String实例化两种方式的区别
  7. 统一变更域本地管理员密码
  8. ISACA:网络安全人员短缺仍是老大难问题
  9. 从视图到控制器的传值方法(表单)
  10. L2-007. 家庭房产