尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

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

pg_pathman内置监控视图清单:pathman_partition_list等4大视图一键掌握分区状态 pg_pathman内置监控视图清单pathman_partition_list等4大视图一键掌握分区状态【免费下载链接】pg_pathmanPartitioning tool for PostgreSQL项目地址: https://gitcode.com/gh_mirrors/pg/pg_pathmanpg_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 HASH2 RANGEexpr分区键表达式range_min/range_maxRANGE 分区的边界值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当前状态如workingSELECT * FROM pathman.pathman_concurrent_part_tasks;官方文档中给出的典型输出userid | pid | dbid | relid | processed | status ------------------------------------------------ dmitry | 7367 | 16384 | test | 472000 | workingprocessed数字不断增长说明任务健康长时间不动则要检查是否有长事务锁住了数据行。完整示例见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分区表达式parttype1 HASH2 RANGErange_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搞定分区运维 ✅把下面三条查询存成巡检脚本定期执行即可分区完整性SELECT count(*) FROM pathman.pathman_partition_list WHERE parent xxx::regclass;—— 确认分区数量符合预期迁移进度SELECT relid, processed, status FROM pathman.pathman_concurrent_part_tasks;—— 确认后台任务在推进配置核对SELECT * FROM pathman.pathman_config;—— 确认分区键和区间无误另外tests/update/dump_pathman_objects.sql中还提供了导出全部 pg_pathman 对象含上述视图的脚本方便升级前后做结构对比。常见问题 FAQQ1视图为什么查不到数据确认扩展已创建且查询时带上了正确的 schema如pathman.pathman_partition_list并且确实调用过create_range_partitions()/create_hash_partitions()建过分区。Q2parttype 的 1 和 2 分别代表什么1 表示 HASH 分区2 表示 RANGE 分区。该约束定义在init.sql的pathman_config表结构中parttype IN (1, 2)。Q3这些视图有性能开销吗基本都是元数据查询代价极低pathman_cache_stats只读取共享内存统计可放心纳入监控采集。Q4pg_pathman 还会继续发展吗项目官方声明已停止新功能开发但仍在维护已支持版本PostgreSQL 1115的 bug 修复。新项目也建议评估 PostgreSQL 原生分区不过对于已在使用 pg_pathman 的存量系统掌握这套内置监控视图仍是日常运维的基本功。【免费下载链接】pg_pathmanPartitioning tool for PostgreSQL项目地址: https://gitcode.com/gh_mirrors/pg/pg_pathman创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表