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

Postgresql体系结构

在这里插入图片描述

client连接PostgreSQL过程:
1、客户端发起请求
2、主服务postmaster进程负责服务器是否接受客户端的host通信认证,服务器对客户端进行身份鉴别
3、主服务进程为该客户端单独fork一个客户端工作进程postgres
4、客户端与postgres进程建立通信连接,由postgres进程负责后续所有的客户端请求操作,直至客户端退出后

进程:
Postmaster进程是PG数据库的总控制进程,负责启动和关闭数据库实例,是第一个postgres进程。Postmaster的主进程,还会fork出一些辅助子进程。

BgWriter(后台写)进程
WaLWriter(预写式日志)进程
AutoVAcuum(系统自动清理)
SysLogger(系统日志)进程
PgArch(归档)进程
PgStat(统计数据收集)进程
CheckPoint(检查点)进程

内存:

共享内存区
shared_buffers —共享缓冲区,它表示数据缓冲区中的数据块的个数,每个数据块的大小是8KB。推荐值:1/4 主机物理内存

wal_buffers — 日志缓存区的大小 存放WAL数据的内存空间大小,系统默认值是64K

私有内存区

temp_buffers—临时缓冲区 用于存放数据库会话访问临时表数据,系统默认值为8M。
work_mem — 工作内存或者操作内存。其负责内部的sort和hash操作,合适的work_mem大小能够保证这些操作在内存中进行。
maintenance_work_mem —维护工作内存 主要是针对数据库的维护操作,主要针对VACUUM,CREATE INDEX,ALTER TABLE ADD FOREIGN KEY等操作。

PGDATA主要目录
drwx------ 6 postgres postgres 54 Mar 29 16:37 base
drwx------ 2 postgres postgres 4096 Mar 30 20:50 global
drwx------ 2 postgres postgres 6 Mar 26 11:26 pg_commit_ts
drwx------ 2 postgres postgres 6 Mar 26 11:26 pg_dynshmem
-rw------- 1 postgres postgres 4760 Mar 26 11:26 pg_hba.conf
-rw------- 1 postgres postgres 1636 Mar 26 11:26 pg_ident.conf
drwx------ 4 postgres postgres 68 Mar 31 16:13 pg_logical
drwx------ 4 postgres postgres 36 Mar 26 11:26 pg_multixact
drwx------ 2 postgres postgres 6 Mar 26 11:26 pg_notify
drwx------ 2 postgres postgres 6 Mar 26 11:26 pg_replslot
drwx------ 2 postgres postgres 6 Mar 26 11:26 pg_serial
drwx------ 2 postgres postgres 6 Mar 26 11:26 pg_snapshots
drwx------ 2 postgres postgres 6 Mar 29 14:29 pg_stat
drwx------ 2 postgres postgres 105 Apr 1 09:17 pg_stat_tmp
drwx------ 2 postgres postgres 18 Mar 26 11:26 pg_subtrans
drwx------ 2 postgres postgres 19 Mar 30 20:41 pg_tblspc
drwx------ 2 postgres postgres 6 Mar 26 11:26 pg_twophase
-rw------- 1 postgres postgres 3 Mar 26 11:26 PG_VERSION
drwx------ 3 postgres postgres 60 Mar 26 11:26 pg_wal
drwx------ 2 postgres postgres 18 Mar 26 11:26 pg_xact
-rw------- 1 postgres postgres 88 Mar 26 11:26 postgresql.auto.conf
-rw------- 1 postgres postgres 28011 Mar 26 11:26 postgresql.conf
-rw------- 1 postgres postgres 33 Mar 29 14:29 postmaster.opts
-rw------- 1 postgres postgres 91 Mar 29 14:29 postmaster.pid

ll base/
drwx------ 2 postgres postgres 8192 Mar 29 16:36 12723
drwx------ 2 postgres postgres 8192 Mar 29 16:37 16393

base:用于存放当前实例下所有的数据库,数字化命名的路径表示各个数据库,每个数字表示数据库的oid

oid2name 展示数据库对应的表空间信息
All databases:
Oid Database Name Tablespace

12723 postgres pg_default
16393 testdb pg_default

