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

pg_pathman内置监控视图清单:pathman_partition_list等4大视图一键掌握分区状态

pg_pathman内置监控视图清单:pathman_partition_list等4大视图一键掌握分区状态

【免费下载链接】pg_pathmanPartitioning tool for PostgreSQL项目地址: https://gitcode.com/gh_mirrors/pg/pg_pathman

pg_pathman是 PostgreSQL 的开源分区工具扩展(Partitioning tool for PostgreSQL),它为 PostgreSQL 提供 HASH 和 RANGE 两种优化的分区机制。装完扩展后,很多新手都会问:怎么快速查看分区有没有建好?后台迁移任务跑到哪了?共享内存缓存占了多少?其实 pg_pathman 已经内置了一套"监控面板"——pathman_partition_list等 4 大监控视图(表),一条 SELECT 就能一键掌握整个分区状态,本文带你逐个认识它们。

4大监控入口速览表 📋

安装 pg_pathman 扩展后(对象通常位于pathmanschema 下),以下监控入口即自动创建,全部只读、随时可查:

监控对象类型核心用途
pathman_partition_list视图列出所有父表、分区、分区类型与范围边界
pathman_concurrent_part_tasks视图查看正在运行的后台分区迁移任务
pathman_cache_stats视图查看各共享内存缓存的内存占用
pathman_config(含pathman_config_params配置表查看分区键、分区类型及自动分区等参数

这些对象的定义可以在仓库根目录的init.sql中找到,官方说明见README.md的 "Views and tables" 章节。

视图一:pathman_partition_list 分区清单总览

这是使用频率最高的视图,它把"哪张表被分区了、分了哪些子分区、每个分区覆盖什么范围"一次性展示出来。

字段说明:

  • parent:父表(被分区的表)
  • partition:具体的分区子表
  • parttype:分区类型(1 = HASH,2 = RANGE)
  • expr:分区键表达式
  • range_min/range_max:RANGE 分区的边界值(HASH 分区为 NULL)

实用场景:给分区"体检"

SELECT parent, partition, expr, range_min, range_max FROM pathman.pathman_partition_list WHERE parent = 'test.range_rel'::regclass;

配合drop_range_partition()还能批量下线旧分区:查出range_min小于某个阈值的分区并整体删除,比手写DROP TABLE更安全。测试用例可参考sql/pathman_basic.sql中对pathman_partition_list的大量查询示例。

视图二:pathman_concurrent_part_tasks 后台任务实时监控

对大表执行partition_table_concurrently()时,pg_pathman 会启动后台 Worker 分批搬移数据。这个视图让你随时掌握迁移进度:

  • userid:发起任务的用户
  • pid:工作进程号
  • relid:正在迁移的表
  • processed:已处理的行数
  • status:当前状态(如working
SELECT * FROM pathman.pathman_concurrent_part_tasks;

官方文档中给出的典型输出:

userid | pid | dbid | relid | processed | status --------+------+-------+-------+-----------+--------- dmitry | 7367 | 16384 | test | 472000 | working

processed数字不断增长,说明任务健康;长时间不动则要检查是否有长事务锁住了数据行。完整示例见sql/pathman_bgw.sql

视图三:pathman_cache_stats 共享内存占用检查

pg_pathman 的核心性能秘诀是把分区信息缓存在共享内存中,用于加速查询规划。这个视图展示每个缓存的内存消耗:

  • context:缓存场景名称
  • size:缓存总容量
  • used:已使用量
  • entries:条目数
SELECT context, entries FROM pathman.pathman_cache_stats ORDER BY entries DESC;

如果分区数量非常多,可借此确认缓存是否正常装载;size由 GUC 参数控制,调优时可对照此视图验证效果。相关测试见sql/pathman_calamity.sql

监控表四:pathman_config 分区配置中心

严格来说这是一张配置表而非视图,但它是排查分区问题的"总开关"。每张被分区的表在这里占一行:

  • partrel:父表
  • expr:分区表达式
  • parttype:1 = HASH,2 = RANGE
  • range_interval:自动创建分区所用的默认区间

配套的pathman_config_params表则记录可选参数:enable_parent(父表是否参与计划)、auto(是否自动建分区)、init_callback(建分区回调)、spawn_using_bgw(是否用后台 Worker 建分区)。

SELECT partrel, expr, parttype, range_interval FROM pathman.pathman_config;

💡小贴士:怀疑自动分区没生效?先查pathman_config_params.auto是否为TRUE;怀疑父表空扫拖慢查询?看enable_parent是否为FALSE

日常巡检清单:3条SQL搞定分区运维 ✅

把下面三条查询存成巡检脚本,定期执行即可:

  1. 分区完整性SELECT count(*) FROM pathman.pathman_partition_list WHERE parent = 'xxx'::regclass;—— 确认分区数量符合预期
  2. 迁移进度SELECT relid, processed, status FROM pathman.pathman_concurrent_part_tasks;—— 确认后台任务在推进
  3. 配置核对SELECT * FROM pathman.pathman_config;—— 确认分区键和区间无误

另外,tests/update/dump_pathman_objects.sql中还提供了导出全部 pg_pathman 对象(含上述视图)的脚本,方便升级前后做结构对比。

常见问题 FAQ

Q1:视图为什么查不到数据?确认扩展已创建且查询时带上了正确的 schema(如pathman.pathman_partition_list),并且确实调用过create_range_partitions()/create_hash_partitions()建过分区。

Q2:parttype 的 1 和 2 分别代表什么?1 表示 HASH 分区,2 表示 RANGE 分区。该约束定义在init.sqlpathman_config表结构中(parttype IN (1, 2))。

Q3:这些视图有性能开销吗?基本都是元数据查询,代价极低;pathman_cache_stats只读取共享内存统计,可放心纳入监控采集。

Q4:pg_pathman 还会继续发展吗?项目官方声明已停止新功能开发,但仍在维护已支持版本(PostgreSQL 11~15)的 bug 修复。新项目也建议评估 PostgreSQL 原生分区,不过对于已在使用 pg_pathman 的存量系统,掌握这套内置监控视图仍是日常运维的基本功。

【免费下载链接】pg_pathmanPartitioning tool for PostgreSQL项目地址: https://gitcode.com/gh_mirrors/pg/pg_pathman

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4158498.html

相关文章:

  • Lightbeam的心脏:一个HTTP请求如何从Firefox事件捕获变成图谱上的一个节点
  • 为什么 QMedia 的多模态 RAG 问答更聪明?图文短视频内容检索与智能问答使用详解
  • 一行use解决:Hammox.Protect宏如何让Elixir测试模块自带契约检查
  • heroku_san安装教程:Rails 3+、Rails 2与Sinatra三种框架如何快速接入Heroku部署
  • PyMacroRecord:免费跨平台宏录制工具,重复操作一键回放
  • 深入 Duster 架构:基于 Laravel Zero 与适配器模式统一 4 大 Lint 工具的设计之道
  • CoopCycle餐厅配置实战:5步搞定菜单、商品与在线点餐的完整教程
  • HDR环境光照教程:用intensity_env和rotate_env在rayshader_portraits中打造电影级光影
  • 基于FMMosaicLayout打造互动图片墙:Cell长按缩放动画与复用机制实战
  • tlock进阶技巧:Duration、轮次编号与Armor,6个让时间锁加密更灵活的用法
  • 题解:洛谷 P3076 [USACO13FEB] Taxi G
  • NCM 转 MP3 完整攻略:用 ncmdump 免费转换,拖拽 4 步上手
  • FiD显存优化秘籍:Checkpointing与answer_maxlength如何驯服100段长文本
  • 毕业论文“难产”自救指南:AI写论文哪个软件最好?我站宏智树AI
  • UE5-MCP:如何用AI把3个月的UE5关卡开发压缩到3天
  • 星际争霸II Bot API库python-sc2入门:为什么它是Python打造SC2 AI机器人的终极选择
  • 为什么Remote PowerShell正在被淘汰:理解Exchange V3模块的REST API连接迁移(office-docs-powershell)
  • 053、VLA模型的训练数据与配比:互联网数据与机器人数据的融合
  • 3步备份QQ空间全部历史说说:GetQzonehistory 完整上手指南
  • QuickLook 插件选型指南:macOS 空格键预览只装这几组才真正用得上
  • PCSX2 Gamefixes与PNACH作弊码完全指南:解决闪退卡顿并解锁60帧
  • Engauge Digitizer 入门指南:从图表图像提取数据点的安装配置全流程
  • CSWin Transformer预训练权重怎么选:Tiny/Small/Base/Large六种模型参数与FLOPs全对比(附选型建议)
  • 如何快速给 Unity WebGL 加上原生输入框:WebGLInput 完整上手指南
  • Oracle APEX Blueprints实战:AI驱动的规范开发,从需求文档一键生成应用
  • EntityFrameworkCore.Triggered性能开销到底有多大?完整基准测试数据解读
  • 132、洞察驱动的实战标题——时域降噪的“鬼影博弈“——运动检测阈值高一点还是低一点?从运动矢量置信度到混合权重的工程调优
  • 使用vminpoly前必知的5个注意事项:常见坑与浏览器兼容清单
  • 扩展 D-Zone:接入 Slack 等新聊天平台的开发者进阶指南
  • 潍坊全家电维修服务指南-欧米到家常见故障、服务范围与预约报修