pg_table_range
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_table_range | 0.1.2 | OLAP | MIT | Rust |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2570 | pg_table_range | 否 | 是 | 否 | 是 | 否 | 否 | - |
Experimental. 0.1.2 fixes missing rows and backend crashes. From 0.1.1: install new binaries, restart all backends, UPDATE extension, REINDEX each table_range index (parent for partitioned tables); old summaries are ignored until rebuilt.
版本
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 0.1.2 el8.x86_64.pg18 : pg_table_range_18 pg_table_range_18-0.1.2-1PGSTY.el8.x86_64.rpm
| PIGSTY 0.1.2 el8.x86_64.pg17 : pg_table_range_17 pg_table_range_17-0.1.2-1PGSTY.el8.x86_64.rpm
| PIGSTY 0.1.2 el8.x86_64.pg16 : pg_table_range_16 pg_table_range_16-0.1.2-1PGSTY.el8.x86_64.rpm
| N/A | N/A |
| el8.aarch64 | PIGSTY 0.1.2 el8.aarch64.pg18 : pg_table_range_18 pg_table_range_18-0.1.2-1PGSTY.el8.aarch64.rpm
| PIGSTY 0.1.2 el8.aarch64.pg17 : pg_table_range_17 pg_table_range_17-0.1.2-1PGSTY.el8.aarch64.rpm
| PIGSTY 0.1.2 el8.aarch64.pg16 : pg_table_range_16 pg_table_range_16-0.1.2-1PGSTY.el8.aarch64.rpm
| N/A | N/A |
| el9.x86_64 | PIGSTY 0.1.2 el9.x86_64.pg18 : pg_table_range_18 pg_table_range_18-0.1.2-1PGSTY.el9.x86_64.rpm
| PIGSTY 0.1.2 el9.x86_64.pg17 : pg_table_range_17 pg_table_range_17-0.1.2-1PGSTY.el9.x86_64.rpm
| PIGSTY 0.1.2 el9.x86_64.pg16 : pg_table_range_16 pg_table_range_16-0.1.2-1PGSTY.el9.x86_64.rpm
| N/A | N/A |
| el9.aarch64 | PIGSTY 0.1.2 el9.aarch64.pg18 : pg_table_range_18 pg_table_range_18-0.1.2-1PGSTY.el9.aarch64.rpm
| PIGSTY 0.1.2 el9.aarch64.pg17 : pg_table_range_17 pg_table_range_17-0.1.2-1PGSTY.el9.aarch64.rpm
| PIGSTY 0.1.2 el9.aarch64.pg16 : pg_table_range_16 pg_table_range_16-0.1.2-1PGSTY.el9.aarch64.rpm
| N/A | N/A |
| el10.x86_64 | PIGSTY 0.1.2 el10.x86_64.pg18 : pg_table_range_18 pg_table_range_18-0.1.2-1PGSTY.el10.x86_64.rpm
| PIGSTY 0.1.2 el10.x86_64.pg17 : pg_table_range_17 pg_table_range_17-0.1.2-1PGSTY.el10.x86_64.rpm
| PIGSTY 0.1.2 el10.x86_64.pg16 : pg_table_range_16 pg_table_range_16-0.1.2-1PGSTY.el10.x86_64.rpm
| N/A | N/A |
| el10.aarch64 | PIGSTY 0.1.2 el10.aarch64.pg18 : pg_table_range_18 pg_table_range_18-0.1.2-1PGSTY.el10.aarch64.rpm
| PIGSTY 0.1.2 el10.aarch64.pg17 : pg_table_range_17 pg_table_range_17-0.1.2-1PGSTY.el10.aarch64.rpm
| PIGSTY 0.1.2 el10.aarch64.pg16 : pg_table_range_16 pg_table_range_16-0.1.2-1PGSTY.el10.aarch64.rpm
| N/A | N/A |
| d12.x86_64 | N/A | N/A | N/A | N/A | N/A |
| d12.aarch64 | N/A | N/A | N/A | N/A | N/A |
| d13.x86_64 | N/A | N/A | N/A | N/A | N/A |
| d13.aarch64 | N/A | N/A | N/A | N/A | N/A |
| u22.x86_64 | N/A | N/A | N/A | N/A | N/A |
| u22.aarch64 | N/A | N/A | N/A | N/A | N/A |
| u24.x86_64 | N/A | N/A | N/A | N/A | N/A |
| u24.aarch64 | N/A | N/A | N/A | N/A | N/A |
| u26.x86_64 | N/A | N/A | N/A | N/A | N/A |
| u26.aarch64 | N/A | N/A | N/A | N/A | N/A |
构建
您可以使用 pig build 命令构建 pg_table_range 扩展的 RPM 包:
安装
您可以直接安装 pg_table_range 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
创建扩展:
用法
来源:
pg_table_range 是面向 PostgreSQL 16–18 的实验性扩展,用于在规划期按非分区键列剪枝。其 table_range 索引访问方法保存每个分区的实际标量最小值与最大值、范围外延,或 PostGIS 几何外延。只有当摘要能够证明分区不可能匹配时,规划器钩子才会移除它。
基本用法
在分区表上构建摘要索引,并用代表性谓词对比执行计划:
该索引永远不会被选中来扫描行;它拥有供规划器使用的紧凑摘要。插入会自动拓宽摘要。删除仍然安全,但可能让摘要比实际存活数据更宽,直到 REINDEX 将其收紧;VACUUM 不会重建摘要。
受支持的剪枝谓词包括标量比较、BETWEEN、空值测试、常量 IN 或 ANY 列表,以及范围与 PostGIS 几何类型的重叠。不受支持的表达式会保守地保留分区。
从 0.1.1 升级
0.1.2 修复了 0.1.1 的漏行与后端崩溃问题。先安装新二进制文件并重启 PostgreSQL,确保所有后端都不再运行旧代码。随后升级扩展,并重建每个 table_range 索引;分区表应重建父索引:
重建前会忽略旧摘要,保留全部分区,以免错误剪枝。此版本拒绝部分索引。删除后如需收紧摘要,也应使用 REINDEX。
注意事项
- 上游明确将项目标记为实验性且高度由 AI 驱动。采用前应在仿真生产数据上验证正确性、崩溃恢复、升级和规划器行为。
- 规划成本随分区数量线性增长。原生分区键剪枝便宜得多;只有当选择性非键谓词的执行收益足以抵消规划工作时,才应使用 pg_table_range。
- 索引创建与非键规划都会锁定所有分区。当分区数达到数千时,默认 max_locks_per_transaction 可能导致共享内存不足错误;增大它会消耗共享内存,且需要重启。
- 删除可能降低选择性,直到维护重建或收紧摘要。失效的 table_range 索引会默默禁用剪枝。
- 控制文件要求由超级用户安装。应限制表与索引 DDL 权限,并针对确切的 PostgreSQL 大版本测试 Rust/pgrx 构建。
这个页面对您有帮助吗?
感谢反馈,我们会据此改进这篇文档。
哪里没有解决?(可选)