5.00001 postgresql的辅助线程 - pg_stat架构整理

news2025/1/20 10:51:40

文章目录

    • 整体架构
    • 关键变量
        • PgStat_LocalState pgStatLocal; // (pg_stat.c:193)
        • static dlist_head pgStatPending = DLIST_STATIC_INIT(pgStatPending); (pg_stat.c:218)
        • static MemoryContext pgStatPendingContext = NULL;(pg_stat.c:210)
        • static const PgStat_KindInfo pgstat_kind_infos[PGSTAT_NUM_KINDS] (pg_stat.c:218)
        • 一些宏
    • 关键数据结构
        • PgStat_Kind (pg_stat.h:35)
        • PgStat_HashKey (pgstat_internal.h:64)
        • PgStatShared_HashEntry (pgstat_internal.h:64)
        • PgStat_EntryRef (pgstat_internal.h:121)
        • struct PgStatShared_XXX ((pgstat_internal.h:360))
        • PgStatShared_Common (pgstat_internal.h:107)
        • PgStat_LocalState (pgstat_internal.h:472)
        • PgStat_ShmemControl (pgstat_internal.h:405)
        • PgStat_SnapshotEntry (pg_stat.c:131)
        • PgStat_KindInfo (pgstat_internal.h:182)
        • PgStat_SubXactStatus (pgstat_internal.h:152)
    • 关键函数
        • pgstat_restore_stats() (pg_stat.c:407) => pgstat_read_statsfile() (pg_stat.c:1483)

整体架构

架构图整理如下:

  • variable-numbered object统计架构理解
    在这里插入图片描述
  • fixed-numbered object统计架构理解
    在这里插入图片描述架构整体理解如下:
  • 统计系统对不同类型的对象进行统计。
    某些类型的统计信息是为固定num的对象收集的(最常见的是1个),例如,checkpoint的统计信息。
    其他类型的统计数据是针对可变num的对象(例如关系)收集的。
    参见PgStat_KindInfo获取当前处理的统计信息的列表清单。
  • 某些具有固定num的对象的统计信息:
    统计数据存储在普通(非动态)共享内存中;
    .可变num的对象的统计信息:
    对象的统计信息存储在动态共享内存中,可以通过散列表dyhash寻址找到。
    统计信息计数器不是HASH项(PgStatShared_HashEntry)的一部分,而是通过PgStatShared_HashEntry->body隔离分配的。
    可变编号对象的统计在运行时由PgStat_HashKey寻址。
  • 为了避免共享哈希表上的争用,每个backend,在共享哈希表前面,都有一个backend本地哈希表(pgStatEntryRefHash),
    pgStatEntryRefHash中包含对共享哈希表项(shared hashtable entries)的引用(PgStat_EntryRef)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1837971.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全:深入探讨端点保护的策略与实践

文章目录 网络安全:深入探讨端点保护的策略与实践引言端点保护简介端点保护面临的挑战端点保护的最佳实践定期更新和打补丁使用强大的防病毒软件实施多因素认证 结语 网络安全:深入探讨端点保护的策略与实践 引言 在我们的网络安全系列文章中&#xff…

陶建辉入选 2023 年度“中国物联网行业卓越人物榜”

在这个技术飞速发展的时代,物联网行业作为推动社会进步的重要力量,正在不断地演化和革新。近日,中国智联网生态大会暨“2023 物联之星”年度榜单颁奖典礼在上海浦东举行。现场公布了拥有物联网行业奥斯卡奖之称的 ——“物联之星 2023 中国物…

必看!!! 2024 最新 PG 硬核干货大盘点(上)

PGConf.dev(原名PGCon,从2007年至2023年)首次在风景如画的加拿大温哥华市举办。此次重新定位的会议带来了全新的视角和多项新的内容,参会体验再次升级。尽管 PGCon 历来更侧重于开发者,吸引来自世界各地的资深开发者、…

零信任是对抗AI威胁的“解药”

人工智能的变革力量正在重塑众多行业的业务运营。通过机器人流程自动化(RPA),人工智能正在将人力资源从重复的、基于规则的任务中解放出来,并将其重点放在战略性的、复杂的操作上。此外,人工智能和机器学习算法可以以前…

LabVIEW电池管理系统测试平台

随着混合动力汽车技术的快速发展,对电池管理系统(BMS)的测试需求显著增加。利用LabVIEW软件开发了一款电池管理系统测试平台,通过模拟电池行为验证BMS的控制策略,从而降低成本、缩短开发周期,并提高整车的能…

