SQL的「悲观锁定」与「乐观锁定」
今天在做设计书的时候,遇到了这两个词:「悲观锁定」与「乐观锁定」,于是回了总结一下。
悲观锁定方式:
当我们在对数据库进行更新操作的时候,有时候我们为了防止冲突,使用数据库为我们
提供的,SELECT FOR UPDATE 语句 , 在更新前,先把数据锁上,然后再更新 。
以下这种方式就是悲观锁定。
(比如有一个人用 SELECT FOR UPDATE 检索出来了一组数据,然后再更新,
但是,就在他准备更新的时候,有点事,突然离开了,而且离开了很长时间,
那就悲哀了,因为如果他不进行UPDATE操作,没有人可以对这一组数据载进行操作。)
悲观锁定概念:
需要说明几点的是, ① SELECT FOR UPDATE 锁定的是一组数据 ,而不是指 整个表 。同时悲观也不是我上面所说的悲哀的意思。② 悲观锁定是指对数据的冲突采用一种
悲观的 态度, 假定数据肯定会冲突,所以在查询时就把数据锁住了。 ③以上的操作分为
两步:锁定和更新 ,先是 SELECT FOR UPDATE 把检索出来的数据锁住,然后再对检索出来的数据进行 更新,如果检索出来后不更新,那么别人将无法操作者一组数据。这一组操作应该是在一组 事物中的,只有 SELECT FOR UPDATE 的人,才能对数据进行更新操作。
乐观锁定概念:
而乐观,则认为数据一般不会发生冲突当更新时,才判断是否发生了冲突,让用户
决定冲突时如何去处理 !
乐观锁定方式:
关于乐观锁定的冲突判定有个两种方式,可以采用时间戳,也就是检索时取得上次更新 时间,更新时比较时间。还有一种类似的是采用版本戳,就是添加一个字段,从1开始递增。
SQL的「悲观锁定」与「乐观锁定」相关推荐
- [SQL指令]使用 PIVOT 和 UNPIVOT,「扭转」查询的结果。
原文出处:[SQL指令]使用 PIVOT 和 UNPIVOT,「扭转」查询的结果. http://www.dotblogs.com.tw/mis2000lab/archive/2010/12/24/m ...
- 阿里云贾扬清:大数据+AI工程化,让数据从「成本」变为「资产」
简介:近年来,数字经济发展迅速,企业转型背后频频涌现「数字力量」的身影.云计算.大数据.人工智能的快速融合形成了数字经济的新基建,也为数字经济发展带来了新的机遇. 近年来,数字经济发展迅速,企业转型背 ...
- 「CSDN 2020年度博客之星」总榜单在此揭晓
诗歌合为事而作,文章合为时而著!! 历经海选评审,投票晋级 ,专家评审等阶段的激烈角逐,2020年终盛典 "博客之星"总评选终于在 2021 年 2 月 5 日完美的落下帷幕!! ...
- 自建纯净谷歌「GitHub 热点速览 v.21.35」
作者:HelloGitHub-小鱼干 虽然 Google 搜索的结果不如百度搜索结果那般广告丛生,但是对于一心只想找到匹配结果的我们而言,推广的信息条目能免则免.whoogle-search 便是一个 ...
- 面试反杀「GitHub 热点速览 v.21.33」
作者:HelloGitHub-小鱼干 作为一个应聘者,面试的时候经常会被面试官问:你有什么问题要问我吗?为了避免这种临时想不到问题的尴尬,reverse-interview-zh 会教你下反向操作,提 ...
- 从国企到互联网,一个初入职场将近一年半工作经验程序员的「得」与「失」
写在前面 2020 年 7 月 29 日,我只身一人来到北京,开始人生中的第一份工作,在一家国企从事软件开发工作. 2021 年 6 月底,我从国企离职,然后进入了一家互联网公司,从事软件开发工作. ...
- 用 Python 快速转化「中文数字」和「阿拉伯数字」
最初,我是在开发聊天机器人的时候用到这个功能,比如用户提问 一千米以内有哪些场地可用?,我需要在数据库中查询范围小于一千米的场地,SQL 语句大致为 WHEN distant<1000,但我只能 ...
- 如何利用 C# 爬取「当当 - 计算机与互联网图书销量榜」!
前段时间我们介绍了如何利用 C# 语言来爬取"京东 - 计算机与互联网图书销量榜" 网页的方法,通过该方法,我们能够获得"京东"的图书销售排行榜数据. 可是,读 ...
- 如何利用 C# 爬取「猫眼电影:热映口碑榜」及对应影片信息!
我们生活在一个快节奏的时代里,每天除了辛苦的提升自己,为生活打拼之外,偶尔的放松去看场电影也是必要的.可是能够抽出的时间有限,选择看哪部电影就是一个挠头的问题了. 幸好,有类似猫眼电影.豆瓣电影.淘票 ...
最新文章
- 二叉树的路径(根节点到叶节点)Binary Tree Paths
- mysql 开仓函数_MySQL函数大全 及用法示例
- 作为高管,你需要了解的五个ERP趋势
- 菜鸟,下一代分布式体系架构的设计理念
- 图片不显示问题 图片url监测改变问题
- 大数据-----软件开发模型(详细讲解)
- RepPoints(本质是可变形卷积DCN)再理解
- PyOpenGL之3D界面详解(二)
- MySQL DATE_ADD() 函数
- 【cocos2d-x从c++到js】13:回调函数2——JSCallbackWrapper
- bzoj千题计划227:bzoj1486: [HNOI2009]最小圈
- 动态添加table表格内容,填充审批意见。
- Flask留言板Demo
- 华为mate50会用鸿蒙系统吗,华为Mate50Pro概念机:瀑布环绕屏+鸿蒙系统,就算涨价我也劝你买...
- DataWhale_Pandas Task08 文本数据
- 5d4的白平衡模式_佳能5D4怎样调整白平衡?
- 拼多多又起一事:因为看到同事被抬上救护车我被拼多多开除了
- blender bpy
- QT 如何计算中英文字符串的长度
- 五类 六类网线相关知识
热门文章
- git钩子放服务器_Git代码自动化部署、Hook、钩子
- java8编程开发入门 李兴华_李兴华系列--JAVA详解视频(jdk1.8)及项目实战教程
- “人大女神”事件思考网络事件背后的教育文化
- Ruby在windows下配置所遇到的问题
- linux双系统安装nvidia,ubuntu 16.04(Windows 10双系统+grub引导)无法进入tt1~tt6(NVIDIA驱动安装相关-黑屏,login loop,分辨率)...
- vb串口 任意波特率_串口通讯基本知识
- Python培训班怎么选?
- oracle rollback 观察时间
- Binary XML file line #17vector tag requires viewportWidth 0
- sublime前端开发常用插件