更新时间:2026-07-28 GMT+08:00
分享

Ustore简介

Ustore(Unified Storage)是GaussDB推出的一款原位更新的存储引擎,其多版本的实现较Astore最大的区别在于最新版本和历史版本的数据是分离存储的,而索引当前还没有分离。Ustore目前已发展为GaussDB的默认行存引擎。相比于Append Update(追加更新)行存储引擎,Ustore存储引擎可以提高数据页面内更新的HOT UPDATE的垃圾回收效率,有效减少多次更新元组后存储空间占用的问题。设计原理上Ustore存储引擎采用NUMA-aware的Undo子系统设计,使得Undo子系统可以在多核平台上有效扩展;同时采用多版本索引技术,解决索引清理问题,有效提升了存储空间的回收复用效率。Ustore存储引擎结合Undo空间,可以实现更高效、更全面的闪回查询和回收站机制,能快速回退人为“误操”为GaussDB提供了更丰富的企业级功能。Ustore基于Undo回滚段技术、页面并行回放技术、多版本索引技术、Xlog无锁落盘技术等实现了高可用高可靠的行存储引擎。

使用Ustore的优势

  • 最新版本和历史版本分离存储,相比Astore扫描范围小。去除Astore的HOT chain,非索引列/索引列更新,Heap均可原位更新,ROWID可保持不变。历史版本可批量回收,空间膨胀可控。
  • B-tree索引增加了事务信息,能够独立进行MVCC。增加了IndexOnlyScan的比例,大大减少回表次数。
  • 不依赖Vacuum进行旧版本清理。独立的空间回收能力,索引与堆表解耦,可独立清理,I/O平稳度更优。
  • 大并发更新同一行的场景,相对于Astore的ROWID会偏移,Ustore的原位更新机制保证了元组ROWID稳定,先到先得,更新时延相对稳定。
  • 支持闪回功能。

Ustore DML在修改数据页面时,也需要同步生成Undo,因此更新操作开销会稍大一些。此外单条Tuple扫描开销由于需要复制(Astore返回指针)也会大一些。

相关文档