CUBRID OOS (Out-of-row Overflow Storage)

Knowledge base for the CUBRID OOS project — separating large variable-length columns from heap records into dedicated OOS files to reduce unnecessary disk I/O.

Core Documents

  • OOS Presentation — Architecture overview, record format, CRUD flows, MVCC integration (Marp slides)
  • OOS Test Scenarios — ACID, crash recovery, MVCC, replication test cases using VARBIT patterns
  • OOS Schedule — M2 milestone timeline (3/10–4/17), task assignments, weekly plan
  • OOS TODO — Known bugs, open issues (CBRD-26458 unloaddb perf, CBRD-26516 redundant oos_read)

Reference (CUBRID Internals)

Quick Reference

ConceptDetail
OOS triggerrecord > DB_PAGESIZE/8 (2KB) AND column > 512B
OOS file typeFILE_OOS, one per heap file (1:1)
OOS pointer8-byte OOS OID (volid, pageid, slotid) in variable area
MVCC flagsOR_MVCC_FLAG_HAS_OOS (bit 3), OR_VAR_BIT_OOS (bit 0)
Key sourceheap_file.c, oos_file.cpp, object_representation.h

JIRA