【0403】Postgres内核 检查(procArray )给定 db 是否有其他 backend process 正在运行

news/2025/2/9 5:55:25 标签: allProcs, allPgXact, MyProc, procArray

文章目录

  • 1. 给定 db 是否有其他 backend 正在运行
    • 1.1 获取 allPgXact[] 索引
      • 1.1.1 MyProc 中 databaseId 初始化实现
    • 1.2 allProcs[] 中各 databaseId 判断

1. 给定 db 是否有其他 backend 正在运行

CREATE DATABASE 语句创建用户指定 数据库名(database-name)时候, 会通过 procArray 检查, 检查给定数据库中是否有其他后端正在运行。

该过程由函数 CountOtherDBBackends() 完成。对于该函数:

  • 函数原型
    • bool CountOtherDBBackends(Oid databaseId, int *nbackends, int *nprepared)
      • databaseId 代表CREATE DATABASE 创建时,使用的模板数据库(默认情况下,为 template1, 其 Oid = 1
  • 函数作用
    • 如果数据库中还有其他后端进程,我们将最多等待 5 秒钟让它们退出。会向Autovacuum 后端进程发送 SIGTERM 信号以促使它们尽早退出,但普通用户后端进程则只是等待其自行退出。
    • 当前的后端总是被忽略;如果有必要,调用者应自行检查当前后端是否使用了给定的数据库。
    • 如果数据库中&#

http://www.niftyadmin.cn/n/5845632.html

相关文章

MYSQL innodb引擎的索引结构,B+树一般都多高,层高怎么计算的?

目录 B+树的高度计算 计算公式 B+树的层高示例 B+树的典型高度 B+树的结构 如何查看 B+树的高度 总结 在 MySQL InnoDB 引擎中,索引结构采用 B+树,这是一种平衡树结构,适合用于磁盘存储和范围查询。B+树的高度(层数)直接影响查询性能,因为每一层都需要一次磁盘 I/…

node 程序占用处理方法与后台运行方法

程序占用 如果你在关闭终端后重新运行 node server.js,但提示端口 3000 被占用,说明之前的服务器进程仍然在后台运行。以下是解决方法: 1. 检查后台运行的 Node.js 进程 首先,检查是否有 Node.js 进程正在占用端口 3000。 在 L…

在线SQL转JSON-GO在线工具集

此工具提供多数据库 SQL 自动转换为 JSON 格式的工具,支持 MySQL、PostgreSQL、Oracle 等主流数据库。此工具将 SQL 查询结果转换为结构化的 JSON 数据,方便 JSON 处理和数据交换,优化数据管理和集成过程,提升工作效率。 gotool

存储异常导致的Oracle重大生产故障

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…

Docker 部署 GitLab

一、下载镜像 docker pull gitlab/gitlab-ce 二、运行容器 docker run -d --name gitlab-20080 \n -p 20443:443 -p 20080:80 -p 20022:22 \n -v /wwwroot/opt/docker/gitlab-20080/etc:/etc/gitlab \n -v /wwwroot/opt/docker/gitlab-20080/log:/var/log/gitlab \n -v /www…

uniapp mqttjs 小程序开发

在UniApp中集成MQTT.js开发微信小程序时,需注意平台差异、协议兼容性及消息处理等问题。以下是关键步骤与注意事项的综合指南: 一、环境配置与依赖安装 安装MQTT.js 推荐使用兼容性较好的版本:mqtt4.1.0(H5和小程序兼容性最佳&…

Spring 6.2.2 @scope(“prototype“)原理

Spring Prototype 原理? 前置准备 创建一个MyService类 Scope("prototype") Service("myService") public class MyService {public String getMessage() {return "Hello, World!";} }创建一个main类,用于debug。 pr…

超越传统IDE:Cursor智能编码介绍

超越传统IDE:Cursor智能编码介绍 为什么选择Cursor常用快捷键常用设置汉化设置隐私设置模型选择添加大模型Rules for AI(AI生成规则)Python执行环境安装扩展切换python版本 添加Docs文档 使用技巧Chat模式与COMPOSER模式Chat 模式提交按钮COM…