1、for update叫排它锁,是一种行级锁,一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行.如果其它用户想更新该表中的数据行,则也必须对该表施加行级锁.即使多个用户对一个表均使用了共享更新,但也不允许两个事务同时对一个表进行更新,真正对表进行更新时,是以独占方式锁表,一直到提交或复原该事务为止。行锁永远是独占方式锁。
只有当出现如下之一的条件,便释放共享更新锁:
(1)、执行提交(COMMIT)语句;
(2)、退出数据库(LOG OFF)

(3)、程序停止运行。

Select …forupdate语句是我们经常使用手工加锁语句。通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍。

2、 借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作

什么时候需要使用for update?就是那些需要业务层面数据独占时,可以考虑使用for update。场景上,比如火车票订票,在屏幕上显示邮票,而真正进行出票时,需要重新确定一下这个数据没有被其他客户端修改。所以,在这个确认过程中,可以使用for update。

3、顺便说一下乐观锁和悲观锁

悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的同步原语synchronized关键字的实现也是悲观锁。

乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库提供的类似于write_condition机制,其实都是提供的乐观锁。

4、一般遇到高并发会有多服务器部署,这时候就要用到分布式锁

转载于:https://www.cnblogs.com/h-c-g/p/10234477.html

for update行级锁的作用相关推荐

  1. mysql行级锁作用_Mysql事务及行级锁的理解

    在最近的开发中,碰到一个需求签到,每个用户每天只能签到一次,那么怎么去判断某个用户当天是否签到呢?因为当属表设计的时候,每个用户签到一次,即向表中插入一条记录,根据记录的数量和时间来判断用户当天是否签 ...

  2. spring配置事务,是否可以实现行级锁(for update)

    spring配置事务,是否可以实现行级锁(for update) 通过配置传播行为,隔离级别应是不行的把? 我现在的做法是在dao里面直接用悲观锁来弄的 觉的这样太好,如果这个查询方法有时候需要实现行 ...

  3. 五分钟了解Mysql的行级锁——《深究Mysql锁》

    延伸阅读: 三分钟了解Mysql的表级锁 一分钟深入Mysql的意向锁 mysql锁相关讲解及其应用--<深究mysql锁>了解锁前,一定要先看这篇,了解什么是MVCC,如果我们学习锁,没 ...

  4. 详解各种锁:CAS、共享锁、排它锁、互斥锁、悲观锁、乐观锁、行级锁、表级锁、页级锁、死锁、JAVA对CAS的支持、ABA问题、AQS原理

    共享锁(S锁) 又称为读锁,可以查看但无法修改和删除的一种数据锁.如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排它锁.获准共享锁的事务只能读数据,不能修改数据. 共享锁下其它用 ...

  5. kotlin mysql数据库_在kotlin中使用mysql行级锁

    mysql中的锁 首先需要介绍一下mysql的锁.一般我们使用InnoDB数据库引擎+行级锁,SQL为:SELECT * FROM table where id = 1 for update;.for ...

  6. 杂谈---令人抓狂的数据库行级锁问题

    引言 本篇文章只是工作当中的一个简单记录,尽管这次遇到的问题从技术上来讲并不算是特别高深的问题,但是在面临着多方压力的情况下,问题的解决还是有着不小的难度.因此这里LZ就简单的描述一下整个问题从出现到 ...

  7. 【MySQL】如何使用MySQL锁(全局锁、表级锁、行级锁)?

    文章目录 概述 一.全局锁 介绍 语法 特点 二.表级锁 介绍 表锁 元数据锁 意向锁 三.行级锁 介绍 行锁 间隙锁&临键锁 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据 ...

  8. MySQL(九):锁、表锁、行级锁、Gap Lock、Next-Key Lock

    目录 一.锁 1.1 并发事务访问记录的三种方式 1.2 写-写情况 1.3 读-写情况 1.4 一致性读 1.4 共享锁和独占锁 1.5 多粒度锁 1.6 MySQL中的行锁和表锁 二.InnoDB ...

  9. 【MySQL | 进阶篇】07、全局锁、表级锁、行级锁

    目录 一.概述 二.全局锁 2.1 介绍 A. 我们一起先来分析一下不加全局锁,可能存在的问题. B. 再来分析一下加了全局锁后的情况 2.2 语法 1). 加全局锁 2). 数据备份 3). 释放锁 ...

最新文章

  1. Magento多图导入
  2. Hadoop安装与配置问题说明
  3. 90%的程序员都写错的算法-二分查找万能模版
  4. html语言中,定义文档中一个正在打开的链接的颜色的代码是,2017微软认证考试精选练习(附答案)...
  5. CentOS7中怎样修改主机名和hosts文件(配置IP和主机名的对应管理)
  6. 剑网三谜题终于揭开,药宗四系开合得当,有输出有治疗
  7. python遍历数组冒泡排序法_十种排序七种搜索算法的Python实现——气泡排序,十大,七大,查找,python,冒泡排序,bubblesort...
  8. Maven deploy部署jar到远程私服仓库
  9. resnet50能用cpu跑吗_2020年12月1日更新。性价比最高入门游戏CPU--intel 10100F装机配置推荐。...
  10. python游戏房间_Python House冒险-如果已经进入一个房间,如何给出不同的输出
  11. linux debain下vim高亮显示
  12. 名老中医经验继承研究现状及“中医处方智能分析系统”应用前景
  13. 人工智能表格票据识别-要素信息自动识别提取
  14. input输入效果控制onfocus和onblur事件(转)
  15. 无法复制:数据错误(循环冗余检查)的解决方法
  16. 微信小程序开发常见问题总结
  17. Linux下Navicat premium 12 免费亲测可用
  18. 用户权限影响瑞星安装
  19. UVA818解题报告
  20. 网吧计算机无法远程,win7网络711无法加载远程访问解决方法 | 专业网吧维护

热门文章

  1. mediarecorder路径设置为localsocket_PR学习之旅:pr怎么才能定位和修改视频保存路径,操作很简单...
  2. 自回归AR模型、移动平均MA模型、自回归移动平均ARMA模型
  3. 非科班出身,如何成为程序员?
  4. 六安市事业单位计算机基础知识,最全的事业单位考试计算机基础知识试题[1] 2...
  5. 麓山滨江2021高考成绩查询,长沙2021高考成绩排名榜单,长沙各高中高考成绩喜报...
  6. python新手入门到放弃_python萌新:从零基础入门到放弃
  7. Linux 环境下NFS服务安装及配置
  8. asp.net获取服务器信息,Asp.netnbsp;获取服务器信息, 站长资讯平台
  9. java add方法实例_java.util.TreeSet.add()方法实例
  10. 两年ACM竞赛的所有算法总结