select ... lock in share mode

select ... for update

注意点:

1.都在事务内起作用;

2.所涉及的是行锁(即innodb引擎);

3.保证当前session事务所锁定的行不会被其他session所修改(这里的修改指更新或者删除);

4.select ... lock in share mode是共享锁,语句如:select * from t where id=2 lock in share mode;

5.select ... for update是排它锁,语句如:select * from t where id=2 for update;

6.共享锁允许其他事务加共享锁读取,但是,不允许其他事务去做修改,或者加排它锁,而需要注意的是共享锁容易造成死锁;

7.排它锁更加严格,不允许其他事务加共享锁(但可select读该行)或者排它锁,更加不允许其他事务修改加锁的行。

使用情景:

1.select ... lock in share mode

保证所有人查到的数据是最新数据,应用的场景主从库数据的同步;

2.select ... for update

查到的数据确保是最新数据,并且查到后的数据只允许自己来修改的时候,需要用到 for update 子句,应用的场景库存,并发。

mysql share mode_mysql锁:mysql lock in share mode 和 select for update相关推荐

  1. mysql分析表锁,MySQL锁分析和监控

    通常在MySQL的管理和监控中,Active Session(活动会话)是监控指标中的一个很重要的指标,通过活动会话监控,可以很清楚的了解到数据库当前是否有SQL堆积,是否处于非常繁忙的状态.那么除了 ...

  2. Mysql 死锁过程及案例详解之清空缓存锁Flush Lock

    Mysql 清空缓存锁Flush Lock 清空缓存锁Flush Locks flush table的功能是关闭所有打开的表,强制关闭所有正在使用的表,并刷新准备好的语句缓存. 这种操作需要用户拥有  ...

  3. MySQL数据库的锁 --- 六种分类 - 14种锁详细介绍

    MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一个资源的机制,在数据库中,除传统的计算资源(CPU.RAM.I/O)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性 ...

  4. mysql的乐观锁,悲观锁(共享锁,排斥锁)

    mysql的并发操作时而引起的数据的不一致性(数据冲突): 丢失更新:两个用户(或以上)对同一个数据对象操作引起的数据丢失. 解决方案:1.悲观锁,假设丢失更新一定存在:sql后面加上**for up ...

  5. mysql实现悲观锁_mysql 悲观锁详解

    悲观锁指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层 ...

  6. mysql suoyin 和锁_Mysql索引与锁

    Mysql索引与锁 Mysql索引与锁 本文以Mysql5.7为例测试. 1:mysql索引方法 Mysql的索引方法分为btree索引和hash索引. hash索引:是通过hash计算后比较,所以只 ...

  7. linux mysql开启事务_linux mysql 相关操作命令

    1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令: mys ...

  8. Mysql 共享锁(lock in share mode),排他锁(for update)

    共享锁(lock in share mode) 简介 允许不同事务之前共享加锁读取,但不允许其它事务修改或者加入排他锁 如果有修改必须等待一个事务提交完成,才可以执行,容易出现死锁 共享锁事务之间的读 ...

  9. mysql update 排他锁_Mysql 共享锁(lock in share mode),排他锁(for update)

    共享锁(lock in share mode) 简介 允许不同事务之前共享加锁读取,但不允许其它事务修改或者加入排他锁 如果有修改必须等待一个事务提交完成,才可以执行,容易出现死锁 共享锁事务之间的读 ...

最新文章

  1. 用C#实现在PowerPoint文档中搜索文本
  2. kali高速更新源以及主题修改方法
  3. crontab添加定时任务
  4. java 读文件夹_java怎么读取读取文件夹下的所有文件夹和文件?
  5. javascript是一门多线程的语言_Javascript:10天设计一门语言
  6. Truncated incorrect DOUBLE value: 'xxx'的解决方法
  7. linux入门指令 详解,Linux基础命令之mktemp详解
  8. 大数据是如何基于 Flink 进行实时计算的?
  9. Oracle 安装OEM 报错: 无法对所有EM 相关账户解锁 解决方法
  10. Linux_创建母版,快速克隆,如何移动虚拟机.ziw
  11. uni-app 条形码(一维码)/二维码生成实现
  12. 常见的重要电脑英语及缩写
  13. Netty权威指南2.1BIO通信Demo代码
  14. 计算机绘图尺寸标注,计算机绘图AutoCAD尺寸标注演示教学.ppt
  15. php被挂马,PHP网站被挂马防御战
  16. lvm卷的缩减和扩容
  17. 【转载】彻底理解cookie,session,token - 墨颜丶
  18. 三重积分的概念,计算(先一后二(投影穿线法))
  19. Android中实现图片编辑功能
  20. 共享 || 19份2020关于直播的报告

热门文章

  1. ospf hello时间和dead_网络工程师_思科 | OSPF由简到难,配合命令学
  2. 安卓系统挂载NTFS格式硬盘_苹果电脑挥之不去的烦恼!怎样兼容NTFS格式的U盘移动硬盘?...
  3. 混淆矩阵及分类性能评估方法
  4. scanf( )函数的返回值
  5. 操作系统--内核级线程实现
  6. Scrapy源码阅读分析_1_整体框架和流程介绍
  7. CompletableFuture详解~设置任务结果
  8. 【itext学习之路】--4.给pdf增加文本水印和图片水印
  9. oracle 客户端_【数据库 常见术语1】 客户端,服务端
  10. php xampp bug,PHP网站访问慢的处理方法