floatfile

将浮点数组存储到文件中而不是堆表中

概览

扩展包名版本分类许可证语言
floatfile1.3.1UTILMITC
ID扩展名BinLibLoadCreateTrustReloc模式
4280floatfile-
相关扩展pg_ivm pg_bulkload gzip bzip zstd http pg_net pg_curl

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.3.11817161514floatfile-
RPMPIGSTY1.3.11817161514floatfile_$v-
DEBPIGSTY1.3.11817161514postgresql-$v-floatfile-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
d13.aarch64
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
u22.x86_64
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
u22.aarch64
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
u24.x86_64
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
u24.aarch64
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1
PIGSTY 1.3.1

构建

您可以使用 pig build 命令构建 floatfile 扩展的 DEB 包:

pig build pkg floatfile         # 构建 DEB 包

安装

您可以直接安装 floatfile 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install floatfile;          # 当前活跃 PG 版本安装
pig ext install -y floatfile -v 18  # PG 18
pig ext install -y floatfile -v 17  # PG 17
pig ext install -y floatfile -v 16  # PG 16
pig ext install -y floatfile -v 15  # PG 15
pig ext install -y floatfile -v 14  # PG 14
dnf install -y floatfile_18       # PG 18
dnf install -y floatfile_17       # PG 17
dnf install -y floatfile_16       # PG 16
dnf install -y floatfile_15       # PG 15
dnf install -y floatfile_14       # PG 14
apt install -y postgresql-18-floatfile   # PG 18
apt install -y postgresql-17-floatfile   # PG 17
apt install -y postgresql-16-floatfile   # PG 16
apt install -y postgresql-15-floatfile   # PG 15
apt install -y postgresql-14-floatfile   # PG 14

创建扩展

CREATE EXTENSION floatfile;

用法

floatfile: PostgreSQL 的浮点数组文件 I/O

将浮点数组存储在独立文件中,无需 MVCC 开销即可实现极快的查询。非常适合需要低延迟读取和低成本追加写入的时间序列数据。

函数

将浮点数组保存到文件

SELECT save_floatfile('my_data', ARRAY[1.0, 2.0, 3.0, 4.0]::float[]);

从文件加载浮点数组

SELECT load_floatfile('my_data');
-- {1,2,3,4}

向现有文件追加数据

SELECT extend_floatfile('my_data', ARRAY[5.0, 6.0]::float[]);

删除浮点文件

SELECT drop_floatfile('my_data');

表空间变体

所有函数都接受可选的表空间名称作为第一个参数:

SELECT save_floatfile('my_ts', 'my_data', ARRAY[1.0, 2.0]::float[]);
SELECT load_floatfile('my_ts', 'my_data');
SELECT extend_floatfile('my_ts', 'my_data', ARRAY[3.0]::float[]);
SELECT drop_floatfile('my_ts', 'my_data');

直方图函数

直接从浮点文件计算直方图(当数组超过 PostgreSQL 的 1GB 限制时非常有用):

SELECT floatfile_to_hist('my_data', 0.0, 1.0, 10);
-- 返回 int[] 直方图计数

SELECT floatfile_to_hist2d('xs_file', 'ys_file', 0.0, 0.0, 1.0, 1.0, 10, 10);
-- 返回二维 int[] 直方图

并发控制

函数使用 PostgreSQL 咨询锁:load_floatfile 获取共享锁;saveextenddrop 获取排他锁。


最后修改 2026-03-14: update extension metadata (953cbd0)