悲观锁、乐观锁、行级锁、表级锁
更新丢失:新改的覆盖先改的,开发中有三种方法解决
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操作都不限制。
行级锁之前需要先加表结构共享锁。
悲观锁、乐观锁、行级锁、表级锁相关推荐
- 聊一聊数据库中的锁分类(乐观锁、悲观锁、共享锁、排它锁、表级锁、行级锁、页面锁)...
乐观锁和悲观锁(从策略上划分) 乐观锁:乐观锁就如同他的名字一样,非常了乐观,每次去读数据都认为其它事务没有在写数据,总是认为别人不会修改数据,所以就不上锁,只有在线程提交数据时会通过检查版本号的形式 ...
- 表级锁的mysql读写_Mysql的表级锁
我们首先需要知道的一个大前提是:mysql的锁是由具体的存储引擎实现的.所以像Mysql的默认引擎MyISAM和第三方插件引擎 InnoDB的锁实现机制是有区别的.可根据不同的场景选用不同的锁定机制. ...
- oracle表没被锁删不掉,ORACLE查看表被锁和删除锁
(1)锁表查询的代码有以下的形式: select count(*) from v$locked_object; select * from v$locked_object; (2)查看哪个表被锁 se ...
- 多个会话对表加表级读锁和表级写锁后的操作权限分析(表级读锁+表级写锁)
[0]README: 不论是加读锁还是写锁,必须要等到其他数据库连接关闭后才可以进行: [1]添加表级读锁 1.1)多会话执行的时序操作分析: 1.2)session1执行的具体时序操作: mysql ...
- mysql行锁还需要乐观锁吗_mysql行锁、表锁。乐观锁,悲观锁
锁定用于确保事务完整性和数据库一致性. 锁定可以防止用户读取其他用户正在更改的数据,并防止多个用户同时更改相同的数据. 如果不使用锁定,数据库中的数据可能在逻辑上变得不正确,而针对这些数据进行查询可能 ...
- MySQL中的行级锁,表级锁,页级锁
数据库锁是数据库系统中非常重要的一个概念,本文将深入分析数据库中的锁相关知识,您可点击下方音频收听或直接查看文稿中的文字. 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并 ...
- mysql行级锁 表级锁 页级锁详细介绍_MySQL行级锁、表级锁、页级锁详细介绍
页级:引擎 BDB. 表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行 行级:引擎 INNODB , 单独的一行记录加锁 表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写 ...
- mysql行级安全_MySQL学习笔记(五):MySQL表级锁和行级锁
一:概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制.比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking ...
- mysql数据库的行级锁有几种_MySQL中的行级锁、表级锁、页级锁
在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎).表级锁(MYISAM ...
- Mysql中的行级锁、表级锁、页级锁
转载自 Mysql中的行级锁.表级锁.页级锁 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足. 在数据库的锁机制中介绍过,在DBMS中,可以按 ...
最新文章
- 中国互联网+固体饮料行业商业模式创新与投资机会深度研究报告
- [HAOI2015]按位或
- Python os.chdir() 方法用于改变当前工作目录到指定的路径。
- failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
- Spring Boot(四)Accessing application arguments
- OU/Group/Group Policy组织单元、组和组策略
- MySQL学习笔记(六)MySQL8.0 配置笔记
- 定义交货输出确定过程(Output Determination Procedure)
- boost::histogram::axis::option用法的测试程序
- smooth_L1_loss_layer.cpp:28] Check failed: bottom[0]-channels() == bottom[1]-channels() (12 vs. 84
- 知乎搜索框背后的Query理解和语义召回技术
- 个人自媒体博客整站模板
- 01-jbpm工作流实现
- 【sm2算法】基于mbedtls开源库国密算法的使用(二)
- 如何成为一名优秀的程序员
- 同步时序逻辑电路功能分析之同步五进制加法计数器
- flutter 自定义TabBar +自定义Indicator
- 【Python百日进阶-Web开发-Feffery】Day437 - fac实例:使用fac中上传组件时实现自主控制uploadId
- vue-如何获取上一个路由地址
- labview简易计算机实验报告,labview 实验报告.doc
热门文章
- 找资料总结1553B总线协议知识和HI-1575数据手册
- html中加一个边框怎么写,教您使用html代码给文字加边框!
- 今天学习VI编辑器的使用方法
- 我的2011 — 珍惜大四美好的时光
- 萨科微半导体华强北第二直营店红红火火开业
- 鸿蒙有多少应用,鸿蒙APP应用上线,数量暂时稀缺,与安卓版有哪些不同?
- java excel 模板_java对Excel模板的读取
- QML官方系列教程——First Steps with QML
- ucos-ii中文书(邵贝贝)--用borland c4.5编译ucosii全过程
- VMware Workstation 10.0.x安装教程(图文)