pg_commit_ts:事务提交时间戳信息;commit timestamp;
pg_dynshmem:共享内存使用的文件信息;dynamic shared memory;
pg_hba.conf:关于客户端如何访问数据库的配置文件 host based authentication;
pg_logical:数据库逻辑解码的状态数据;
pg_multixact:存放多事务状态数据,共享锁信息;multi transaction;
pg_notify:数据库配置订阅模式的LISTEN/NOTIFY状态数据;
pg_replslot:数据库复制槽信息;replication slot;
pg_serial:已提交的串行化事务信息;serializable;
pg_snapshots:导出的快照信息,内置pg_export_snapshot()函数导出;
pg_stat:统计子系统收集的统计信息;statistics;
pg_stat_tmp:统计子系统收集的临时统计信息;statistics temporary;
pg_subtrans:子事务的转态数据;sub-transactions;
pg_tblspc:表空间的映射,
pg_twophase:两阶段提交事务的状态信息;
PG_VERSION:存放数据库版本信息;
pg_wal:存放数据库的日志文件,类似于Oracle的redo log。write ahead log;
pg_xact:事务提交状态数据,用于控制事务的Multi Version Concurrent Contril;PostgreSQL事务有4种状态:IN_PROGRESS,COMMITED,ABORTED,SUB_COMMITTED;
postgresql.auto.conf:存放通过alter sytem命令修改的参数,
postgresql.conf:数据库配置的参数文件,类似于Oracle的参数文件spfile;
postmaster.opts:记录数据库启动时的选项,options;
postmaster.pid 主进程文件

逻辑结构
在这里插入图片描述
DataBase
tablespace
Schema
object

创建一个Database时,这个Database会创建一个名为public的默认Schema,每个Database可以有多个Schema,在这个数据库中创建其他数据库对象时,如果没有指定Schema,都会在public这个Schema中,Schema可以理解为一个数据库中的命名空间,在数据库中创建的所有对象都Schema中创建,一个用户可以从同一个客户端连接中访问不同的Schema,不同的Schema中可以有多个相同的名称的Table、Index、View、Sequence、Function等数据库对象。

相关文章:

Postgresql体系结构

client连接PostgreSQL过程: 1、客户端发起请求 2、主服务postmaster进程负责服务器是否接受客户端的host通信认证,服务器对客户端进行身份鉴别 3、主服务进程为该客户端单独fork一个客户端工作进程postgres 4、客户端与postgres进程建立通信连接&#xf…...

【Rust】——rust前言与安装rust

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…...

基于SpringBoot的家电销售展示网页的设计与实现

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…...

【Qt】—— 项⽬⽂件解析

目录 (一).pro⽂件解析 (二)widget.h⽂件解析 (三)main.cpp⽂件解析 (四)widget.cpp⽂件解析 (五)widget.ui⽂件解析 (一).pro⽂…...

【Linux】静态库和动态库

动静态库 一、静态库1. 静态库概念2. 制作静态库(1)朴素方法 --- 不打包(2)对静态库打包 3. 使用静态库(1)朴素方法 --- 直接使用(2)使用打包好的静态库 二、动态库1. 动态库概念2. …...

LeetCode 0292.Nim 游戏:脑筋急转弯

【LetMeFly】292.Nim 游戏:脑筋急转弯 力扣题目链接:https://leetcode.cn/problems/nim-game/ 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。你们轮流进行自己的回合, 你作为先手 。每一回合&#xff0c…...

ctfshow-web1~10-WP

web1 右键查看源码就能看到flag web2 打开网页提示无法查看源代码,右键也使用不了,那我们就在url前面加上view-source: view-source:http://83a83588-671e-4a94-9c6f-6857f9e20c2f.chall.ctf.show/ 访问后即可获得flag web3 右键源码也没看到信息,去查看一下请求头和响应…...

集合问题(并查集)

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例1: 输入 4 5 9 2 3 4 5 输出 YES 0 0 1 1 样例2: 输入 3 3 4 1 2 4 输出 NO 思路: 这道题关键点在于。 当集合中有一个元素均存在于集合 A 和集合 B 的时…...

Ubuntu文件系统结构

Ubuntu文件系统结构 介绍 Ubuntu是一种备受欢迎的Linux发行版,其文件系统结构以及组织方式是每个使用者和系统管理员都应该了解的重要主题。本篇博客将带您深入探索Ubuntu文件系统的结构,以便更好地理解Linux操作系统的工作原理。 1. 根目录&#xff…...

