openGauss学习笔记-53 openGauss 高级特性-Ustore

openGauss学习笔记-53 openGauss 高级特性-Ustore53.1 设计原理53.2 核心优势53.3 使用指导

openGauss学习笔记-53 openGauss 高级特性-Ustore

Ustore 存储引擎,又名 In-place Update 存储引擎(原地更新),是 openGauss 内核新增的一种存储模式。此前的版本使用的行存储引擎是 Append Update(追加更新)模式。追加更新对于业务中的增、删以及 HOT(HeapOnly Tuple)Update(即同一页面内更新)有很好的表现,但对于跨数据页面的非HOT UPDATE场景,垃圾回收不够高效。因此,Ustore 存储引擎应运而生。

53.1 设计原理

Ustore存储引擎将最新版本的“有效数据”和历史版本的“垃圾数据”分离存储。将最新版本的“有效数据”存储在数据页面上,并单独开辟一段UNDO空间,用于统一管理历史版本的“垃圾数据”,因此数据空间不会由于频繁更新而膨胀,“垃圾数据”集中回收效率更高。

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

Ustore存储引擎结合UNDO空间,可以实现更高效、更全面的闪回查询和回收站机制,能快速回退人为“误操作”,为openGauss提供了更丰富的企业级功能。

53.2 核心优势

  • 高性能:对插入、更新、删除等不同负载的业务,性能以及资源使用表现相对均衡。更新操作采用原地更新模式在频繁更新类的业务场景下可拥有更高、更平稳的性能表现。适应“短”(事务短)、“频”(更新操作频繁)、“快”(性能要求高)的典型OLTP类业务场景。

  • 高效存储:支持最大限度的原位更新, 极大节约了空间;将回滚段、数据页面分离存储,具备更高效、平稳的IO使用能力,UNDO子系统采用NUMA-aware设计,具有更好的多核扩展性,UNDO空间统一分配,集中回收,复用效率更高,存储空间使用更加高效、平稳。

  • 细粒度资源控制:Ustore引擎提供多维度的事务“监管”方式,可基于事务运行时长、单事务使用UNDO空间大小、以及整体UNDO空间限制等方式对事务运行进行“监管”,防止异常、非预期内的行为出现,方便数据库管理员对数据库系统资源使用进行规范和约束。

Ustore存储引擎可以在数据频繁更新场景下性能依旧稳如泰山,使业务系统运行更加平稳,适应更多业务场景和工作负载,特别是对性能和稳定性有更高要求的金融核心业务场景。

53.3 使用指导

USTORE与原有的ASTORE(Append Update)存储引擎并存。USTORE存储引擎屏蔽了存储层实现的细节,SQL语法和原有的ASTORE存储引擎使用基本保持一致,唯一差别是建表和建索引有些细微区别。

  • 创建表的方式

    USTORE存储引擎含有undo log,创建USTORE存储引擎表的时候需要提前在postgresql.conf中配置undo_zone_count的值,该参数代表的是undo log的一种资源个数,建议配置为16384,即“undo_zone_count=16384”,配置完成后要重启数据库。

    [postgresql.conf配置]

undo_zone_count=16384
*   **创建方式1:创建表时指定存储引擎类型**
create table test(id int, name varchar(10)) with (storage_type=ustore);
*   **创建方式2:GUC参数配置指定USTORE存储引擎**
  1. 数据库启动之前,在postgresql.conf中设置“enable_default_ustore_table=on”,默认指定用户创建表时使用USTORE存储引擎。

    [postgresql.conf配置]

enable_default_ustore_table=on
  1. 创建表。
create table test(id int, name varchar(10));
  • 创建索引的方式

    USTORE存储引擎使用的索引为UBtree, UBtree是专门给USTORE存储引擎开发的索引,也是该引擎目前唯一支持的索引类型。

    假定有如下test表结构,计划在test表的age列上增加一个UBtree索引。

openGauss=# \d+  test
     Table "public.test"
     Column |  Type                 | Modifiers | Storage  | Stats target | Description
    --------+-----------------------+-----------+----------+--------------+-------------
     id     | integer               |           | plain    |              |
     age    | integer               |           | plain    |              |
     name   | character varying(10) |           | extended |              |
*   **创建方式1:不指定创建索引类型,默认创建UBtree索引**
openGauss=# create index ubt_idx on test(age);
openGauss=# \d+  test
         Table "public.test"
         Column |  Type                 | Modifiers | Storage  | Stats target | Description
        --------+-----------------------+-----------+----------+--------------+-------------
         id     | integer               |           | plain    |              |
         age    | integer               |           | plain    |              |
         name   | character varying(10) |           | extended |              |
        Indexes:
         "ubt_idx" ubtree (age) WITH (storage_type=USTORE) TBALESPACE pg_default
        Has OIDs: no
        Options: orientation=row, storage_type=ustore, compression=no
*   **创建方式2:创建索引时使用using关键字指定索引类型为“ubtree”**
openGauss=# create index ubt_idx on test using ubtree(age);
openGauss=# \d+  test
         Table "public.test"
         Column |  Type                 | Modifiers | Storage  | Stats target | Description
        --------+-----------------------+-----------+----------+--------------+-------------
         id     | integer               |           | plain    |              |
         age    | integer               |           | plain    |              |
         name   | character varying(10) |           | extended |              |
        Indexes:
         "ubt_idx" ubtree (age) WITH (storage_type=USTORE) TBALESPACE pg_default
        Has OIDs: no
        Options: orientation=row, storage_type=ustore, compression=no

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

image.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,039评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,223评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,916评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,009评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,030评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,011评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,934评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,754评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,202评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,433评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,590评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,321评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,917评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,568评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,738评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,583评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,482评论 2 352

推荐阅读更多精彩内容