yuan-er

导航

 

Ustore存储引擎

可获得性

本特性自503.1.0版本开始引入。

特性简介

In-place Update(原地更新)行存储引擎,简称Ustore。相比于Append Update(追加更新)行存储引擎,Ustore存储引擎可以提高数据页面内更新的HOT UPDATE的垃圾回收效率,有效降低多次更新元组后存储空间占用的问题。

Ustore存储引擎采用NUMA-aware的Undo子系统设计,使得Undo子系统可以在多核平台上有效扩展;同时采用多版本索引技术,解决索引清理问题,有效提升了存储空间的回收复用效率。

Ustore存储引擎结合Undo空间,可以实现更高效、更全面的闪回查询和回收站机制,能快速回退人为“误操作”,为GaussDB提供了更丰富的企业级功能。Ustore基于Undo回滚段技术、页面并行回放技术、多版本索引技术、xLog无锁落盘技术等实现了高可用高可靠的行存储引擎。

Ustore完全支持ACID特性:

  • 原子性(Atomicity):原子事务是一系列不可分割的数据库操作。在事务完成(分别提交或中止)之后,这些操作要么全部发生,要么全部不发生。
  • 一致性(Consistency):事务结束后,数据库处于一致状态,保留数据完整性。
  • 隔离性(Isolation):事务之间不能相互干扰。Ustore支持读已提交隔离级别,事务只能读到已提交的数据而不会读到未提交的数据,这是缺省值。
  • 持久性(Durability):即使发生崩溃和失败,成功完成(提交)的事务效果持久保存。

客户价值

  • 针对OLTP场景,实现Inplace-update,利用Undo实现新旧版本分离存储;降低类似于AStore存储引擎由于频繁更新或闪回功能开启导致的数据页空间膨胀,以及相应引起的索引空间膨胀。
  • 通过在DML操作过程中执行动态页面清理,去除VACUUM依赖,减少由于异步数据清理产生的大量读写IO。通过Undo子系统,实现事务级的空间管控,旧版本集中回收。

特性描述

Ustore的关键特性如下:

  • In-place Update存储模式:Ustore存储引擎将最新版本的“有效数据”和历史版本的“垃圾数据”分离存储。将最新版本的“有效数据”存储在数据页面上,并单独开辟一段Undo空间,用于统一管理历史版本的“垃圾数据”,因此数据空间不会由于频繁更新而膨胀,“垃圾数据”集中回收效率更高。
  • 回滚段设计:回滚段简称Undo,负责历史记录的插入、查询以及Undo空间的分配与释放等操作,北向对接Ustore,南向对接Buffer Pool。基于历史版本直接进行回收,实现了自治式的空间管理机制,减少了I/O时的性能抖动。同时实现了多个后台线程的并发访问,降低并发业务冲突竞争,从而提高性能。
  • 基于页面的并行回放技术:Ustore利用多线程技术加速日志回放,Startup线程从磁盘中读取xLog日志,把组装好的xLog记录通过Dispatcher线程分配给多个回放线程进行回放。Dispatcher线程基于页面号进行xLog记录的分配,分配更加均匀,各个回放线程并行执行回放,提高了回放的速度。
  • 闪回:数据库恢复技术的一环,能够使得DBA有选择性的高效撤销一个已提交事务的影响,将数据从人为的不正确的操作中进行恢复。在采用闪回技术之前,只能通过备份恢复、PITR等手段找回已提交的数据库修改,恢复时长需要数分钟甚至数小时。采用闪回技术后,通过闪回Drop和闪回Truncate恢复已提交的数据库Drop/Truncate的数据,只需要秒级,而且恢复时间和数据库大小无关。Ustore支持闪回表、闪回查询、闪回truncate、闪回drop,而且适用于分区表。
  • UBtree:与原有的Btree索引相比,索引页面增加了事务信息,使得UBtree索引具备MVCC能力以及独立过期旧版本回收能力。In-place Update引擎支持UBtree 索引,UBtree也是In-place Update引擎的默认索引类型。支持并行创建索引、索引空间管理算法优化,索引空间进一步压缩。

特性增强

无。

特性约束

Ustore设计几乎能够覆盖SQL和未来特性集,支持大多数的SQL标准,也支持常见的数据库特性。下面介绍Ustore的各种约束。

Ustore不支持以下特性:
  • 不支持串行化隔离级别。
  • 对于支持row movement的分区表,不支持并发更新或删除同一行操作。
  • 不支持的DDL功能:在线vacuum full/cluster、在线alter table(除新增字段、重命名等无需全量重写数据的操作外)、table sampling。
  • 不支持BRIN索引。
  • 不支持批量访存接口。不支持rowid语义。
  • 不支持单事务块或语句中既包含Astore表又包含Ustore表。
  • 数据表与回滚段要同为页式。

依赖关系

无。

 
posted on 2024-11-25 15:06  数据库笔记  阅读(184)  评论(0)    收藏  举报