postgresql FSM页面怎么组织

news/2025/2/20 20:22:42/

PostgreSQL 的空闲空间映射(Free Space Map,FSM)是用于跟踪堆和索引关系中可用空间的数据结构。FSM 的设计目标是快速定位到有足够空间容纳新元组的页面,或者决定是否需要扩展新的页面。

FSM 页面的组织方式

  1. 存储结构
    每个堆和索引关系(除了哈希索引)都有一个 FSM 文件,文件名以关系的文件节点号命名,并加上 _fsm 后缀。例如,如果关系的文件节点号是 12345,则其 FSM 文件名为 12345_fsm

  2. 树形结构
    FSM 被组织成一个页面树,底层 FSM 页面存储每个堆页面(或索引页面)的可用空间,每个页面用一个字节表示。上层 FSM 页面则聚合下层页面的信息。

  3. 页面内部结构
    每个 FSM 页面内部是一个二叉树,存储在一个数组中,每个节点占用一个字节。叶节点表示一个堆页面或下层 FSM 页面,非叶节点存储其子节点的最大值。根节点存储叶节点中的最大值。

  4. 逻辑与物理地址
    FSM 页面的逻辑地址由层级号和当前层的逻辑页号组成(FSMAddress)。物理地址则是 FSM 页面在 _fsm 文件中的偏移位置。

FSM 的功能与实现

  1. 快速查找
    FSM 的主要功能是快速定位到有足够空间的页面,避免遍历整个数据文件。通过二叉树结构,可以快速判断某个页面是否有足够的空闲空间。

  2. 空间表示
    PostgreSQL 使用一个字节表示每个页面的空闲空间,将空闲空间按 32 为步长分为 256 个区间,从而减少存储空间。

  3. 多层结构
    FSM 的树形结构通常为三层:顶层和中间层为辅助层,底层为实际存储数据页面空闲空间的叶子节点。这种结构可以高效地支持大规模数据文件。

  4. 更新与搜索
    FSM 的更新和搜索策略在 PostgreSQL 源码的 src/backend/storage/freespace/README 文件中有详细说明。

工具支持

PostgreSQL 提供了 pg_freespacemap 模块,可以用来检查存储在空闲空间映射中的信息,帮助管理员了解 FSM 的状态。

通过这种设计,FSM 在保证高效查找的同时,也减少了存储空间的占用,是 PostgreSQL 优化存储和插入性能的重要机制。


http://www.ppmy.cn/news/1573333.html

相关文章

什么是AI Agent、Chat、RAG、MoE

什么是AI Agent、Chat、RAG、MoE 目录 什么是AI Agent、Chat、RAG、MoE定义与原理功能特点应用场景AI Agent有哪些关键组成部分感知模块决策模块知识模块行动模块学习模块AI Agent、Chat、RAG、MoE是人工智能领域中不同的概念和技术,它们在功能、原理和应用等方面存在一些区别…

matlab齿轮传动

实现齿轮啮合分析,齿轮传动非线性分析,对扭转振动方程组进行求解,可得到齿轮扭转角随时间变化相关参数 列表 齿轮传动非线性分析,对扭转振动方程组进行求解,可得到齿轮扭转角随时间变化相关参数/niu_gou_yuan_Rg.m , …

人工智能(AI)在癌症休眠研究及精准肿瘤学中的应用|顶刊速递·25-02-18

小罗碎碎念 推文速览 癌症休眠是导致癌症复发转移的关键因素,当前治疗策略对其效果不佳,因此深入探究癌症休眠机制并开发针对性疗法至关重要。 文章首先阐述癌症休眠的基本概念,包括肿瘤块休眠和细胞休眠两种类型,详细介绍癌细胞…

WebSocket 小白快速入门(2025)

目录 一、websocket 背景和特性 二、websocket 和 ajax区别是什么 ? 三、传统方案和 websocket 方案对比 服务端推送web方案 1.短轮询 2.长轮询 3.Websocket长连接 四、websocket 代码实现方案 1.tomcat实现websocket 2.netty实现websocket 为啥选netty…

基于单片机ht7038 demo

单片机与ht7038 demo,三相电能表,电量数据包括电流电压功能,采用免校准方法 列表 ht7038模块/CORE/core_cm3.c , 17273 ht7038模块/CORE/core_cm3.h , 85714 ht7038模块/CORE/startup_stm32f10x_hd.s , 15503 ht7038模块/CORE/startup_stm32…

K8s:kubernetes.io~csi 目录介绍

目录标题 **1. 进入 CSI 相关目录****2. PVC 相关目录操作****3. 挂载点相关操作****4. CSI PVC 的使用流程****5. 总结** 在 Kubernetes(K8s)中,容器存储接口(CSI) 是一种标准,用于将存储系统暴露给 K8s 中…

Natural Language Processing NLP

NLP 清晰版本查看 Sentence segmentation (split)Tokenisation (split)Named entity recognition (combine) 概念主要內容典型方法Distributional Semantics(分佈式語義)(分銷語義(分佈式語義)單詞的語義來自於它的…

基于JavaWeb的本科生交流培养管理平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…