当前位置: 首页 > news >正文

简单聊一下Oracle,MySQL,postgresql三种锁表的机制,行锁和表锁

MySQL:  

MySQL使用行级锁定和表级锁定。行级锁定允许多个会话同时写入表,适用于多用户、高并发和OLTP应用。表级锁定只允许一个会话一次更新表,适用于只读、主要读取或单用户应用。

比如mysql开启一个窗口执行

begin;
update xc_county_all_copy1 set city_name='阿里巴巴' where city_name='北京';

如果不commit;或者rollback,想再开一个新窗口去修改这个表的其他行数据

begin;
update xc_county_all_copy1 set city_name='腾讯' where city_name='广州';

此时我想更新的并不是同一行数据,因为加了where条件限定了,然后就会出现

简单来说这个就是表锁定,就是第一个update已经控制表了,如果没有执行提交撤销操作,就会锁表。

Oracle:
Oracle数据库使用一种称为多版本读一致性的机制,即使一行正在被更新,其他的事务也可以读取到这一行的数据。
当你执行一个更新操作时,Oracle只会锁定被影响的行。

PostgreSQL:
PostgreSQL提供了各种锁定模式来控制对表中数据的并发访问。PostgreSQL在事务访问或修改数据库对象时,会自动获取锁。

简单来说mysql和Oracle一样,是支持在更新表的局部数据的,也就是行锁,如还是那个案例在postgresql中运行,

我在一个重新中更新一条,没有提交事务。

然后我在另外一个窗口更新这张表的另外一行。

就是可以同时在一张表上更新不同的行数据,这个就是行锁。我的理解错的话欢迎指正。

http://www.lryc.cn/news/372421.html

相关文章:

  • Python的网络请求
  • [Shell编程学习路线]——探讨Shell中变量的作用范围(export)
  • AlertManager解析:构建高效告警系统
  • 打造专属 Switch 模拟游戏机
  • 如何使用Python中的type()函数和isinstance()函数
  • 【LeetCode刷题】前缀和解决问题:560.和为k的子数组
  • DTU在城市智慧供热上的应用:引领供热行业的智能化革新
  • LeetCode | 58.最后一个单词的长度
  • 202479读书笔记|《你是人间的四月天》——谁又能参透这幻化的轮回, 谁又大胆的爱过这伟大的变幻?
  • 近期docker镜像加速器被封杀,需要的请看此内容 点赞加关注
  • 开源大模型的新星:ChatGPT-Next-Web 项目解析与推荐
  • 【区块链】记账的千年演化:从泥板到区块链
  • MySQL的索引类型,以及各自的作用
  • 数组中的map方法
  • 使用Python生成并上传文档
  • LAMP部署及应用
  • 【STM32进阶笔记】GPIO端口
  • 探索HTML5 Geolocation:精准定位网页的新纪元
  • C++程序打开EXCEL2010失败,提示:远程过程调用失败
  • 错题记录(小测)
  • ChromeOS 逐渐靠近安卓
  • vector模拟实现
  • RV32F\RV32D指令集
  • 安卓VirtualDisplay虚拟屏幕如何实现没有内容显示mirror内容(aosp14版本)
  • YOLOv10在RK3588上的测试(进行中...)
  • git的ssh安装,windows通过rsa生成密钥认证问题解决
  • 果园预售系统的设计
  • 学了这篇面试经,轻松收割网络安全的offer
  • 双向转发检测BFD(学习笔记)
  • Spring Boot:Java 应用开发高效之道