数据库的读写锁

2023-10-27

今天看数据库事务的ACID时,涉及到了并发下的读写锁。
由于课程上了太久也没太多印象了,一开始就照着多线程的字面意思去理解,读的时候加锁和写的时候加锁,但是根据这个理解后面的逻辑变得很奇怪,因此重新复习了一下读(共享)锁和写(排他)锁。

写锁

写锁其实跟字面上的意思差不多,就是写的时候加写锁,直到这个写锁被释放之前,任何事务都不能对这个被锁对象再加任何锁。(注意:是不能加锁,而不是不能读写)

读锁

这个就是把我误导了的点了,虽然加了(读)锁,但是其他事务还是能再加一把读锁。而只有对象上所有的读锁都被释放之后,事务才能对该对象加写锁。(同样的,是不能加写锁,而不是不能读写)

总结

锁只是一个同步工具,就像java的ReentrantLook一样。如果事务A有锁逻辑而事务B没有,那么B仍然能绕过这个锁直接读写。不过,由于隔离机制是数据库统一指定的,因此这个当然不会发生。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库的读写锁 的相关文章

  • ORM框架概述

    现在各大公司比较流行的ORM框架有MyBatis Hibernate Spring Data JPA等 甚至一些公司会进行封装后成为自己公司专用的框架 相信后端方向的各位小伙伴都知道 ORM框架就是连接数据库的桥梁 比较官方的说法叫 对象关
  • 一个简单的Golang实现的HTTP Proxy方法

    最近因为换了Mac 以前的Linux基本上不再使用了 但是我的SS代理还得用 SS代理大家都了解 一个很NB的socks代理工具 但是就是因为他是Socks的 想用HTTP代理的时候很不方便 以前在Linux下的时候 会安装一个Privox
  • nestjs:typeorm对数据库中用驼峰命名字段转蛇形命名

    参考 postgresql TypeORM and Postgres competing naming styles Stack Overflow 总结 npm i save typeorm naming strategies const
  • 高等数学知识总结

    因为某些算法题和数学有着密不可分的联系 因此 我决定将我大一这一年来学的高等数学做一个全面的总结 有些知识已经记得不算太清 如果有错误的地方还请大佬及时指出 第一章 函数 极限与连续 第1节 初等函数 这一节就是高中的一些基本初等函数的的复

