openGauss学习笔记-229 openGauss性能调优-系统调优-配置Ustore

文章目录

    • openGauss学习笔记-229 openGauss性能调优-系统调优-配置Ustore
      • 229.1 设计原理
      • 229.2 核心优势
      • 229.3 使用指导

openGauss学习笔记-229 openGauss性能调优-系统调优-配置Ustore

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

229.1 设计原理

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

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

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

229.2 核心优势

  • **高性能:**对插入、更新、删除等不同负载的业务,性能以及资源使用表现相对均衡。更新操作采用原地更新模式在频繁更新类的业务场景下可拥有更高、更平稳的性能表现。适应“短”(事务短)、“频”(更新操作频繁)、“快”(性能要求高)的典型OLTP类业务场景。
  • **高效存储:**支持最大限度的原位更新, 极大节约了空间;将回滚段、数据页面分离存储,具备更高效、平稳的IO使用能力,UNDO子系统采用NUMA-aware设计,具有更好的多核扩展性,UNDO空间统一分配,集中回收,复用效率更高,存储空间使用更加高效、平稳。
  • **细粒度资源控制:**Ustore引擎提供多维度的事务“监管”方式,可基于事务运行时长、单事务使用UNDO空间大小、以及整体UNDO空间限制等方式对事务运行进行“监管”,防止异常、非预期内的行为出现,方便数据库管理员对数据库系统资源使用进行规范和约束。

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

229.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, age 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
    
  2. 创建表。

    create table test(id int, age int, name varchar(10));
    
  • 创建索引的方式

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

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

    openGauss=# \d+  testTable "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+  testTable "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+  testTable "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
      

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

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

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

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2809725.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

北上广深数据分析岗位的薪资对比

目录 一、数据介绍及预处理 1、数据介绍 2、数据预处理 二、数据分析 1、岗位数量、薪资水平统计 3、企业维度岗位数量 4、top薪资岗位 三、划重点 少走10年弯路 之前跟大家分享过BOSS直聘上base北京的数据分析职位薪资数据分析,这次爬了北上广深四个城市的…

【MySQL面试复习】详细说下事务的特性

系列文章目录 在MySQL中,如何定位慢查询? 发现了某个SQL语句执行很慢,如何进行分析? 了解过索引吗?(索引的底层原理)/B 树和B树的区别是什么? 什么是聚簇索引(聚集索引)和非聚簇索引…

GEE数据集——全球无缝高分辨率温度数据集(GSHTD)

全球无缝高分辨率温度数据集(GSHTD) 本研究中介绍的全球无缝高分辨率温度数据集(GSHTD)为各领域的研究人员提供了全面而宝贵的资源。该数据集涵盖 2001 年至 2020 年,主要关注陆地表面温度 (Ts) 和近地面气温 (Ta)。GS…

camunda7流程平台技术架构概述

Camunda Platform 是一个基于 Java 的BPMN(流程引擎)、DMN(规则引擎)、CMMN(案例管理)的开源框架。主要组件是用 Java 编写的,主要专注于为 Java 开发人员提供在 JVM 上设计、实现和运行业务流程和工作流所需的工具&am…

【AIGC大模型】跑通wonder3D (windows)

论文链接:https://arxiv.org/pdf/2310.15008.pdf windows10系统 显卡:NVIDIA rtx 2060 一、安装anaconda 二、安装CUDA 11.7 (CUDA Toolkit 11.7 Downloads | NVIDIA Developer) 和 cudnn 8.9.7(cuDNN Archive | NVIDIA Developer)库 CUDA选择自定…

接口自动化测试用例如何设计

说到自动化测试,或者说接口自动化测试,多数人的第一反应是该用什么工具,比如:Python Requests、Java HttpClient、Apifox、MeterSphere、自研的自动化平台等。大家似乎更关注的是哪个工具更优秀,甚至出现“ 做平台的 &…

前后端分离Vue+node.js在线学习考试系统gqw7o

与其它应用程序相比,在线学习平台的设计主要面向于学校,旨在为管理员和学生、教师、院系提供一个在线学习平台。学生、教师、院系可以通过系统及时查看公告信息等。 在线学习平台是在Windows操作系统下的应用平台。为防止出现兼容性及稳定性问题&#xf…

多输入时序预测|WOA-CNN|鲸鱼算法优化的卷积神经网络时序预测(Matlab)

目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分程序: 四、完整程序数据下载: 一、程序及算法内容介绍: 基本内容: 本代码基于Matalb平台编译&…

