Features
Smaller Storage
Automatically compresses your data using the best method for each column
Cuts storage space by up to 97% compared to normal tables
Faster Queries
Answers totals, counts, and averages almost instantly, and skips scanning data that can't match — reading only what's needed.
Safe & Always Up-to-Date
Fully transactional with enforced data rules, plus zero-downtime schema changes and format switching.
Maintains Itself
Automatic background cleanup and optimization that never slows down active queries, with multi-worker data loading for speed.
Plays Well With Others
Works with popular formats like Parquet and Arrow, reads files from cloud storage directly, and fits right into your existing PostgreSQL setup.
Reliable
Full MVCC, transactions, and savepoint rollback semantics
Unique, primary-key, NOT NULL, and CHECK constraints enforced on insert
Benchmarks
97% smaller on disk than standard row-based tables
13,000x faster on COUNT(*), answered from metadata, no data scanned
600x faster on SUM/AVG over a column
116x faster on indexed lookups using index-only scans
7x faster bulk loads and exports, parallelized across workers
3.4x smaller than row storage at 100M rows — smaller than TimescaleDB and Citus columnar in the same test
Full methodology, hardware specs, and raw numbers: commandprompt.github.io/pgcolumnar/benchmarks
When to use it
| - | Use pgColumnar | Use regular tables |
|---|---|---|
| Workload | Append-mostly, read-heavy | Frequent updates and deletes |
| Access pattern | Wide scans, aggregates, reporting | Point lookups, single-row fetches |
| Table shape | Wide tables, queries touch a few columns | Queries need most or all columns per row |
| Data type | Compresses well, read more than written | Changes constantly, low compression benefit |
| Example workloads | Fact tables, event logs, analytics | OLTP, transactional systems |
Get It

git clone https://github.com/commandprompt/pgcolumnar
cd pgcolumnar make && make install
Full build instructions: Installation guide
Frequently Asked Questions
Will my existing queries still work?
Yes. A columnar table is an ordinary PostgreSQL relation. It works with your existing indexes, COPY, pg_dump, replication, and transactions without changes to your queries.
Does pgColumnar replace my existing tables?
No. It's a table access method you opt into per table (CREATE TABLE ... USING pgcolumnar). Existing heap tables are unaffected, and you can convert a table to or from columnar storage without rewriting it manually.
What happens to performance once I delete rows?
Aggregates fall back from metadata-only answers to a full scan of the affected row groups until you run pgcolumnar.vacuum. Only the touched groups are affected, not the whole table.
Can I still use indexes on a columnar table?
Yes. CREATE INDEX builds standard btree and hash indexes, and index-only scans are supported through a columnar visibility map.
Is pgColumnar production-ready?
It's currently 1.0alpha2. It's functional and benchmarked, but treat it as pre-production software until a stable release.
Does it support updates and deletes?
Yes, along with unique, primary key, NOT NULL, and CHECK constraints. The storage layout is optimized for append-mostly data, so update-heavy and delete-heavy workloads see less benefit than analytics workloads.
How is data compressed?
Each column chunk is encoded with the best fit from several type-aware methods (RLE, delta, dictionary, and others), then optionally compressed further with pglz, lz4, or zstd.
More Information
Status: PgColumnar is currently 1.0alpha2 and ready to be tested by the wider world.
Compatibility: PostgreSQL versions 15, 16, 17, 18 (19beta2 validated)
License: MIT to encourage contribution (AI welcome)
Docs: https://commandprompt.github.io/pgcolumnar/
Code: https://github.com/commandprompt/pgcolumnar
Try pgColumnar on your own workload
Talk to the team behind it about your use case, deployment, or support options.