citus_columnar
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2400 | citus | 否 | 是 | 是 | 是 | 否 | 否 | pg_catalog |
| 2401 | citus_columnar | 否 | 是 | 否 | 是 | 否 | 否 | pg_catalog |
Packaged with Citus 14.2.0; the control default_version is 14.2-1; citus_columnar itself does not require preload and conflicts with Hydra Columnar.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 14.2.0 | 1817161514 | citus | - |
| RPM | PIGSTY | 14.2.0 | 1817161514 | citus_$v | - |
| DEB | PIGSTY | 14.2.0 | 1817161514 | postgresql-$v-citus | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 13.2.0 | PGDG 13.0.0 |
| el8.aarch64 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 13.2.0 | PGDG 13.0.0 |
| el9.x86_64 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 13.2.0 | PGDG 13.0.0 |
| el9.aarch64 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 13.2.0 | PGDG 13.0.0 |
| el10.x86_64 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 13.2.0 | PIGSTY 13.0.0 |
| el10.aarch64 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 14.2.0 | PGDG 13.2.0 | PIGSTY 13.0.0 |
| d12.x86_64 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 13.2.0 | PIGSTY 13.0.0 |
| d12.aarch64 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 13.2.0 | PIGSTY 13.0.0 |
| d13.x86_64 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 13.2.0 | PIGSTY 13.0.0 |
| d13.aarch64 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 13.2.0 | PIGSTY 13.0.0 |
| u22.x86_64 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 13.2.0 | PIGSTY 13.0.0 |
| u22.aarch64 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 13.2.0 | PIGSTY 13.0.0 |
| u24.x86_64 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 13.2.0 | PIGSTY 13.0.0 |
| u24.aarch64 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 13.2.0 | PIGSTY 13.0.0 |
| u26.x86_64 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 13.2.0 | PIGSTY 13.0.0 |
| u26.aarch64 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 14.2.0 | PIGSTY 13.2.0 | PIGSTY 13.0.0 |
构建
您可以使用 pig build 命令构建 citus 扩展的 RPM / DEB 包:
安装
您可以直接安装 citus 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
创建扩展:
用法
来源:
citus_columnar 为 PostgreSQL 提供面向追加写入的列式表访问方法。它随 Citus 14.2 软件包交付,但属于独立扩展:软件包版本为 14.2.0,而扩展控制版本为 14.2-1。适用于以扫描为主,且工作负载符合其写入与功能限制的归档或分析表。
创建列存储表
citus_columnar 本身不要求 shared_preload_libraries。如果数据库还使用分布式 citus 扩展,仍需预加载 citus。
加载与查询数据
列存储会将行组成条带,并按数据块压缩各列。使用大小合理的事务进行批量插入,比持续执行微型事务更有利于产生良好条带。
使用 Citus 扩展转换
如果主 citus 扩展也已预加载并安装,可以使用其辅助函数转换本地表或分布式表:
转换会重写表。转换为列存储会删除现有索引,因此执行前应清点依赖的索引和约束,并为重写安排足够的磁盘空间和锁定时间。
alter_table_set_access_method() 属于 citus,而不是独立的 citus_columnar。没有主扩展时,应新建 USING columnar 表并将数据复制进去,而不要假定该辅助函数存在。
调整压缩
使用文档所述的辅助函数检查和修改表级列存储选项:
新设置只影响后续写入的条带。如果旧条带也需要采用新布局,请重写现有数据。
运维边界
- 列存储表面向追加型使用场景。它不支持
UPDATE和DELETE,回滚写入留下的空间也无法通过普通的堆表式维护回收。 - TOAST 不可用;大值会保持行内存储,并可能触及 PostgreSQL 行大小限制。
- 不支持行锁、
AFTER ... FOR EACH ROW触发器、可串行化隔离、逻辑解码、外键、非日志表以及多种扫描类型。采用该访问方法前,应检查当前上游限制列表。 - 不应把普通堆表在索引、vacuum、复制、触发器和约束方面的惯例直接套用到列存储上。应使用有代表性的列存储表验证每项必需的数据库功能。
- 扩展安装在
pg_catalog中,不可重定位,SQL 版本为14.2-1;检查或更新pg_extension时应使用该版本,而不是软件包版本14.2.0。