随机推荐

  • malloc与realloc的区别

    ANSI C说明了三个用于存储空间动态分配的函数 1 malloc 分配指定字节数的存储区 此存储区中的初始值不确定 2 calloc 为指定长度的对象 分配能容纳其指定个数的存储空间 该空间中的每一位 bit 都初始化为0 3 reall
  • 【问题解决】Linux下载安装sentencepiece库异常

    我本意是想安装allennlp库 但是卡在sentencepiece长时间不动 所以又去找了下载安装sentencepiece的方法 结果安装sentencepiece库也有问题 首先 给出一个下载sentencepiece库的链接 sen
  • 小鸡c++/python配置v5的环境问题

    改配置文件 解决SDK问题 SDK问题解决 解决VS2017 error LNK1104 无法打开文件 msvcprtd lib msvcprtd lib 错误 LNK1104 无法打开文件 kernel32 lib YoloV5Detec
  • spring boot(4)-html和templates

    静态页面 spring boot项目只有src目录 没有webapp目录 会将静态访问 html 图片等 映射到其自动配置的静态目录 如下 static public resources META INF resources 比如 在res
  • python中sql相关(查询、更新),以及sql参数化

    python连接数据库 查询 更新 import pymysql def beta mysql connect pymysql Connect host 1 1 1 1 port 3906 user user passwd pwd db d
  • <QT开发> QT开发工具-之-QT应用程序打包

    QT开发 QT开发工具 之 QT应用程序打包 一 前言 笔者为什么会写这篇文章呢 这是因为 笔者使用windows QT开发了一个测试工具 目的是通过TCP IP测试其它应用程序 首先这个QT程序是笔者自己开发的 所以笔者的电脑当然是可以运
  • Elasticsearch Unable to parse response body HTTP/1.1 413 Request Entity Too Large问题解决

    ERROR o s a i SimpleAsyncUncaughtExceptionHandler Unexpected exception occurred invoking async method public void org zs
  • 使用docker运行mysql:5.7

    本文档使用docker容器运行mysql 5 7版本 2 1 docker拉取mysql 5 7镜像 docker pull mysql 5 7 2 2 查看镜像是否拉取成功 docker image ls 2 3 启动mysql 5 7
  • [网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)

    这是作者的系列网络安全自学教程 主要是关于网安工具和实践操作的在线笔记 特分享出来与博友共勉 希望您们喜欢 一起进步 前文分享了Python网络攻防相关基础知识 包括正则表达式 Web编程和套接字通信 本文将继续分析Python攻防之多线程
  • 第十四届蓝桥杯省赛C++B组个人代码(未检验)

    2023 年 4 月 8 日是蓝桥杯省赛 今年我参加的是 C 组 B 组 虽然说打得不是很理想 不过好在个人感觉省一问题不是很大 反正只要是省一对得多对得少都一样 比赛中的代码是没法保存的 所以我借着新鲜的记忆 重新把我会写的题的代码都码了
  • pycharm,idea,clion的配置

    html 运行的快捷键 alt f2 的位置 这里修改快捷键为 ctrl alt 0 转载于 https www cnblogs com zach0812 p 11517247 html
  • Cookie实现自动登录案例实现

    大家好 我是一名入门的菜鸟 如果你不经意间翻开了我的文章 谢谢您 您的支持是我前进的动力 让我们一起加油 由于不是名牌大学 只是一个普普通通的专科生 所以 我想通过自己的努力来获得我想要的 我不会放弃我的梦想 我也曾幻想着我成功的时候在朋友
  • 利用Graphviz画神经网络框架图

    文章目录 前言 dot画神经网络图 简单神经网络 大型神经网络 伪 Python 画神经网络图 大型神经网络 前言 做了神经网络这么久 偶尔想画一下自己模型的架构图 但是又无从下手 因为网络一般都比较复杂 如果自己手动利用Visio画的画又
  • Windows自带的超强命令行磁盘管理工具

    不知道大家在装Windows系统的时候 使用原版安装的多不多 GHOST版系统是个好东西 能够让不懂计算机的操作者能够一键装好系统 并且GHOST版的制作大神们还针对系统做了非常多的优化操作 虽然 优化 这个词最近才有了一些恐怖的意思 不过
  • Linux服务器挂载ntfs移动硬盘

    Linux服务器挂载ntfs移动硬盘 转载来源 本文链接 https blog csdn net wojiuwangla article details 81029603 服务器上的一些移动硬盘需要备份到数据 公司买了个500G的机房 带上
  • 【Windows + Linux】专业级:安装操作系统 + 多系统 + GhostCast Server PXE 网刻基础坑精通详解

    目录 前言 1 BIOS 和 UEFI 与 MBR 和 GPT 的装机简述 GPT MBR 硬盘分区表模式 BOOT 引导流程 启动管理器 如何选择一种 BOOT Mode 启动模式 Legacy UEFI 总结 BIOS 设置的硬盘模式
  • Android 报错问题总结(持续更新中)

    1 解决Failed to load the JNI shared library jvm dll 很有可能是Eclipse版本和jdk版本不一致 一般在Windows 7 64位系统下 32位的jdk存放在Program Files x8
  • 记录一次swagger空指针异常

    昨日编码过程中 突然间发现swagger文档页面打不开了 后台报空指针 注销了所有新写的代码后 发现了问题 是疏忽大意导致的 原因是 方法类中的Vo字段名和ApiImplicitParam中name值不同 真是粗心大意害死人啊 还好没提交
  • Nodejs制作自定义中间件

    对于Nodejs的中间件我想各位小伙伴都有所了解 下边我就以制作一个自定义的处理表单数据的中间件为例 告诉大家如何自作一个属于自己的自定义中间件 1 创建一个util js文件 用于封装编写自定义的表单数据处理中间件 导入querystri
  • 数据库的读写锁

    今天看数据库事务的ACID时 涉及到了并发下的读写锁 由于课程上了太久也没太多印象了 一开始就照着多线程的字面意思去理解 读的时候加锁和写的时候加锁 但是根据这个理解后面的逻辑变得很奇怪 因此重新复习了一下读 共享 锁和写 排他 锁 写锁