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

理解PostgreSQL中的映射表

PG中的映射表这个概念有点抽象,让我们用一个更生活化的比喻来解释,把数据库想象成一个巨大的图书馆

图书馆的比喻

  1. 书和书架(表和数据块)

    • 整个图书馆就是你的 数据库
    • 一个书架 就是数据库中的一个 数据块(Page),上面整齐地摆放着很多书。
    • 每一本书 就是一条 数据记录(元组)
  2. 问题所在:多版本和“死书”

    • PostgreSQL 允许多人同时借阅和归还图书(并发读写)。为了不打扰正在读书的人,当有人修改一本书(比如更新了一条记录),它不是直接涂改原书,而是抄写一份新版本放在书架上。原来的那本旧书就变成了“死书”,它没有被扔掉,但已经没人会去读它了。
    • 日积月累,书架上就堆满了这种没人要的“死书”,占用了大量空间。
  3. 图书管理员(VACUUM)

    • 这时候就需要 VACUUM(清理) 这个“图书管理员”来定期整理书架,把“死书”清理掉,腾出空间放新书。
    • 但是,如果一个书架一个书架地检查有没有“死书”,工作量巨大,非常耗时。
  4. 可见性映射表(VM)—— 智能标签系统

    • 可见性映射表(VM) 就是为每个书架(数据块) 准备的一个智能标签
    • 这个标签非常简单,只有两种状态:
      • 绿灯(1):表示这个书架上所有的书都是“活”的(即对所有读者都可见的最新版本)。没有“死书”。
      • 红灯/无灯(0):表示这个书架上可能有“死书”,需要检查。

VM 如何发挥巨大作用?

现在,让我们看看这个“智能标签”系统如何让图书馆运作得更高效:

  • 场景一:管理员整理书架(VACUUM)

    • 没有VM时:管理员必须逐个检查每一个书架上的每一本书,来判断是不是“死书”。这太慢了!
    • 有VM时:管理员推着小车,只需要扫一眼书架上的标签。看到 “绿灯” 的书架,他直接跳过,因为他知道这里没有垃圾。他只需要在 “红灯” 的书架前停下来仔细检查。这极大地提高了整理效率。
  • 场景二:读者查资料(Index-Only Scan)

    • 假设图书馆有一个非常详细的索引卡系统(数据库索引),索引卡上已经记录了某本书的关键信息和它在哪个书架。
    • 没有VM时:读者根据索引卡找到书架位置后,还是必须走到那个书架前,把书拿下来翻一翻,确认这是不是他想要的最新版本。
    • 有VM时:读者根据索引卡找到书架位置,同时他看了一眼书架的标签,发现是 “绿灯” 。这意味着他可以完全相信索引卡上的信息就是最新的,根本不需要走过去拿书,直接在索引区就得到了答案。这节省了大量的跑腿时间。

总结

所以,可见性映射表(VM) 的本质是一个元数据(关于数据的数据)的缓存

  • 它是什么? 一个为每个数据块标记“是否全可见”的位图。
  • 它为什么快? 因为它用极小的空间(一个位),存储了关于整个数据块(通常是8KB)的状态信息。
  • 它有什么用?
    1. 加速VACUUM:跳过无需清理的块。
    2. 实现索引快速扫描:在特定条件下,让查询无需访问表数据,只读索引就能完成。

它不是必须的,没有它数据库也能工作,但有了它,数据库的维护效率和查询性能都能得到质的提升。希望这个比喻能帮助你彻底理解它

http://www.dtcms.com/a/544601.html

相关文章:

  • Java1029 抽象类:构造方法
  • 类和对象(中)——日期类的实现取地址运算符重载
  • Linux系统编程—线程同步与互斥
  • 【笔试真题】- 百度第一套-2025.09.23
  • notion模板 | 小胡的第二大脑[特殊字符]- 使用案例
  • notion模版 | 小胡的第二大脑[特殊字符]-介绍
  • 公司网站被百度转码了银川网站建设设计
  • 链式二叉树算法精讲:前中后序、层序与完全二叉树判断
  • 项目中遇到的特殊需求所作的特殊处理
  • 会所网站建设wordpress 怎样做模版
  • vue3使用ONLYOFFICE 实现在线Word,Excel等文档
  • Python数据分析自动化:从入门到精通
  • 零依赖一键多端!用纯 Node.js 打造“IP 可访、角色隔离”的轻量化 Mock 服务器
  • Azure 监控工具怎么选?从原生局限到第三方解决方案的效率跃升
  • 湖南省人力资源网夫唯seo
  • 佛山+网站建设品牌建设发展规划
  • 0009.STM32等单片机的RAM和FLASH使用情况查询
  • CloudFront分发安全优化指南:提升性能与用户体验的完整方案
  • 分享修改文件md5的工具
  • 拓展知识:了解grid、block、thread 关系
  • 打破视频壁垒:视频融合平台EasyCVR如何实现多路视频监控上屏的高效管理?
  • 仓颉原子操作封装:从底层原理到鸿蒙高并发实战
  • BIOS 设置PC 上电自启动
  • “自然搞懂”深度学习系列(基于Pytorch架构)——03渐入佳境
  • 网站建设及推广枣强怎么做汽车网站推广方案
  • 做网站什么软件给女朋友做情侣网站的程序员
  • 天津网站备案深圳高端设计公司名单
  • 不只是字符串:Actix-web 路由与 FromRequest的类型安全艺术
  • Tongweb7部署应用
  • 无锡网络建站网络推广计划书案例