首页 > 系统相关 >postgressq——四种进程间锁(4)

postgressq——四种进程间锁(4)

时间:2024-05-27 18:02:55浏览次数:25  
标签:LWLocks postgressq locks 临界 自旋 数据结构 四种 间锁

进程间锁

在PostgreSQL里有四种类型的进程间锁:
Spinlocks:自旋锁,其保护的对象一般是数据库内部的一些数据结构,是一种轻量级的锁。
LWLocks:轻量锁,也是主要用于保护数据库内部的一些数据结构,支持独占和共享两种模式。
Regular locks:又叫heavyweight locks,也就是我们常说的表锁、行锁这些。
SIReadLock predicate locks:谓词锁,主要是用来表示数据库对象和事务间的一个特定关系。

自旋锁

顾名思义就是一直原地旋转等待的锁。一个进程如果想要访问临界区,必须先获得锁资源,如果不能获得,就会一直自旋,直到获取到锁资源,它是最轻量级的锁,不需要做内存上下文转换的。
补充:临界区(也称为临界段)就是访问和操作共享数据的代码段

自旋会造成CPU浪费,但是通常它保护的临界区非常小,封锁时间很短,因此通常自旋比释放CPU资源带来的上下文切换消耗要小。 它是一种和硬件结合的互斥锁,借用了硬件提供的原子操作的原语来对一些共享变量进行封锁,通常适用于临界区比较小的情况。

特点: 持有锁时间很短、无死锁检测机制和等待队列、事务结束时不会自动释放SpinLock。

Spinlocks来自于Linux内核,自旋锁简单来说是一种低级的同步机制,表示了一个变量可能的两个状态: Acquired 、Released。

LWLocks-轻量锁

LWLocks 负责保护共享内存中的数据结构,通常

标签:LWLocks,postgressq,locks,临界,自旋,数据结构,四种,间锁
From: https://blog.csdn.net/Re_view/article/details/139243529

相关文章

  • 这四种EPUB转PDF的方法你一定要看看
    EPUB是一种流行的电子书格式,而PDF则是一种广泛应用于文件共享和打印的格式。有时,我们可能需要将EPUB格式的电子书转换为PDF格式,以便于在不同设备或平台上阅读或打印。那么如何将epub格式转换为pdf格式呢?本文将为您介绍四种将EPUB格式转换为PDF格式的方法,帮助您轻松实现格式转换。......
  • C++的四种智能指针及简单实现
    C++的四种智能指针及简单实现参考:C++智能指针讲解及模拟实现一、auto_ptrauto_ptr有拷贝语义,拷贝后源对象变为空指针,可能引发严重问题template<classT>classmy_unique_ptr{private:T*_ptr;public://普通构造函数my_unique_ptr(T*ptr):_ptr(ptr){}......
  • 线程安全使用 HashMap 的四种技巧
    这篇文章,我们聊聊线程安全使用HashMap的四种技巧。1方法内部:每个线程使用单独的HashMap如下图,tomcat接收到到请求后,依次调用控制器Controller、服务层Service、数据库访问层的相关方法。每次访问服务层方法serviceMethod时,都会在方法体内部创建一个单独的HashMap,......
  • 【Java】的四种引用类型
    (一)强引用Java强引用最常见,就是把一个对象赋给一个引用变量,这个引用变量就是强引用,但一个对象被强引用时,它处于可达状态,不会被垃圾回收装置回收,因此强引用是造成内存泄漏的主要原因之一。Strings=newString("ABC");(2)软引用软引用需要SoftReference类来实现,对于只有软引......
  • m基于LDPC编译码的matlab误码率仿真,对比SP,MS,NMS以及OMS四种译码算法
    1.算法仿真效果matlab2022a仿真结果如下:    2.算法涉及理论知识概要       低密度奇偶校验码(LDPC)译码是现代通信系统中一种高效的错误校正技术,广泛应用于无线通信、卫星通信和数据存储等领域。LDPC码因其良好的纠错性能和接近香农极限的潜力而受到重视。本文......
  • Spring6 当中 获取 Bean 的四种方式
    1.Spring6当中获取Bean的四种方式@目录1.Spring6当中获取Bean的四种方式每博一文案1.1第一种方式:通过构造方法获取Bean1.2第二种方式:通过简单工厂模式获取Bean1.3第三种方式:通过factory-bean属性获取Bean1.4第四种方式:通过FactoryBean接口获取Bean1.5Bea......
  • Java四种实现单例模式
    饿汉式/***1.饿汉式:线程安全,耗费资源*场景:*资源共享:当需要在多个模块中共享同一个实例时*全局访问点:作为全局唯一的访问点,例如日志记录器、配置管理器等。*线程安全要求高:饿汉式单例模式在类加载时就创建实例,因此不存在线程安全问题,适合多线程环境下使用。*避......
  • 用户空间锁-1-用户空间锁概述
    前言:无论是内核锁还是用户空间锁,其基本原理都是一样的。这样,所有在内核锁上的优化其实都可以平移到用户空间。一、上层锁概述手机平台(特指安卓)平台上用户空间程序和锁相关的软件结构如下:1.Java锁安卓平台的Java层主要有二种锁的类型:JAVA内嵌锁和JUC锁。所谓Java内嵌锁就是......
  • Docker(十四)-Docker四种网络模式
    Docker安装时会自动在host上创建三个网络,我们可用 dockernetworkls 命令查看:none模式,使用--net=none指定,该模式关闭了容器的网络功能。host模式,使用--net=host指定,容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。bridge模式,使用--net=bridge指定......
  • 前端实现盒子水平垂直居中的四种方式
    在前端开发中,实现元素的水平垂直居中是一个常见的需求。下面我将介绍几种常见的方法来实现这个效果:1.使用Flexbox(弹性盒子Flexbox是一个现代的布局模型,可以轻松地实现元素的水平垂直居中。Html代码<divclass="flex-container"><divclass="flex-item">我是内容</div>......