oriole OrioleDB kernel, provides bloat-free OLTP enhanced storage engine
The oriole configuration template uses OrioleDB storage engine instead of PostgreSQL’s default Heap storage, providing bloat-free, high-performance OLTP capability.
Overview Config Name: oriole Node Count: Single node Description: OrioleDB bloat-free storage engine configuration PostgreSQL Major: 16, 17, or 18 OS Distro: el8, el9, el10, d12, d13, u22, u24, u26 OS Arch: x86_64, aarch64 Related: meta Usage:
./configure -c oriole [ -i <primary_ip>]
# Select a PostgreSQL major version explicitly
./configure -c oriole -v 16
./configure -c oriole -v 17
./configure -c oriole -v 18 Content Source: pigsty/conf/oriole.yml
---
#==============================================================#
# File : oriole.yml
# Desc : 1-node OrioleDB (OLTP Enhancement) template
# Ctime : 2025-04-05
# Mtime : 2026-07-08
# Docs : https://pigsty.io/docs/conf/oriole
# License : Apache-2.0 @ https://pigsty.io/docs/about/license/
# Copyright : 2018-2026 Ruohang Feng / Vonng ([email protected] )
#==============================================================#
# This is the config template for OrioleDB Kernel,
# Which is a Patched PostgreSQL 16/17/18 fork
# tutorial: https://pigsty.io/docs/pgsql/kernel/orioledb
#
# Usage:
# curl https://repo.pigsty.io/get | bash
# ./configure -c oriole [-v 16/17/18]
# ./deploy.yml
all :
children :
infra : { hosts : { 10.10.10.10 : { infra_seq : 1 }} ,vars : { repo_enabled : false }}
etcd : { hosts : { 10.10.10.10 : { etcd_seq : 1 }} ,vars : { etcd_cluster : etcd }}
#minio: { hosts: { 10.10.10.10: { minio_seq: 1 }} ,vars: { minio_cluster: minio }}
#----------------------------------------------#
# OrioleDB Database Cluster
#----------------------------------------------#
pg-meta :
hosts :
10.10.10.10 : { pg_seq : 1, pg_role : primary }
vars :
pg_cluster : pg-meta
pg_users :
- {name : dbuser_meta ,password : DBUser.Meta ,pgbouncer : true ,roles : [dbrole_admin] ,comment : pigsty admin user }
- {name : dbuser_view ,password : DBUser.Viewer ,pgbouncer : true ,roles : [dbrole_readonly] ,comment : read-only viewer for meta database }
pg_databases :
- {name : meta ,baseline : cmdb.sql ,comment : pigsty meta database ,schemas : [pigsty], extensions : [ orioledb]}
pg_hba_rules : # https://pigsty.io/docs/pgsql/config/hba
- { user : all ,db : all ,addr : intra ,auth : pwd ,title : 'everyone intranet access with password' ,order : 800 }
pg_crontab : # https://pigsty.io/docs/pgsql/admin/crontab
- '00 01 * * * /pg/bin/pg-backup full'
# OrioleDB Ad Hoc Settings
pg_mode : oriole # OrioleDB compatible mode
pg_packages : [ orioledb, pgsql-common ] # install OrioleDB kernel
pg_libs : 'orioledb, pg_stat_statements, auto_explain' # Load OrioleDB Extension
vars : # global variables
#----------------------------------------------#
# INFRA : https://pigsty.io/docs/infra/param
#----------------------------------------------#
version : v4.5.0 # pigsty version string
admin_ip : 10.10.10.10 # admin node ip address
region : default # upstream mirror region: default,china,europe
infra_portal : # infra services exposed via portal
home : { domain : i.pigsty } # default domain name
#----------------------------------------------#
# NODE : https://pigsty.io/docs/node/param
#----------------------------------------------#
nodename_overwrite : false # do not overwrite node hostname on single node mode
node_repo_modules : node,infra,pgsql # add these repos directly to the singleton node
node_tune : oltp # node tuning specs: oltp,olap,tiny,crit
#----------------------------------------------#
# PGSQL : https://pigsty.io/docs/pgsql/param
#----------------------------------------------#
pg_version : 18 # OrioleDB Kernel is based on PG 16/17/18
pg_conf : oltp.yml # pgsql tuning specs: {oltp,olap,tiny,crit}.yml
#----------------------------------------------#
# PASSWORD : https://pigsty.io/docs/setup/security/
#----------------------------------------------#
grafana_admin_password : pigsty
grafana_view_password : DBUser.Viewer
pg_admin_password : DBUser.DBA
pg_monitor_password : DBUser.Monitor
pg_replication_password : DBUser.Replicator
patroni_password : Patroni.API
haproxy_admin_password : pigsty
minio_secret_key : S3User.MinIO
etcd_root_password : Etcd.Root
... Explanation The oriole template uses OrioleDB storage engine, fundamentally solving PostgreSQL table bloat problems.
Key Features :
Bloat-free Design : Uses UNDO logs instead of Multi-Version Concurrency Control (MVCC)No VACUUM Required : Eliminates performance jitter from autovacuumRow-level WAL : More efficient logging and replicationCompressed Storage : Built-in data compression, reduces storage spaceUse Cases :
High-frequency update OLTP workloads Applications sensitive to write latency Need for stable response times (eliminates VACUUM impact) Large tables with frequent updates causing bloat Usage :
-- Create table using OrioleDB storage
CREATE TABLE orders (
id SERIAL PRIMARY KEY ,
customer_id INT ,
amount DECIMAL ( 10 , 2 )
) USING orioledb ;
-- Existing tables cannot be directly converted, need to be rebuilt Notes :
OrioleDB supports PostgreSQL 16, 17, and 18; the template defaults to PG18, and you can select a major version with -v 16, -v 17, or -v 18 Need to add orioledb to shared_preload_libraries Some PostgreSQL features may not be fully supported Use the matching OrioleDB packages for the selected PostgreSQL major and OS architecture Was this page helpful?
Yes
No
Thanks—your feedback helps us improve this page.
What got in the way? (optional)
Missing information
Incorrect or outdated
Steps did not work
Hard to understand
Change response