八月二十日,华为云 GaussDB (for openGauss)正式发布了其主要内核新特性—— Ustore存储引擎,为企业级用户提供更高性能的数据库服务,进一步推动企业数字化转型。
八月二十日,华为云 GaussDB (for openGauss)正式发布了其主要内核新特性—— Ustore存储引擎,为企业级用户提供更高性能的数据库服务,进一步推动企业数字化转型。

Ustore存储引擎,又被称为In-place Update存储引擎(原地更新),是 GaussDB (for openGauss)内核新增的一种存储模式。GaussDB (for openGauss)内核早期版本使用的行存储引擎是 Append Update(追加更新)模式。追加更新对于业务中的增、删和 HOT (HeapOnly Tuple)Update(即在同一页面内更新)方面表现得很好,但是对于跨数据页面的非 HOTUPDATE场景,垃圾回收并不够高效,因此 Ustore存储引擎就应运而生了。
Ustore存储引擎设计原理
Ustore存储引擎将最新版本的“有效数据”与历史版本的“垃圾数据”分开存储。在数据页上存储最新版本的“有效数据”,并单独开辟一个 UNDO空间,以便对历史版本的“垃圾数据”进行统一管理,这样数据空间就不会因频繁更新而膨胀,而且“垃圾数据”的集中回收更加高效。Ustore存储引擎采用了NUMA-Aware的 UNDO子系统,使 UNDO子系统能够在多核平台上有效地扩展;同时,利用多版本索引技术,解决了索引清理问题,有效地提高了存储空间的回收利用效率。
Ustore存储引擎与 UNDO空间相结合,可以实现更高效、更全面的闪回查询和回收站机制,能够快速恢复人为“误操作”,为 GaussDB (for openGauss)提供更丰富的企业级功能。


Ustore数据存储示意图:最新的数据在原来的page页上,旧数据在 undo空间中单独管理
Ustore存储引擎的核心优势
高性能:对插入、更新、删除等各种负载的业务,性能和资源使用表现相对平衡。在频繁更新类的业务场景中,更新操作采用原地更新模式,可以获得更高、更平滑的性能表现。适合“短”(事务短)、“频”(更新操作频繁)、“快”(性能要求高)的典型 OLTP类业务场景。
高效存储:支持最大限度的原位更新,极大地节省空间;将回滚段、数据页面分开存储,具有更高效、更平稳的 IO使用能力; UNDO子系统采用了NUMA-ware设计,具有更好的多核扩展性, UNDO空间统一分配,集中回收,复用效率更高,存储空间使用更加高效、平稳。
细粒度资源控制: Ustore引擎以多维度的方式提供事务“监管”,可以根据事务的运行时长、单事务使用 UNDO空间大小、以及总体的 UNDO空间限制等方式来“监管”事务,防止异常、非预期内的行为发生,方便数据库管理员对数据库系统资源使用进行规范和约束。
Ustore存储引擎在频繁的数据更新情况下可以保持性能稳定,使得业务系统运行更平稳,适应更多业务场景和工作负载,尤其是对性能和稳定性要求较高的金融核心业务场景。
科技无极限,未来 GaussDB (for openGauss)将在 AI自主技术的基础上,对 Ustore存储引擎进行更加智能、安全和高效的技术优化,为客户提供更领先、更优质的数据库服务。