无人集群试验评估现状及技术方法综述

源自:系统工程与电子技术 作者:赵蕊蕊, 于海跃, 游雅倩, 张涛, 陶敏, 姜江 “人工智能技术与咨询” 发布 摘 要 试验评估是促进装备系统作战能力生成和实战化应用的重要手段。无人集群依靠自组网实现复杂交互, 具备典型的智能性和涌现性, 开展无人集…

【大数据】Flink SQL 语法篇(四):Group 聚合

Flink SQL 语法篇(四):Group 聚合 1.基础概念2.窗口聚合和 Group 聚合3.SQL 语义4.Group 聚合支持 Grouping sets、Rollup、Cube 1.基础概念 Group 聚合定义(支持 Batch / Streaming 任务):Flink 也支持 G…

复制策略深入探讨

在之前的博客中,我们讨论了复制最佳实践和不同类型的复制,例如批量、站点和存储桶。但是,随着所有这些不同类型的复制类型的出现,人们不得不想知道在哪里使用哪种复制策略?从现有 S3 兼容数据存储迁移数据时&#xff0…

SV-6301 IP网络可视对讲报警柱简介

SV-6301 IP网络可视对讲报警柱简介 18123651365微信 功能特点: 1.全金属外壳,户外防风雨,坚固耐用,易于识别 2.单键呼叫,可通过软件指定呼叫目标,双向可视对讲广播喊话 3.终端内置扬声器和话筒眯头&…

GZ036 区块链技术应用赛项赛题第10套

2023年全国职业院校技能大赛 高职组 “区块链技术应用” 赛项赛卷(10卷) 任 务 书 参赛队编号: 背景描述 养老保险是对于老年人的最基本的生活保障。各种数据显示,当前的养老金市场规模庞大。2016年美国的养老金资…

SpringCloud-Docker原理解析

Spring Cloud和Docker的结合为微服务架构的部署和管理提供了强大的支持。本文深入剖析Spring Cloud与Docker的集成原理,从服务注册与发现、配置管理、负载均衡到容器化部署等方面展开详细解析。探讨Spring Cloud如何利用Docker容器技术实现服务的弹性伸缩&#xff0…

Linux系统中前后端分离项目部署指南

目录 一.nginx安装以及字启动 解压nginx 一键安装4个依赖 安装nginx 启动 nginx 服务 开放端口号 并且在外部访问 设置nginx自启动 二.配置负载均衡 1.配置一个tomact 修改端口号 8081端口号 2.配置负载均衡 ​编辑 三.部署前后端分离项目 1.项目部署后端 ​编辑…

SpringBoot3——核心特性——快速入门(三)

4、核心技能 4.1、常用注解 SpringBoot摒弃XML配置方式,改为全注解驱动 4.1.1、组件注册 Configuration、SpringBootConfiguration Bean、Scope Controller、 Service、Repository、Component Import ComponentScan 步骤: 1、Configuration 编写一个配置…

MFC由初值终值步长生成数值序列

matlab的冒号运算符可以生成数值序列; 下面来生成自己的数值序列; vc6新建一个对话框工程; 放几个控件;添加成员变量如下; void CMycolonDlg::OnButton1() {// TODO: Add your control notification handler code hereUpdateData(TRUE);double d1, d2;CString str1, …

Linux基础命令—进程管理

基础知识 linux进程管理 什么是进程 开发写代码->代码运行起来->进程 运行起来的程序叫做进程程序与进程区别 1.程序是一个静态的概念,主要是指令集和数据的结合,可以长期存放在操作系统中 2.进程是一个动态的概念,主要是程序的运行状态,进程存在生命周期,生命周期结…

YOLO算法改进Backbone系列之:EfficientViT

EfficientViT: Memory Effificient Vision Transformer with Cascaded Group Attention 摘要:视觉transformer由于其高模型能力而取得了巨大的成功。然而,它们卓越的性能伴随着沉重的计算成本,这使得它们不适合实时应用。在这篇论文中&#x…

ChatGPT/GPT4科研应用与AI绘图及论文高效写作

原文:ChatGPT/GPT4科研应用与AI绘图及论文高效写作 第一:2024年AI领域最新技术 1.OpenAI新模型-GPT-5 2.谷歌新模型-Gemini Ultra 3.Meta新模型-LLama3 4.科大讯飞-星火认知 5.百度-文心一言 6.MoonshotAI-Kimi 7.智谱AI-GLM-4 第二:…