vue element 组件 form深层 :prop 验证失效问题解决

此图源自官网 借鉴。 当我们简单单层验证的时候发现是没有问题的,但是有的时候可能会涉及到深层prop,发现在去绑定的时候就不生效了。例如我们在form单里面循环验证,在去循环数据验证。 就如下图的写法了 :prop"pumplist. i .device…...

前端开发:入门(一)

当我们开始学习前端开发时,首先接触到的是HTML(超文本标记语言)。HTML是构建网页结构的基础。 1. HTML(超文本标记语言) 介绍和基础语法 HTML,即超文本标记语言,是一种用于创建网页结构的标记…...

简单实验 java spring cloud 自定义负载均衡

1.概要 1.1 说明 这个是在前一个测试上的修改,所以这里只体现修改的内容。前一个测试的地址:检查实验 spring cloud nacos nacos-server-2.3.0-CSDN博客 1.2 记忆要点 1.2.1 引入对象 Autowired DiscoveryClient discoveryClient; 1.2.2 获取服务实…...

简单说说redis分布式锁

什么是分布式锁 分布式锁(多服务共享锁)在分布式的部署环境下,通过锁机制来让多客户端互斥的对共享资源进行访问/操作。 为什么需要分布式锁 在单体应用服务里,不同的客户端操作同一个资源,我们可以通过操作系统提供…...

什么是 Java 中的 IO 和 NIO?它们之间有什么区别?什么是 Java 中的内存管理和垃圾回收?常见的垃圾回收算法有哪些?

什么是 Java 中的 IO 和 NIO?它们之间有什么区别? 在 Java 中,IO(Input/Output)和NIO(New IO)都是用于处理输入输出操作的API。它们之间有以下区别: IO(传统IO&#xff…...

【图论】基环树

基环树其实并不是树,是指有n个点n条边的图,我们知道n个点n-1条边的连通图是树,再加一条边就会形成一个环,所以基环树中一定有一个环,长下面这样: 由基环树可以引申出基环内向树和基环外向树 基环内向树如…...

如何快速捕获和验证用户软件需求,实现快速迭代

在软件开发过程中,快速捕获和验证用户需求,以及迅速迭代功能,是保持项目敏捷性和用户满意度的关键。下面将介绍一些建议,帮助你在软件开发过程中更有效地满足用户需求。 1. 深入沟通与用户互动 要捕获用户需求,必须与…...

爱上算法:每日算法(24-2月4号)

🌟坚持每日刷算法,😃将其变为习惯🤛让我们一起坚持吧💪 文章目录 [232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/)思路CodeJavaC 复杂度 [225. 用队列实现栈](https://leetcode.cn/…...

【Node系列】创建第一个服务器应用

文章目录 一、node介绍二、node创建应用三、node创建应用步骤四、相关链接 一、node介绍 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可以用于构建高性能的网络应用程序。它采用事件驱动、非阻塞I/O模型,使得程序可以以高效地方式处理并发请求…...

Linux命令基础学习 (2月4日打卡

1. ls - 列出目录内容 命令格式:ls [选项] [文件/目录] 常用选项: -l:以详细列表格式显示-a:显示所有文件,包括以.开头的隐藏文件 2. mkdir - 创建新目录 命令格式:mkdir [选项] 目录名 常用选项&…...

Python 基础知识概览

Python是一种简洁、易学、强大的编程语言,广泛应用于各种领域,包括Web开发、数据分析、人工智能等。本文将介绍一些Python的基础知识,帮助初学者建立对这门语言的基本了解。 1. Python 的简介 Python是一种高级、面向对象、解释型的编程语言…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

day36-多路IO复用

一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

医疗AI模型可解释性编程研究:基于SHAP、LIME与Anchor

1 医疗树模型与可解释人工智能基础 医疗领域的人工智能应用正迅速从理论研究转向临床实践,在这一过程中,模型可解释性已成为确保AI系统被医疗专业人员接受和信任的关键因素。基于树模型的集成算法(如RandomForest、XGBoost、LightGBM)因其卓越的预测性能和相对良好的解释性…...

【Ftrace 专栏】Ftrace 参考博文

ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...