更新丢失:新改的覆盖先改的,开发中有三种方法解决

1、将事务级别提高到最高级别TRANSACTION_SERIALIZABLE

操作双方都要提升级别;查询使用共享锁;更新使用更新锁;一方查询,一方更新,共享锁和更新锁会冲突;当双方更新锁,出现死锁,程序会自动回滚一方操作,从而避免更新丢失

2、悲观锁(加的是表级锁)

一方:查询语句加 for update;另一方:查询语句加 for update;当进行更新语句的时候,另一方不能进行更新操作

3、乐观锁

更新语句设置版本号,在指定版本中更新数据

一方:update account set money=money-200,version=version+1 where id=1 and version=0;

另一方操作同一个版本号,则不能更新数据

另一方:update account set money=money+200,version=version+1 where id=1 and version=0;

如果更新多,查询少,用悲观锁;反之,乐观锁

表级锁,where用的是非主键

行级锁,where用主键一般是id

如果用表级锁,其他客户将不能进行查询操作,因此开发中记得用行级锁

以mysql为例,有索引并且使用了该索引当条件的时候就是行锁,没有索引的时候就是表锁。innodb 的行锁是在有索引的情况下,没有索引的表是锁定全表的.

行级锁,一般是指排它锁,即被锁定行不可进行修改,删除,只可以被其他会话select。行级锁之前需要先加表结构共享锁。

表级锁,一般是指表结构共享锁锁,是不可对该表执行DDL操作,但对DML操作都不限制。
行级锁之前需要先加表结构共享锁。

悲观锁、乐观锁、行级锁、表级锁相关推荐

  1. 聊一聊数据库中的锁分类(乐观锁、悲观锁、共享锁、排它锁、表级锁、行级锁、页面锁)...

    乐观锁和悲观锁(从策略上划分) 乐观锁:乐观锁就如同他的名字一样,非常了乐观,每次去读数据都认为其它事务没有在写数据,总是认为别人不会修改数据,所以就不上锁,只有在线程提交数据时会通过检查版本号的形式 ...

  2. 表级锁的mysql读写_Mysql的表级锁

    我们首先需要知道的一个大前提是:mysql的锁是由具体的存储引擎实现的.所以像Mysql的默认引擎MyISAM和第三方插件引擎 InnoDB的锁实现机制是有区别的.可根据不同的场景选用不同的锁定机制. ...

  3. oracle表没被锁删不掉,ORACLE查看表被锁和删除锁

    (1)锁表查询的代码有以下的形式: select count(*) from v$locked_object; select * from v$locked_object; (2)查看哪个表被锁 se ...

  4. 多个会话对表加表级读锁和表级写锁后的操作权限分析(表级读锁+表级写锁)

    [0]README: 不论是加读锁还是写锁,必须要等到其他数据库连接关闭后才可以进行: [1]添加表级读锁 1.1)多会话执行的时序操作分析: 1.2)session1执行的具体时序操作: mysql ...

  5. mysql行锁还需要乐观锁吗_mysql行锁、表锁。乐观锁,悲观锁

    锁定用于确保事务完整性和数据库一致性. 锁定可以防止用户读取其他用户正在更改的数据,并防止多个用户同时更改相同的数据. 如果不使用锁定,数据库中的数据可能在逻辑上变得不正确,而针对这些数据进行查询可能 ...

  6. MySQL中的行级锁,表级锁,页级锁

    数据库锁是数据库系统中非常重要的一个概念,本文将深入分析数据库中的锁相关知识,您可点击下方音频收听或直接查看文稿中的文字. 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并 ...

  7. mysql行级锁 表级锁 页级锁详细介绍_MySQL行级锁、表级锁、页级锁详细介绍

    页级:引擎 BDB. 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写 ...

  8. mysql行级安全_MySQL学习笔记(五):MySQL表级锁和行级锁

    一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...

  9. mysql数据库的行级锁有几种_MySQL中的行级锁、表级锁、页级锁

    在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎).表级锁(MYISAM ...

  10. Mysql中的行级锁、表级锁、页级锁

    转载自 Mysql中的行级锁.表级锁.页级锁 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在数据库的锁机制中介绍过,在DBMS中,可以按 ...

最新文章

  1. 中国互联网+固体饮料行业商业模式创新与投资机会深度研究报告
  2. [HAOI2015]按位或
  3. Python os.chdir() 方法用于改变当前工作目录到指定的路径。
  4. failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
  5. Spring Boot(四)Accessing application arguments
  6. OU/Group/Group Policy组织单元、组和组策略
  7. MySQL学习笔记(六)MySQL8.0 配置笔记
  8. 定义交货输出确定过程(Output Determination Procedure)
  9. boost::histogram::axis::option用法的测试程序
  10. smooth_L1_loss_layer.cpp:28] Check failed: bottom[0]-channels() == bottom[1]-channels() (12 vs. 84
  11. 知乎搜索框背后的Query理解和语义召回技术
  12. 个人自媒体博客整站模板
  13. 01-jbpm工作流实现
  14. 【sm2算法】基于mbedtls开源库国密算法的使用(二)
  15. 如何成为一名优秀的程序员
  16. 同步时序逻辑电路功能分析之同步五进制加法计数器
  17. flutter 自定义TabBar +自定义Indicator
  18. 【Python百日进阶-Web开发-Feffery】Day437 - fac实例:使用fac中上传组件时实现自主控制uploadId
  19. vue-如何获取上一个路由地址
  20. labview简易计算机实验报告,labview 实验报告.doc

热门文章

  1. 找资料总结1553B总线协议知识和HI-1575数据手册
  2. html中加一个边框怎么写,教您使用html代码给文字加边框!
  3. 今天学习VI编辑器的使用方法
  4. 我的2011 — 珍惜大四美好的时光
  5. 萨科微半导体华强北第二直营店红红火火开业
  6. 鸿蒙有多少应用,鸿蒙APP应用上线,数量暂时稀缺,与安卓版有哪些不同?
  7. java excel 模板_java对Excel模板的读取
  8. QML官方系列教程——First Steps with QML
  9. ucos-ii中文书(邵贝贝)--用borland c4.5编译ucosii全过程
  10. VMware Workstation 10.0.x安装教程(图文)