解决solidworks下模型导出为urdf文件报错 “Reference sketch does not exist”的问题

标题 解决solidworks下模型导出为urdf文件报错 “Reference sketch does not exist”的问题 问题描述如下图: 解决方案: 将URDF Rederence删除后重新export即可。

零成本!无需服务器,搭建你的个性化应用!

在快速发展的互联网时代,每个人都有创造自己应用的梦想。但是,传统的应用开发往往需要大量的技术和资源投入,这对于许多独立开发者和初创企业来说是一个巨大的挑战。幸运的是,现在有了 MemFire Cloud,这款无需服务器、…

内外网映射访问内网服务器

如果本地有公网ip,比如连接的宽带有公网ip,可以直接通过路由配置转发就行了,如果本地没有公网ip,那就需要通过下面这种方式来访问内网服务器了。 1:首先内网服务器需要连接外网,可以通过网线或者WiFi都可以…

lotus snapshot 快照列表

快照列表 https://forest-archive.chainsafe.dev/list/mainnet/latest

七、(正点原子)Linux并发与竞争

Linux是多任务操作系统,肯定会存在多个任务共同操作同一段内存或者设备的情况,多个任务甚至中断都能访问的资源叫做共享资源。在驱动开发中要注意对共享资源的保护,也就是要处理对共享资源的并发访问。 一、并发与竞争 1、简介 并发就是多个…

PlantUML |像写代码一样画图

什么是 PlantUML? PlantUML是一个开源项目,它允许用户使用简单易懂的文本语言来定义和创建UML(统一建模语言)图表。这种文本语言基于简单的语法规则,使得用户可以快速地编写出图表的描述代码。 PlantUML支持多种UML图…

vite项目配置高德api定位功能

项目场景: 用vite项目集成了一个H5页面的小程序,需要调用高德的定位API,在浏览器中测试的时候,出现了一系列定位失败的情况。 问题1 Get ipLocation failed、Geolocation permission denied 本地http访问下,定位失败…

利用CUDA加速卷积计算:原理、实践与示例代码

利用CUDA加速卷积计算:原理、实践与示例代码 在深度学习领域,卷积神经网络(Convolutional Neural Networks,CNN)是目前最流行和有效的模型之一。然而,随着模型复杂度的增加,卷积计算的计算量也随之增加,这使得在CPU上进行卷积计算变得非常耗时。因此,利用CUDA加速卷积…

spark独立集群搭建

spark独立集群搭建(不依赖Hadoop) 1、上传spark-2.4.5-bin-hadoop2.7.tgz至 /usr/local/moudel ,再解压到 /usr/local/soft tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz -C /usr/local/soft/ 重命名 mv spark-2.4.5-bin-hadoop2.7/ spark-2.4.5 配…

003.Linux SSH协议工具

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

项目训练营第一天

项目训练营第一天 springboot后端环境搭建 1、首先需要找文章下载好tomcat、JDK、maven、mysql、IDEA。(软件下载及环境变量配置略) 2、在下载好的IDEA中,选择新建spring initial项目,选定java web,即可新建一个spri…

Pip应用及换源

一、介绍 Pip是Python的包管理器,它用于安装和管理Python的软件包。它是Python标准库的一部分,自从Python 2.7.9和Python 3.4版本开始,它已经内置在Python中,无需单独安装。 通过Pip,用户可以方便地安装、升级和卸载…

健身小程序:智能化助力个人健身旅程

一、智能化功能的核心 健身小程序的智能化功能主要体现在以下几个方面: 智能健身计划推荐:小程序内置了先进的算法,能够根据用户的身体状况、健身目标和时间安排,智能推荐个性化的健身计划。这些计划不仅科学合理,而且…

同三维T80006EHL-4K30CN 单路4K30 HDMI编码器(全国产化)

同三维T80006EHL-4K30CN 单路4K30 HDMI编码器 带1路HDMI环出和1路3.5音频输入,支持4K30,所有元器件全国产 一、 产品简介: T80006EHL-4K30CN 4K编码器(采集盒)是一款全国产化的专业4K HDMI音视频编码产品,…

第29讲:Ceph集群使用RBD块存储设备与K8S的PV集成

文章目录 1.Ceph集群使用RBD块存储与K8S集成简介2.Ceph集群RBD块存储与K8S PV存储卷集成2.1.创建K8S集群PV使用的块存储2.2.创建K8S集群访问RBD块存储设备的认证用户2.3.将认证用户的Key存储在K8S Secret资源中2.4.在K8S集群的所有节点中安装Ceph命令2.5.创建PV及PVC资源使用RB…