SlideShare a Scribd company logo
https://opengauss.org
openGauss 技术主打胶片
https://opengauss.org
openGauss 目录
 openGauss 架构
 openGauss 核心技术及实践
 openGauss 开源社区介绍
 openGauss 未来技术发展方向
https://opengauss.org
华为计算商业策略:硬件开放、软件开源、使能合作伙伴
华为
伙伴
使能合作伙伴
用三年时间让90%的软件跑在鲲鹏上
• 支持合作伙伴应用和软件的迁移
软件开源
将软件利润重分配给新ISV,重新分配软件价值链
• 开源AI 框架MindSpore
• openLooKeng开源数据虚拟化引擎
• openGauss开源数据库(OLTP单机版),构筑鲲鹏数据库生态
• openEuler开源操作系统,使能伙伴操作系统商业发行
硬件开放
降低整机门槛,打破现有格局,重新分配整机价值链
• 提供鲲鹏主板,SSD/网卡/RAID卡等部件,使能伙伴发展自有
品牌部件、服务器和PC等
华为聚焦 • 鲲鹏处理器研发,全场景芯片,鲲鹏云服务
主板
操作系统
应用
华为云
处理器
AI框架
部件
整机
数据库
中间件
https://opengauss.org
华为GaussDB演进历程
• G行核心数据仓库、DWS华为云商用
• Z行核心业务系统替换商业数据库
• 支撑公司内部40+主力产品,在全
球70+运营商规模商用3万+套,服
务全球20+亿人口。
• 2019.5.15 GaussDB全球发布
• 构筑合作伙伴生态
• 兼容行业主流生态,完成金融等行业
对接
• 2020.6.30 openGauss开源。
2001 - 2011 2011 - 2019 2019-2020
内部自用
产品化
 企业级内存数据库
云 & 开源
2021~
• 分享企业级数据管理能力
• 引领生态建设
• 促进数据库教育事业发展
内部自用孵化阶段  联创产品化阶段 共建生态
生态构建
https://opengauss.org
openGauss产品:商用+自用+开源相结合,内核将长期演进
客户
统一内核
云数据库服务上线 计算产业生态
GaussDB(for openGauss)云服务
(分布式交易型数据库) openGauss
终
端
云
华为内部业务
公有云/混合云
运
营
商
合作伙伴
内
部
IT
GaussDB Kernel开发项目
高性能 高可用 高安全
openGauss系
商业发行版
金融 政府
安平 运营商 大企业
openGauss
华为公司内部配套、公有云的GaussDB、开源openGauss 共代码基线
高智能
https://opengauss.org
openGauss社区:持续开放社区治理架构,共建、共享、共治
开放代码
2020年6月 2020年7月
开源社区
2021年
共治共享
• 代码正式对外开放
• Gitee和GitHub平台托管
• 开源社区正式上线
• 成立技术委员会
• 成立社区理事会
• 与产业线链上下游伙伴
共建、共治、共享
数据库主流开
源社区
HC2019
openGauss
宣布开源
https://opengauss.org
openGauss 定位
价值
关键特性
易运维
高性能 高可用 & 高安全 全开放
openGauss提供面向多核的极致性能、全链路的业务和数据安全、基于AI的调优和高效运维的能
力,全面友好开放,携手伙伴共同打造全球领先的企业级开源关系型数据库;
把企业级数据库能力带给用户和伙伴
 业务无忧,故障切换时间
RTO<10s;
 基于Paxos协议的高可用
 精细安全管理:细粒度访
问控制、多维度审计;
 全方位数据保护:存储&
传输&导出加密、动态脱
敏、全密态计算、防篡改;
 AI自治运维:参数推荐、
慢SQL诊断、索引推荐、
趋势预测及异常检测等;
 WDR报告:多维性能自监
控视图,实时掌控系统性
能表现;
 库内AI引擎:通过简易
SQL接口提供库内机器学
习算法的训练和推理;
 两路鲲鹏性能150万tpmC;
 面向多核架构的并发控制
技术;
 NUMA-Aware数据结构;
 SQL-Bypass智能选路执行
技术;
 面向实时高性能场景的内
存引擎;
 Inplace-Update引擎
 采用木兰宽松许可证协
议,允许对代码自由修
改,使用、引用;
 数据库内核能力完全开
放;
 开放运维监控、开发和
迁移工具;
 开放伙伴认证、培训体
系及高校课程
①
②
③
④ ⑤ ⑥
https://opengauss.org
openGauss 目录
 openGauss 架构
 openGauss 核心技术及实践
 openGauss 开源社区介绍
 openGauss 未来技术发展方向
https://opengauss.org
openGauss VS. PG架构和关键技术对比
openGauss架构 PostgreSQL架构
关键差异化因素 openGauss PostgreSQL
运行时模型 执行模型
线程池模型,高并发连接切换代价小、内存损耗小,
执行效率高,一万并发连接比最优性能损耗<5%
进程模型,数据库进程通过共享内存实现通讯和数据共享。每个进
程对应一个并发连接,存在切换性能损耗,导致多核扩展性问题。
事务处理机制
并发控制
64位事务ID,使用CSN解决动态快照膨胀问题;
NUMA-Aware引擎优化改造解决“五把大锁”
事务ID回卷,长期运行性能因为ID回收周期大幅波动;存在“五把
大锁”的问题,导致事务执行效率和多处理器多核扩展性存在瓶颈
日志和检查点 增量Checkpoint机制,实现性能波动<5% 全量checkpoint,性能短期波动>15%
鲲鹏NUMA NUMA改造、cache-line padding、原生spin-lock NUMA多核能力弱,单机两路性能TPMC <60w
数据存储与组织 多引擎 行存、列存、内存引擎,在研DFV存储和原位更新 仅支持行存
查询优化器
优化器 支持SQL Bypass, CBO吸收工行等企业场景优化能力 支持CBO,复杂场景优化能力一般
SQL解析
ANSI/ISO标准SQL92、SQL99和SQL2003
和企业扩展包
ANSI/ISO标准SQL92、SQL99和SQL2003
存储引擎
SQL Engine
SQL接口 SQL解析器 SQL优化器 并行执行
AI自调优 ABO优化器 In-DB ML
可扩展功能
框架
2020.06发布
后续规划
数据库线程池
MVCC行
存储引擎
内存引擎 列存储引擎
数据库主进程
数据库后台进程
Writer子进程
日志写子进程
Vacuum子进程
统计收集子进程
Ckp子进程
归档子进程
多进程共享内存池
数据
库进
程 n
…
数据缓存区 Xlog缓冲区
数据
库进
程 1
https://opengauss.org
openGauss 体系结构
客户端
链接驱动
(JDBC/ODBC/Libpq)
postgresql.conf
pg_hba.conf
pg_ident.conf
gaussdb.state
Archived WAL
pg_audit
pg_replslot
pg_perf
base global pg_tblspc
pg_xlog pg_clog pg_csnlog
pg_twophase pg_serial pg_multixact
Database
GaussMaster线程
gaussdb线程
gaussdb线程
gaussdb线程
gaussdb线程
gaussdb线程
………………………
pagewriter线程 bgwriter线程 walwriter线程 checkpointer线程
work_mem work_mem work_mem work_mem
………….
wal buffer maintain_work_mem temp buffer
share buffer cstore buffer MOT
Instance 后台辅助线程
jemalloc_bg_thd
Stat_collector
Auditor
LWLockMonitor
sysLogger
Jobworker
percentworker
snapshotworker
WalSender
WalReceiver
AutoVacLauncher
………………….
https://opengauss.org
openGauss 逻辑模块
线程管理
业务处理
线程池
客户端驱动 CLI JDBC ODBC
日志写线
程
数据页写
线程
检查点线
程
统计线程
日志发送
线程
日志接收
线程
清理线程
管理线程
安全管理
身份管理
访问控制
通信加密
审计
归档线程
通用组件
数据字典
内存管理
数据类型
内置函数
控制命令信号处理
通信协议处理
通信管理
SQL执行
SQL解析 SQL查询重写 SQL优化
SQL引擎
DDL命令处理 存储过程解析
大内存缓冲区管理
NUMA化数据结构
内存表
索引管理 并行日志回放
锁管理器
列存
空闲空间管理
日志管理
增量检查点
CSN快照
行存(本地更新)
存储引擎
行存(回滚段
更新)
存储管理适配
工具
客户端命
令行工具
数据库实
例控制工
具
物理备份/
恢复工具
逻辑导入
导出工具
OM安装
CM监控
硬件&OS平台 ARM+Open Euler X86+CentOS
内核
公共能力
OM &CM
慢SQL诊断 趋势预测
AI
参数推荐 索引推荐
全密态数据
库
账本数据
库
库内AI引擎
https://opengauss.org
openGauss SQL命令处理流程
查询解析
查询重写
代价估算 路径生成
查询执行
数据读取
SQL处理流程
事务 日志 复制
逻辑优化
物理优化
链接管理 用户认证
APP应用
查询解析
查询重写
代价估算 路径生成
查询执行
数据读取
SQL处理流程
事务 日志 复制
逻辑优化
物理优化
链接管理 用户认证
APP应用
双机复制
https://opengauss.org
openGauss SQL引擎
query_string
语法分析
Token, keyword ParseTree
语义分析
QueryTree
<Query1>:
create table t (
c1 int not null default 4,
c2 double,
c3 varchar(20)
)
with (orientation=row)
partition by range(c3) (
partition p1 values less than
(‘abc’),
partition p2 values less than
(‘def’)
);
Token: create, table, t, (,
c1, int, not, null, default,
4, ,, …
Keyword: create, table,
int, double, with, …
String: “abc”, “def”
struct CreateStmt
{
NodeTag type =
T_CreateStmt;
RangeVar *relation = {struct(t)};
List *tableElts = List(c1, c2, c3);
List *inhRelations = NULL;
…
PartitionState *partTableState
= {struct PartitionState};
…
}
struct Query
{
NodeTag type=T_Query;
CmdType = CMD_UTILITY;
QuerySource =
QSRC_ORIGINAL;
uint32 queryid = 0;
…
utilityStmt = CreateStmt;
…
List *cteList = NULL;
List *rtable = NULL;
…
}
分析器:gram.y
CreateStmt:
CREATE OptTemp TABLE qualified_name
'(‘ OptTableElementList ')‘ OptInherit
OptWith
OnCommitOption OptCompress …
{
CreateStmt *n =
makeNode(CreateStmt);
n->relation = $4;
n->tableElts = $6;
…
}
语义转换:
transformStmt
transformXXX
词法分析器:
scan.l
kwlist.h
词法分析
核心文件:
Gram.y
Scan.l
Kwlist.h
Check_keywords
.pl
优化器
PlanTree
https://opengauss.org
openGauss 查询优化
统计信息
行数估算
代价估算
路径搜索
计划生成
物理优化的依据,来
源于表信息的统计
代价估算的基础,来源
于基表统计信息的推算
根据关系的行数,推算
出当前算子的执行代价
依据若干算子的执行代
价,通过求解最优路径
进行路径搜索
将查询的执行路径转换
成PlanTree能够输出给
执行器做查询执行
物理优化的技术点:
1、统计信息模型 Table/Column-Level statistics
描述基表数据的特征包括唯一值、MCV值等,用于行数估
算
2、行数估算 Row Estimation
估算基表baserel、Join中间结果集joinrel、Aggregation
中结果集大小,为代价估算做准备
3. 代价估算 Cost Estimation
根据数据量估算不同算子执行代价,各算子代价之和即为
计划总代价
4. 路径搜索 Access Path Generation
通过求解路径最优算法(e.g. 动态规划、遗传算法)处理
连接路径搜索过程,以最小搜索空间找到最优连接路径
https://opengauss.org
openGauss 执行引擎
Scan
(Seq)
Sort
Merg
e Join
Scan
(Inde
x)
Union
Loop
Join
Scan
(Seq)
Scan
(Seq)
关系数据库本身是对关系集合Relation的运算操作,执行引擎作为运算
的控制逻辑主要是围绕着关系运算来实现的,算子可以分成以下几类:
1. 扫描算子(Scan Plan Node)
扫描节点负责从底层数据来源抽取数据,数据来源可能是来自文件
系统,也可能来自网络。一般而言扫描节点都位于执行树的叶子节
点,作为执行的数据输入来源,典型代表SeqScan、IndexScan、
SubQueryScan
关键特征:输入数据、叶子节点、表达式过滤
2. 控制算子(Control Plan Node)
控制算子一般不映射代数运算符,是为了执行器完成一些特殊的流
程引入的算子,例如Limit、RecursiveUnion、Union
关键特征:用于控制数据流程
3. 物化算子(Materialize Plan Node)
物化算子一般指算法要求,在做算子逻辑处理的时候,要求把下层
的数据进行缓存处理,因为对于下层算子返回的数据量不可提前预
知,因此需要在算法上考虑数据无法全部放置到内存的情况,例如
Agg、Sort
关键特征:需要扫描所有数据之后才返回
4. 连接算子(Join Plan Node)
这类算子是为了应对数据库中最常见的关联操作,根据处理算法和
数据输入源的不同分成MergeJoin,SortJoin,HashJoin。
关键特征:多个输入
https://opengauss.org
openGauss 存储引擎
查询执行
Heap&Index Access
锁管理器 缓冲区管理器
事务管理器 Catalog 数据字典
存储管理器
文件管理器
日志管理器
磁盘
Redo日志文件
https://opengauss.org
openGauss 目录
 全密态等值查询原理
 线程池原理
 极致RTO优化
 增量检查点原理
 openGauss 架构
 openGauss 核心技术及实践
 NUMA多核优化
 行列混合引擎
 openGauss 开源社区介绍
 openGauss 未来技术发展方向
 MOT内存表原理
 AI4DB自治数据库
 高性能
 可用性
 安全性
 易运维
 Inplace Update引擎
 账本数据库
 Paxos协议自选主
 DB4AI库内AI引擎
https://opengauss.org
openGauss CPU体系架构发展历史
1974 1975 2004 2015 2019
专用芯片:一类应用做架
构优化从而实现更好的能
效比。
1965
 摩尔定律1:晶体管
数量随着尺寸缩小
按接近平方关系增
长(每年2X)
 Dennard登纳德定
律:功率的使用与面
积成比例,相同面积
下功耗不变。
摩尔定律和Dennard登纳德定律:单位
面积晶体管数不断增加而功耗保持不变。
 摩尔定律2:每
两年增加一倍。
 Dennard登纳德定律失效:单位晶体管
功耗改进速度比尺寸缩小速度慢。
 奔4的性能是486的6倍,功耗却是23倍。
 无法保持更多的晶体管,同时更低的功耗,
从单核转向多核。
 阿姆达尔定律:: 提升一个系统的一个
部分的性能对整个系统有多大影响。
 多核架构的速度提升取决于程序中有多少
部分无法并行执行,多核对单个系统的性
能提升是有上限的。
 摩尔定律失效。
NUMA化CPU架构:2003/AMD /Opteron; 2007/x86/Tukwila。
https://opengauss.org
openGauss NUMA CPU结构
node/ node
distances
0 1 2 3
0 10 16 32 33
1 16 10 25 32
2 32 25 10 16
3 33 32 16 10
1、NUMA:Non Uniform Memory Access。
2、NUMA距离:NUMA node的处理器和内存块的物理
距离。通过numactl工具可以查询到CPU访问的距离信息。
https://opengauss.org
openGauss NUMA CPU架构数据库的并发问题
1、数据库是高并发,数据访问冲突严重的一些软件系统。数据库领域图灵奖获得者Stonebraker等人于2014年在 VLDB发表的论
文:Staring into the abyss: an evaluation of concurrency control with one thousand cores,传统数据库的事务处理机制无
法有效利用数十到上百个核处理能力。
2、数据库中存在很多锁,这些锁是性能瓶颈点:Clog、WALInsert、WALWrite、ProcArray、XidGen。
https://opengauss.org
openGauss NUMA 内核数据结构
DIE1
DIE4
DRAM
DRAM
DIE2
DIE3
DRAM
DRAM
hydra
hydra
1
2
3
4
Micro partition Micro partition
Micro partition Micro partition
GaussDB process GaussDB process
GaussDB process GaussDB process
1、线程绑核,避免线程在核间偏移。
2、NUMA化数据结构改造,减少跨核访问。
3、数据分区,减少线程访问冲突。
4、算法调整,减少单点瓶颈。
5、借助ARM原子指令,减少计算开销。
https://opengauss.org
openGauss NUMA 线程绑核
整改前:线程随机调度
整改后:绑核调度
线程
CPU核
NUMA Node
1、网络中断和后台业务线程分开绑核。
2、不同业务线程分开绑核。
https://opengauss.org
openGauss NUMA 化数据结构
加锁
拷贝日志
释放锁
Disk
整改前:串行加锁拷贝日志 整改后:并行异步拷贝日志
https://opengauss.org
openGauss NUMA数据分区
CLOG 日志即事务提交日志,用来记录事务的最终状态,是XLOG日志的辅助,用来加速通过日志判断事务状态的过程,存在四种事务状态,
即 : IN_PROGRESS、COMMITED、ABORTED、SUB_COMMITED,每条日志占2 bit,clog 需要存储在磁盘上,一个页面(8k), 按照
页面分partition加锁。
整改前:全局唯一的CLOG缓冲池 整改后:分区的CLOG缓冲池
原方案:CLOG的日志缓冲池在共享内存中且全局唯一,名称为 “CLOG
Ctl”,各工作线程使用由线程局部变量 ClogCtl 来指向该资源,在高并发的
场景下,该资源的竞争成为性能瓶颈
整改后:按pageno将日志均分到多个共享内存的缓冲池中,由线程局部对象的数
组 ClogCtlData来记录,名称为“CLOG Ctl i”,同步增加共享内存中的缓冲池
对象及对应的全局锁。
https://opengauss.org
openGauss CSN快照
20%
60%
7%
13%
TPCC Lock Wait Distribution
GetSnapshotData
ProcArrayLock
LW_SHARED
ProcArrayEndTransaction
ProcArrayLock
LW_EXCLUSIVE
XLogFlush
WALWriteLock
LW_EXCLUSIVE
WALInsertLock
1、事务启动获取事务快照,需要获取ProcArrayLock。
2、事务结束,清理事务状态快照时,需要获取ProcArrayLock。
3、并发连接增大时导致全局事务管理器上获取的快照变大。
1、上图中每个非只读事务在运行过程中会取得一个XID,在
事务提交时会推进CSN,同时会将当前CSN与事务的XID映
射关系保存起来。
2、上图中,棕色竖线表示取snapshot时刻,如果不使用
CSN方案,那么棕色竖线对应snapshot的集合应该是
{2,4,6}。
如果采用CSN方案,会获取当前的CSN值,也就是3,事务
TX2、TX4、TX6、TX7、TX8的CSN分别为4、6、5、7、
8,对于该snapshot而言,这几个事务的修改都不可见。
整改前:活跃事务ID快照 整改后:CSN提交快照
https://opengauss.org
openGauss 64位事务ID
1、32位事务ID机制中可以将事务ID理解为一个循环可重用的
序列串。对其中的任一普通XID来说,都有20亿个相对它来说
过去的事务,和20亿个未来的事务。可以看出同一个数据库中
存在的最旧和最新两个事务之间的年龄是最多是2^31。
为了避免这种问题,需要Vacuum freeze定期的对最旧事务进
行回收,以推进该值;当事务ID的差值超过2^31会造成业务
中断,强制全库回收事务ID。
2、TP场景事务ID增长迅速,导致32bit事务ID会频繁发生回卷
3、Vacuum机制来回收过老事务ID,效率低,IO开销大。
4、事务ID回收不及时,会导致停库对业务造成严重影响。
1、解决事务ID回卷问题,防止频繁vacuum对系统造成性能影响
2、64位事务ID特性平滑升级,对现有业务无影响,高效率,低风险。
3、老版本数据页面在页面头部增加xid_base(64bit), 避免对页面中的
tuple进行修改。
整改前:32位事务ID 整改后:64位事务ID
页面头部增加xid base
https://opengauss.org
openGauss NUMA ARM原子指令
CAS(Compare and Swap),原子操作,用于多线程操作下,确保数据写入的一致性;
在多线程编程中实现不被打断的数据交换操作,避免同时改写某一数据时由于执行顺序不确定性及中断的不可预知性导致数据不一致问题。
CAS实现方式一:由ldxr和stlxr指令来实现
CAS实现方式二:由casal一条指令来实现
四个指令1个指令,提升执行效率;
https://opengauss.org
openGauss NUMA 多核优化结果
服务器 项目 型号 数量
Taisha
n 2280
V2
CPU
Kunpeng
920/64cores/
64threads
2(每个cpu包含
64cores,共计
128cores)
主频 2.6Ghz ---
内存
DDR4,2933M
T/s
512G
网络 Hi1822
硬盘 NVME;3.2T 4
OS
openEuler-
20.03-LTS
1
基于鲲鹏920,TPCC测试单机性能
达到150W tpmC。
CPU运行效率接近95%。
https://opengauss.org
openGauss 大并发业务场景问题
用户
响应时间
用户
吞吐量
1、连接数越多,后台需要的线程数越多,资源开销越大。
2、在CPU核数固定的情况下,OS调度开销大,不同线程访问数据库资源冲突大。
https://opengauss.org
openGauss 大并发问题解决方案
应用
连接池
服务器连接
线程池
1、连接池一般在客户端设置,连接池避免了连接的频繁创建和销
毁。连接复用。
2、线程池在数据库服务器上配置,控制数据库服务器活动线程数
目。线程复用。对系统的业务起到流控作用,防止出现雪崩。
3、在高并发场景下,可以将连接池和线程池结合起来使用。
https://opengauss.org
openGauss 线程池实现原理
ThreadPoolControler ThreadSessionControler
ThreadPoolGroup
ThreadPoolGroup
ThreadPoolListener
ThreadPoolListener
ThreadPoolWorker
ThreadPoolWorker
ThreadPoolWorker
ThreadPoolWorker
session session
session
session
1) 客户端向数据库发起连接请求,PostMaster线程接收到连接请求并被唤醒求。PostMaster
线程创建该连接对应的socket,以及创建session数据结构。遍历当前所有的Thread
Group,找到当前活跃session数量最少的Thread Group,并把最新的session分发给该
Thread Group,加入到该Thread Group 的epoll列表之中。
2) Thread Group的listener线程负责监听epoll列表中所有的客户连接。
3) 客户端发起任务请求,listener线程被唤醒。Listener线程检查当前的Thread Group 是否
有空闲worker线程,如果有,则把当前session分配给该worker线程,并唤醒该worker线
程;如果没有,则把该session放在等待队列之中。
4) worker线程被唤醒后,读取客户端连接上的请求,执行相应请求,并返还请求结果。在一
次事务结束(提交、回滚),或者事务超时退出的时候,worker线程的一次任务完成。
worker线程将session返回给listener线程,listener线程继续等待该session的下一次请
求。worker线程返还session后,检查session等待队列,如果存在等待响应请求的
session,则直接从该队列中取出新的session并继续工作;如果没有等待响应的session,
则将自身标记为free状态,等待listener线程唤醒。
5) 客户端断开连接时,listener线程被唤醒,关闭连接,同时清理session相关结构,释放内
存和fd等资源。
https://opengauss.org
openGauss 线程池下大并发性能结果
用户
响应时间
用户
吞吐量
1、高并发下保持性能的稳定性。
https://opengauss.org
openGauss 数据库事务
 事务的ACID特性
 原子性(Atomicity):事务所包含的操作要么全部完成,要么什么也没做。
 一致性(Consistency):在一致性数据库上执行事务后,数据库仍需保持为一致性的状态。
 隔离性(Isolation):没有结束的事务在提交之前不允许将其结果暴露给其它事务。
 持久性(Durability):当一个事务的结果提交后,系统保证该结果不会因以后的故障而丢失。
 范例:银行转账(小张,小李都给小王转账)
小王账号100 ¥
时间t
小张转帐200 ¥
t1时刻
t3时刻
t5时刻
服务器故障
t2时刻
小李转帐300 ¥
小张取消转帐,
回滚
t4时刻
小李转帐结束,
提交
小王账号?¥
 ACID保障服务器重启后,小王的账号为400 ¥。
 原子性保障:小张取消转账后,小王账号仍然为100 ¥。
 一致性保障:小李的账号少300 ¥,小王账号多300 ¥。保证他们两个账
号的总和不变。
 隔离性保障:小张转账的200 ¥对小李不可见,不然结果为700 ¥。
 持久性保障:服务器故障重启后,小李的转帐仍然是成功的。
 小王的账号始终为400 ¥。
https://opengauss.org
openGauss 数据库事务机制
DATA BUFFER
REDO BUFFER
数据文件
REDO日志文件
数据
CHECKPOINT1
CHECKPOINT1
更新1 更新2 更新3
1
1 2 3
2 3
1 2 3
COMMIT
1、事务的持久性(Durability)主要
通过预写式日志WAL算法实现。在事
务提交时,采用预写式日志方式,把
REDO日志写到磁盘。
2、检查点:将脏缓冲队列上的全部
数据写出到数据文件。
https://opengauss.org
openGauss 增量检查点技术原理
全量检查点
CheckPoint Thread
Buffer Pool
Table File Control File
增量检查点
PageWriter Thread
Dirty Page Queue
Table File Control File
CheckPoint Thread
Recovery LSN
1. 每一个脏数据库块都会被记录到脏页队列,按照第一次对此数据块修改时日志的LSN顺序来排列,如果一个数据块进行多
次修改,该数据块在脏页队列中的顺序并不会发生变化。
2. 在执行增量检查点时,把一定LSN之前的脏页刷盘,不需要把所有dirty buffer 全部写到磁盘。
https://opengauss.org
openGauss 增量检查点IO平稳
1. IO均分到各个阶段,性能更加平稳。
2. Checkpoint点效率和频率更高,减少宕机恢复时间,降低RTO。
https://opengauss.org
openGauss 企业应用场景OLTP&OLAP
OLAP数据库
数据仓库
Data Warehouse
ETL
ETL
OLTP数据库
BI
业务系统
财务系统
销售系统
客服系统
数据集市
Data mart
数据集市
Data mart
ETL
ETL
ETL
数据挖掘
Data
Mining
统计报表
Scoring
多维分析
挖掘分析/预测
即席查询及
其它应用
知识/规则
1、联机事务处理(OLTP): 存储/检
索业务应用中活动的数据以支撑日常
的业务活动;
2、联机分析处理(OLAP):存储历史
数据以支撑复杂的分析操作,侧重决
策支持;
https://opengauss.org
openGauss 数据库 OLTP&OLAP业务特征
对比维度
数据库类型
OLTP OLAP
用户 操作人员,低层管理人员 决策人员,高级管理人员
功能 日常操作处理 分析决策
事务支持 强事务语义 无/弱事务语义
查询 点查询为主 汇总,关联等复杂查询
插入/更新
大量插入/更新操作,
每次操作1条或很少记录
以批量入库(插入)为主,
很少或没有更新操作
数据内容 管理当前数据 管理历史数据
数据大小 通常几GB到几TB 通常几百GB到几PB
https://opengauss.org
openGauss 行存&列存
Emp_no Dept_id Hire_date
1 1 2001-01-01
2 1 2002-02-01
3 1 2002-05-01
1 1 2001-01-01
3 1 2002-05-01
2 1 2002-02-01
2001-01-01 2002-02-01 2002-05-01
1 1 1
1 2 3
行存表
列存表
行存(Row Store ) 列存(Column Store)
容易修改记录 修改记录代价高,写一条记
录时需要访问多次IO
读取数据代价高,可能读入
不需要的列
可以只读取相关的数据
不同记录重复率低,压缩率
低
同一列重复值高,压缩率高
https://opengauss.org
openGauss 行列混合引擎
Columnar storage
Row
storage
Vector Engine Row Engine
R2V
V2R
Query Engine
Native
interface
Native
interface complimentary
interface
New libpq
protocol
Existing libpq
protocol
Storage Engine
行列混合引擎
表级别指定行存/列存,根据不同的场景选择不同的存储类型。
场景 行存 列存 优选
点查询
B+树索引,直接定
位到行(页)
粗粒度索引,定位到CU 行存
数据更新
• 支持行级别锁
• 支持CU级别并发
更新
支持CU级别锁,支持
CU级别并发更新
行存
统计分析 Pipeline执行
天然和向量化引擎对接,
降低CPU Cache Miss
和指令Miss,效率成倍
提升
列存
批量加载 并行批量加载 压缩率高,IO量更小
列存
https://opengauss.org
openGauss 行列混合IoT场景
风力发电机1
生产厂商:West*
风场:托里
型号:V110_20
ID:7AD45EE
风力发电机2
生产厂商:G*
风场:达坂城
型号:G_20_116
ID:92CE73A1
功率
功率
风速
风速
1800 1912
1810 1974
11.24 12.12
11.16 11.85
时序数据
标签 指标项 时间戳和指标值
2020-1-26
00:00:03
2020-1-26
00:00:06
行存表 列存表
https://opengauss.org
openGauss 金融风控场景
移动支付占比70%,
网络伪冒成上升趋势
小额、高频交易量同比
上升50%以上,传统
风控系统无法快速水平
扩展应对压力
2017年个人数据大量
泄漏1250多起,加剧
伪卡欺诈和典型诈骗
交易主体风险 账户盗用
身份欺诈
信用风险
交易自身风险
商户信用
用户信用
授信欺诈
交易违规
交易欺诈
异常交易
反洗钱
恶意交易
1 信用卡审批
2. 贷款审批
3. 交易反欺诈
4. 反洗钱
行为
多业务、多
维度、多渠
道、事中风
控
风控
需求
金融领域风控平台的要求是高并发,低时延,可业务编程。
https://opengauss.org
openGauss MOT 风控实时处理
“规则+模型”的实时决策
M
Q
RTDExecutor(决策调度)
M
Q
扩
展
报
文
报
文
处
理
规
则
处
理
n
……
HTTP
交易/行为数据
UserProfile
POC
批次
数据插入 变量执行 规则执行
数据过滤
IMDB决策引擎
窗口变量 模式匹配
评分引擎
模型评分
决策引擎
结
果
输
出
RTMQ/kafka
ALB
openGauss MOT
模型管理
RTDScoring
i o
模型插件
过
滤
规
则
批
次
变
量
实时查
询变量
动态扩
展变量
模型衍
生变量
模
型
评
分
https://opengauss.org
openGauss 磁盘引擎问题
1、图灵奖获得者Micheal Stonebraker:磁
盘架构70%左右指令在等待锁/闩,仅不到
30%CPU做有用功。
2、内存数据库在保证ACID的前提下,以
Lock-free无锁方式实现事务处理,能有效规
避磁盘架构缺点:
CPU利用率高,一般可达80%以上,提升硬
件投资回报;
时延低,没有锁/闩等待,事务处理延迟低,
满足实时业务;
https://opengauss.org
openGauss MOT原理
优势1:性能高、CPU利用率高、延迟低
优势2:生态好、兼容好,功能完整
① 高度优化的全内存免锁存储引擎
② 基于全内存优化实现的免锁索引
③ 高度优化的并发访问控制
④ 针对NUMA优化的内存管理,预缓存对象池
⑤ 针对NUMA高度优化的组提交
① 有效利用openGauss现有的查询引擎,
兼容PG生态
② 兼容PG原生FDW和索引,SQL标准兼容
度高,功能完整
③ 除PG原生FDW之外,还支持存储过程、
用户定义函数等功能
openGauss的融合内存引擎MoT架构
openGauss免锁,高吞吐,低时延
https://opengauss.org
openGauss MOT性能
TPCC Throughput on ARM-128 Cores
0.58
1.07
1.48
1.84
2.41
2.67 2.71
0.330
0.586
0.7810.863 1.019 1.079 1.106
0.00
0.50
1.00
1.50
2.00
2.50
3.00
0 100 200 300 400 500 600
TPMC(MILLIONS)
CONNECTIONS
MOT Vs. Disk
ARM-128 W=512
MOT Disk
TPCC Throughput on X86-72 vCores
0.023
0.966
1.371
1.862 1.951 1.981 2.006
0.014
0.653 0.792 0.815 0.701 0.693 0.687
-
0.500
1.000
1.500
2.000
2.500
0 50 100 150 200 250 300 350
TPMC(MILLIONS)
CONNECTIONS
MOT Vs. Disk
X86-72 W=512
MOT Disk
TPCC Latency
NEW_ORDER PAYMENT ORDER_STATUS STOCK_LEVEL DELIVERY_BG
Disk 0.024 0.012 0.007 0.012 0.051
MOT 0.01 0.004 0.002 0.003 0.02
0
0.01
0.02
0.03
0.04
0.05
0.06
SECONDS
TPCC TRANSACTION
Disk MOT
Basic SQL Speed Up
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
Insert Update Lookup Scan Delete
MOT
VS.
DISK
BASIC SQL QUERIES
x86 ARM
https://opengauss.org
In-place Update引擎
0th
Page
(8K Bytes)
Page
(8K Bytes)
……
Page
(8K Bytes)
1th N th
Page Header
Tuple1
Tuple2
…….
Tuple2’
Item1 Item2 ……
Item数组扩展方向
Tuple放置方向
Free Space
pd_lower
pd_upper
Page Header
Tuple1
Tuple2’
(slot1)
…….
Slot1 Slot2 Item1
Item数组扩展方向
Tuple放置方向
Free Space
pd_lower
pd_upper
Item2
……..
回滚段
Tuple2
回滚指针
https://opengauss.org
openGauss 目录
 全密态等值查询原理
 线程池原理
 极致RTO优化
 增量检查点原理
 openGauss 架构
 openGauss 核心技术及实践
 NUMA多核优化
 行列混合引擎
 openGauss 开源社区介绍
 openGauss 未来技术发展方向
 MOT内存表原理
 AI4DB自治数据库
 高性能
 可用性
 安全性
 易运维
 Inplace Update引擎
 账本数据库
 Paxos协议自选主
 DB4AI库内AI引擎
https://opengauss.org
openGauss 数据库双机企业部署场景
Storage
OpenGauss 主
网络通道10GE
客户端驱动
业务应用
OpenGauss 备
Storage
读/写 只读
1、最多可能丢失的数据的时长
(RPO):恢复业务系统后与中断时相
比的数据损失量,反映恢复数据完整
性的指标。
2、系统恢复正常所需要的最大时长
(RTO):业务从中断到恢复正常所需
的时间,反映业务恢复及时性的指标
。
https://opengauss.org
openGauss 数据库双机原理
Redo日志
Commit事务提交
业务应用
日志发送线程
Redo日志
日志接收线程
业务应用
日志恢复线程
心跳线程 心跳线程
3
2
1
4
双机交互协商:
1、程序版本IDENTIFY_VERSION
2、角色协商IDENTIFY_MODE
3、数据协商IDENTIFY_SYSTEM
4、日志LSN位置(时间线,LSN)
https://opengauss.org
openGauss 数据库极致RTO
redo
record
磁盘
redo
record
record queue
…
txn
record
事务相关record
queue
…
…
redo
record
批量redo解析线程
record queue
1
2
3
Bucket
Tag
block1
Tag
block2
Tag
block3
block queue block queue
block queue
block2 block2 block3 block3
block1 block1
主机 备机
批量恢复线程
1. 备机日志实时落盘,同时将日志流并行解码、读取和回放事务日志;
2. 保证极大化日志回放吞吐,功能切分服务化、流水线协同,减少串行度。
3. 批处理化回放,消除单条回放反复获取/释放锁的并发控制和IO开销。
4. 页级物理并行,去除按表切割并行机制,locality更好、并行度更高。
https://opengauss.org
openGauss 数据库RTO时间
在60%负载、70+万tpmC下可达RTO<10s(主备切换指令后10秒内,备机接管业务)。
OpenGauss 备
Storage
只读
业务应用
OpenGauss 主
Storage
读/写
业务应用
gs_ctl failover
https://opengauss.org
paxos协议自选主介绍
应用
openGauss
实例
Storage
NODE 1
openGauss
实例
Storage
NODE 2
openGauss
实例
Storage
NODE 3
监控,仲裁
应用
openGauss
实例
Storage
NODE 1
openGauss
实例
Storage
NODE 2
openGauss
实例
Storage
NODE 3
Paxos协议自仲裁,防止脑裂
传统主备+集群管理 DCF自仲裁
https://opengauss.org
paxos协议自选主实现
openGauss引入基于Paxos协议的DCF组件,能够保证数据一致性的同时,在高可用方面得到极大增强,主要包括:
 通过自仲裁、多数派选主能力摆脱第三方仲裁组件,极大缩短RTO时间,且可预防任何故障下的脑裂双主
 基于Paxos协议拓展的多样化节点角色,能够提供节点同步、同异步混合部署等多种集群部署方式
 高性能、低时延的复制能力,使得openGauss在高可用方面得到极大增强的同时,还提升了主备节点间日志复制效率,提升系统最大吞
吐能力
openGauss部署示意图
运行架构 关键设计:
 支持自选主
 支持异步多线程框架和无锁cache设计
 支持多级batch、pipeline操作,以及日志压缩能力
 支持日志多流多复制
 不同分区主备副本可以在同一节点,方便实现负载
均衡和异地多活
 基于网络带宽及网络时延自动探测的流控算法
 支持batch size、 pipeline并发数自适应调整,提
升系统最大吞吐量
下阶段演进:
 权重化选主:用户可以指定各节点选主优先级,按
照优先级从高到低依次激活选主
 支持日志空洞和并行离散日志复制能力
 高性能网络通信,支持自定义拥塞控制算法的TCP
通信及基于UDP协议的丢包重传能力
https://opengauss.org
openGauss 目录
 全密态等值查询原理
 线程池原理
 极致RTO优化
 增量检查点原理
 openGauss 架构
 openGauss 核心技术及实践
 NUMA多核优化
 行列混合引擎
 openGauss 开源社区介绍
 openGauss 未来技术发展方向
 MOT内存表原理
 AI4DB自治数据库
 高性能
 可用性
 安全性
 易运维
 Inplace Update引擎
 账本数据库
 Paxos协议自选主
 DB4AI库内AI引擎
https://opengauss.org
openGauss部署在云上时的安全问题
数据库在云上运行时数据存储和访问的安全问题--窃取数据
DBA
User
Application
DataBase Server
对象存储服务
文件系统
Backend
KMS服务
https://opengauss.org
openGauss 全密态等值查询
基于可信通道传输CEK(Client
Encryption Key)
• 提供与密文环境隔离的明文环境
• 提供SQL查询和计算能力
• 数据以密文形式存在,无法解密
• 不存储密钥明文信息
Intel x86 / 华为鲲鹏 ARM
可信执行环境(TEE)
密态内核(REE)
secGear
EulerOS/SUSE
GaussDB Kernel
ODBC/JDBC
加密驱动(User Side)
数据加解密
密文数据 密文数据
密文数据
明文数据
加密密钥
可信通道
Application API
https://opengauss.org
openGauss 全密态等值查询流程
任务请求
客户端
(解析层)
加密模块
加密解密
秘钥管理
导入导出
openGauss
明文请求
密文请求
密态等值查询内核
1、三层秘钥管理机制:根秘钥,主
秘钥和列加密秘钥。
2、客户端完成数据的加密和解密,
服务器完成密态数据计算。
3、不需要加密的字段仍然是明文处
理。
https://opengauss.org
openGauss 全密态加密等值数据流程
libpq协议
Client KMS
REE
(ciphertext)
业务Query
Select c1 from table where c1 > 123;
TEE
(plaintext)
select c1 from table
where c1 > ‘0xfe31da05’;
123 -> ‘0xfe31da05’
‘0xad6e5d2e’
‘0x5892be2d’
‘0x784dce2f’
叠加网络
Client Encryption Key
(CEK)
GaussDB
REE : Rich Execution Environment
TEE : Trust Execution Environment
TEE环境
明文计算
REE环境
密文计算
软件模式
硬件模式
https://opengauss.org
数字资产可信流动需求
以区块链为代表的数字资产可信流动框架是数字世界不可或缺的根基,是IT领域的新基建
 数据追溯:数字货币、政务、食品安全等领域渴望全向追踪管理,防止数据篡改与作弊,实现多方认同,促进数字资产的可信流动;
https://opengauss.org
openGauss防篡改账本数据库
openGauss账本数据库
账本数据分布式存储:
openGauss能够对防篡改表提供表级数据水
印和操作审计,数据与审计记录相互校验。
data
slice1
slice2
slice3
checkpoint1 checkpoint2 checkpoint3
增量校验
增量校验
高效篡改校验算法:
openGauss内置高性能账本校验算法,高效校验
本地数据一致性、快速校验其余节点操作的有效
性。
 账本数据库部署方案:防篡改用户表+一致性校验算法
https://opengauss.org
openGauss防篡改账本数据库
• 账本表的使用
账本表使用与普通表一样,支持全量的增、删、改、查操作,在用户
看来,仅仅是普通表多增加了一列hash列。用户可以显示的查询每行
数据的hash。
db=# create schema ledger with blockchain;
db=# create table ledger.user(id int, name varchar);
db=# insert into ledger.user values(1, 'alex'), (2, 'bob’);
db=# select *, hash from ledger.user;
id | name | hash
----+------+------------------
1 | alex | 1f2e543c580cb8c5
2 | bob | 8fcd74a8a6a4b484
(2 rows)
db=# select * from blockchain.ledger_user_hist limit 1;
-[ RECORD 1 ]------------------------------
rec_num | 0
hash_ins | 1f2e543c580cb8c5
hash_del |
pre_hash | b62faf1967d78a3043a2b4ea5cc075d2
账本表操作及记录 历史表和全局表记录
db=# select blocknum, username, starttime, relhash,
txcommand from gs_global_chain limit 1;
-[ RECORD 1 ]---------------------------------------------
--------
blocknum | 28
username | omm
starttime | 2021-11-10 11:20:34.202908+08
relhash | aefbc8e4feb16d49
txcommand | insert into ledger.user values(1, 'alex'), (2,
'bob');
• 校验信息的记录(历史表和全局表)
账本表的数据增删改操作均会被记录到历史表和全局表。记录到历史
表的形式为只记录hash摘要,不记录数据;记录到全局表的形式为记
录操作的SQL语句和操作造成的摘要更改。
https://opengauss.org
openGauss防篡改账本数据库
• 数据全流程追踪
对记录的动作、数据和校验信息进行关联查询,结合数据库物理日志/逻辑日志中的源信息可以对数据的全流程进行追踪审计,知道:
a. 谁执行了哪些命令,b. 命令改动了哪些数据,c. 数据被谁修改过。同时,追踪功能的每一步都能结合校验信息进行篡改校验。
同时,对导出的数据,能够跟库内的数据进行关联校验,保证数据的全生命周期的追踪。
数据全流程追踪
starttime | txcommand | data_ins | data_del
-------------------------------+--------------------------------------------------------------------+------------+--------------
2021-12-02 11:22:22.168519+08 | insert into ledger.t1 values(1, ‘alex’), (2, ‘bob’), (3, ‘peter’); | 1, ‘alex’ |
2021-12-02 11:22:22.168519+08 | insert into ledger.t1 values(1, ‘alex’), (2, ‘bob’), (3, ‘peter’); | 2, ‘bob’ |
2021-12-02 11:22:22.168519+08 | insert into ledger.t1 values(1, ‘alex’), (2, ‘bob’), (3, ‘peter’); | 3, ‘peter’ |
2021-12-02 11:22:22.170443+08 | update ledger.t1 set name = ‘bob2’ where id = 2; | 2, ‘bob2’ | 2, ‘bob’
2021-12-02 11:22:22.171845+08 | delete from ledger.t1 where id = 3; | | 3, ‘peter’
2021-12-02 11:22:22.173231+08 | update ledger.t1 set name = ‘bob3’ where id = 2; | 2, ‘bob3’ | 2, ‘bob2’
https://opengauss.org
openGauss 目录
 全密态等值查询原理
 线程池原理
 极致RTO优化
 增量检查点原理
 openGauss 架构
 openGauss 核心技术及实践
 NUMA多核优化
 行列混合引擎
 openGauss 开源社区介绍
 openGauss 未来技术发展方向
 MOT内存表原理
 AI4DB自治数据库
 高性能
 可用性
 安全性
 易运维
 Inplace Update引擎
 账本数据库
 Paxos协议自选主
 DB4AI库内AI引擎
https://opengauss.org
企业数据库运维问题
典型数据库应用系统TCO分布:
数据库运维占三分之一左右
需求分析,
5.22%
方案设计,
12.28%
安装部署,
5.59%
数据库设计,
3.21%
数据迁移或
应用迁移,
19.24%
对接联调
(调
优),31.06
%
上线和验收
/割接,
4.12%
监控,…
例行维护,
1.42%
故障处理,
12.64%
升级打补丁,
4.12%
DBA workforce distribution
日产运维工作占DBA50%以上工作内容
Tuning/upgrading/debugging…
schema 设计
应用查询开发
SQL查询优化
故障恢复和诊断
数据库备份和恢复
安全管理
数据库扩容和数据迁移
数据库部署、补丁、升级
监控与故障排查
OOS部署、补丁、升级
服务器、网络、存储日常运维
基础设施和资产管理
业务相关 可自动化
大部分DBA日常工作可以自动化
DB maintenance cost is biggest part of TCO
Source: IDC 2007.
“Three Year Server TCO. Based on more than 300
interviews conducted across numerous platforms”
Source: DBA survey from CSDN.
https://opengauss.org
openGauss AI 全景
AI Framework
AI算法(机器学习/深度学习等)
AI in SQL AI in DBMS AI in Kernel
全技术栈
AI/ ML/ DL
全应用场景
SQL/DBMS/Kernel
全用户
User/DBA/Developer
深度学习平台(TF/Torch/MindSpore等) 机器学习库(dlib/MADlib等) 优化算法/自研算法
In-DB Analytics
Knobs Tuning Learned Optimizer
Workload Forecasting
View/ Partition Advisor
Workload Scheduling
Index Advisor
Self Diagnosis/
Healing
Learned Index/Storage
Self Assembler
In-DB Optimization
In-DB Operator
Self Security
异构计算 KunPeng X86 Ascend GPU
DB4AI AI4DB
Self Monitor
https://opengauss.org
openGauss参数调优与诊断能力
离线参数调优流程概述:
1. 利用长期参数调优总结出的先验规则进行参数配置诊断与生成数据库workload报告;
2. 根据系统的workload、环境信息推荐初始参数配置,包括推荐参数值、建议最大值和最小值
(用以保证稳定性,供用户结合自身经验进行选择);
3. 利用训练好的强化学习模型进行调优,或者使用全局优化算法在给定的参数空间内进行搜索;
4. 常规评价调优效果好坏的方法是跑benchmark获得反馈,调优框架除支持常规benchmark如
TPC-C、TPC-H等,还为用户提供了自定义benchmark的框架,用户只需要进行少量工作进行
适配即可;目前还在演进支持Performance Model的参数调优,将更进一步加快调优速度;.
在线参数调优流程概述:
1. 采集用户系统内的统计信息和workload,根据训练好的监督学习模型和先验规则,推荐给用户对
应的参数配置。
https://opengauss.org
openGauss慢SQL发现能力
使用场景介绍:
1. 上线业务预检测:上线一批新业务前,使用SQL诊断功能评估此次上线业务的预估执行时长,便于用户参考是否应该修改上线业务。
2. Workload分析:对现有workload进行分析,自动分为若干类别,并依次分析此类别SQL语句执行代价,以及各个类别之间的相似程度;
3. SQL透视:能够将workload进行可视化,通过不同颜色和距离远近判断SQL语句之间的相似性,从而供用户直观地分析SQL语句的特点。
关键功能:
• 预估SQL语句的执行时间
• 根据SQL语句类型进行类别区分
• SQL语句分布情况的可视化
SQL透视效果 具备较高的预测准确率 华为云DAS上基于海量数据训练后的SQL透视效果
https://opengauss.org
openGauss数据库监控与异常检测
数据库指标是数据库与用户行为健康的重要标志,数据库中的异常行为可能导致数据库指标产生异常,因此对指标进行有效的监控显得十分必要。
数据库状态监控,指对数据库运行指标进行全方位实时监控。系统能够发现和识别数据库异常以及潜在的性能问题,并及时将数据库异常报告给用户,
通过针对各项运行指标的统计分析报告,帮助管理员、运维人员、决策者多视角了解数据库的运行状态,从而更好的应对数据库的需求及规划。
Agent由Source、Channel以及Sink组成。部署在数据库环境上的,用于采集数据库中的性能指标,并通过网
络,将其传送给远端检测器模块。
Detector由数据收集Agent推送的数据,并将数据存储在本地磁盘,同时Detector基于时序预测和异常检测等
算法对数据库指标进行监控和异常检测。
Receiver:数据接收器,接受Agent.HttpSink数据。同时将接受的数据推送到储存模块。
储存模块:对Receiver中的数据进行储存,目前主要支持数据库方式储存,默认是SQLite数据库。
算法模块:该模块是Detector的核心模块,实现了时序预测、异常检测、告警推送等功能。同时用户可以按照
接口要求实现自定义的算法。
Detection 架构示意图 各个子模块
https://opengauss.org
openGauss单Query/ Workload级别索引推荐
使用场景介绍:
根据用户的Workload整体信息,为用户推荐需要创建的索引。
单Query索引推荐的核心方法:
采用索引设计和优化的相关理论,基于原生的词法和语法解析,对查询语句中的子句
和谓词进行分析和处理,再结合字段选择度、聚合条件、多表Join关系等输出最终建
议。
索引性能验证的方法:
通过修改优化器相应的数据结构,利用优化器评估,进而判断创建该索引后,对优化
器生成执行计划的影响。该过程可以不用真正创建索引,即业内所谓的“假设索
引”,业内也多采用此种方法。
Workload级别索引推荐的核心方法:
通过用户输入(或自主采集)得到的workload信息,根据预设模型,进一步评估创
建索引对整体Workload的影响,从而从候选索引中筛选出若核心索引。
0
20
40
频数
>=50% 20%<=.<50% 5%<=.<20% 0%<=.<5%
-5%<=.<0% -20%<=.<-5% -50%<=.<-20% <-50%
从单条到workload
对索引推荐效果的整体评估:
TPC-DS: 除40%左右无明显变化外,其余语句均有不同程度的执行时间缩短;
TPC-C: 与原生索引基本持平,比无索引有巨大性能提升。
使用示例:使用gs_index_advise() 推荐索引,性能提高10000倍!
← 建议在lineitem表的l_orderkey列上创建索引。
无索引 原索引 算法一 算法二
tpmC 3.22 135.64 134.27 134.49
tpmTOTAL 8.06 299.64 299.24 298.69
Transaction Count 120.67 4495.00 4489.00 4480.67
TPC-C TPC-DS
https://opengauss.org
openGauss DB4AI
• 用户接口层: 实现SQL-like 语法,提供PREDICT、MODEL等关键字,支
持模型的训练、预测以及管理等;
• 语句优化层:实现业内首创的原生AI算子,优化器生成包含原生AI算子的
执行计划;实现代价估计,支持通过EXPLAIN语句查看详细的执行开销,
并提供可能的路径选择能力(ShuffleScan 下推)。
• AI全流程管理:支持对模型的管理、评估,支持模型的定期、定点更新与
fine-tune等;支持AutoML能力,具有超参数调优(Hyper Parameter
Optimization, HPO)能力;具备特征选择、特征处理、与数据清洗能力。
• AI执行器:负责执行AI执行计划,支持算法的并行执行。
• 存储层:支持为数据创建快照并进行管理,负责模型文件的存储与组织。
• 异构计算能力:支持多种计算平台,包括X86架构、ARM架构、以及具备
GPU的环境。
• AI底座:提供数据库内部API,支持数据库内AI能力,如AI优化器、AI
buffer、AI索引等。
https://opengauss.org
openGauss DB4AI SQL方式训练和推理的流程
使用Create Model语法实现数据库内AI训练和模型
存储:
• 通过数据库并行训练算法,实现库内训练加速;
• 通过执行代价估计及资源管控,实现迭代轮次和
模型参数最优化;
• 提供可视化执行计划,实现AI可查、可解释性。
举例:Create Model price_model using logistic_regression Features
size, lot Target price < 1000 from Houses;
使用Predict By语法实现数据库内AI模型推理:
• 基于数据集和查询特征进行模型归类;
• 优化器通过同类模型的精准度,自适应选择算
法,实现最优化模型推理
• AI推理算子结合其他执行算子,实现关联分析
举例:Select address, Predict By price_model(Features size, lot), size
from houses;
https://opengauss.org
openGauss DB4AI 性能测试 - XGBoost
Classification (s) Prediction (s)
Python UDF 29.29 227.36
In-operator 3.18 14.46
KPI Speedup 9.2x 15.7x
Classification (s) Prediction (s)
Python UDF N/A (Error) N/A (Error)
In-operator 43.0 204.7
Results for dataset with 1m rows: Results for dataset with 10m rows:
0
10
20
30
40
Python UDF XGBoost operator
Time
(s)
CREATE MODEL - 1M
rows
0
50
100
150
200
250
Python UDF XGBoost
operator
Time
(s)
PREDICT BY 1M rows
xgboost
with hyperparams: “n_iter=10, max_depth=5, min_child_weight=1, nthread=10,
eta=0.1, booster='gbtree'”
结果分析:
1、数据读取(批次读取)
2、Python UDF在计算过
程中存在大量的数据转写环
节
3、DB4AI存在指令集加
速:(option)
https://opengauss.org
openGauss 核心技术总结
1、在CPU NUMA 多核的硬件发展趋势下,openGauss通过线程绑核,NUMA化数据结构改造,数据分
区和原子指令优化实现150W tpmc。
2、企业可用性指标为RPO和RTO,openGauss支持双机同步保证RPO=0,通过极致RTO技术保证
RTO<10s。
3、企业的性能指标为吞吐量和时延,openGauss通过服务器线程池支持企业的高并发,通过增量检查点保
证IO性能的稳定性。
4、企业的业务场景为OLTP和OLAP,openGauss通过行列混合引擎同时支持行存和列存,适应企业混合场
景。
5、在风控,计费等极端性能企业场景下,openGauss通过免锁内存表,内存索引算法保证高吞吐,低时延,
满足企业场景要求。
6、在云化的发展趋势下,openGauss通过全密态实现端到端加密,解决企业上云安全顾虑。
7、通过DB4AI和AI4DB,实现openGauss自运维和调优,减少企业应用开发和维护的TCO。
https://opengauss.org
openGauss 核心技术及实践
 openGauss 架构
 openGauss 核心技术及实践
 openGauss 开源社区介绍
 openGauss 未来技术发展方向
https://opengauss.org
openGauss未来技术方向:更智能、更安全、更高效
We are here
• AI算法加持,解决传统数据库问题
• 学习型数据库组件,如AI-Based Optimizer
• SQL自优化:hint推荐、查询重写
• 数据库系统的软硬件故障自诊断与自定位技术
• 数据库内AI技术:全流程AI
自调优
智能推荐
存储引擎
基于学习Index
参数自调优
执行引擎
智能调度 负载预测
SQL引擎
基于学习查询重写 基于学习代价估计 基于学习优化器
AI 调度器
基于学习存储引擎
自诊断
软硬件诊断
自愈
错误恢复
自监控
数据统计
系统统计
负载统计
自安全
审计
透明加密
权限管理
访问控制
密态计算
数据脱敏
AI
行为分析
AI 框架
AI as UDF AI as View AI as API Machine Learning Lib Deep Learning
异构硬件
鲲鹏 昇腾 others
UDF训练框架
基于学习Buffer
AI执行算子
全流程AI
慢SQL诊
断
时序预测 模型管理 图像检索 关联挖掘
DB原生AI训练框架
Drift train Snapshot
异构执行框架
自组装
函数自组装
引擎自组装
节点自组装
AI算法
自组装
多模
数据自组装
硬件芯片
数据自组装
功能自组装
文本处理
DBMind功能全景图
https://opengauss.org
openGauss未来技术方向:更智能、更安全、更高效
DBA
User
Application
DataBase Server
对象存储服务
文件系统
Backend
数据安全传输(in transfer)
问题:传输状态下的数据保护
威胁:仿冒、钓鱼攻击、重放…
方案:HTTPS、SSL、TLS…
数据安全存储(at rest)
问题:存储状态下的数据保护
威胁:拖库、信息提取
方案:透明加密(Transparent Data
Encryption)、数据存储加密
(Encryption API)
数据安全展示(outside system)
问题:数据查询后的数据保护
威胁:隐私泄露、权限提升…
方案:数据动态脱敏、Row Level Security
KMS服务
数据安全计算(in calculation)
问题:查询计算中的数据保护
威胁:栈溢出信息泄露
方案:全密态数据管理
数据安全运维(under operation)
问题:运维形态下的数据保护
威胁:权限提升、篡改数据、抵赖…
方案:防篡改数据管理
https://opengauss.org
openGauss未来技术方向:更智能、更安全、更高效
众核系统线性scale-up
• 竞争冲突Latch-free/wait-free;
DB结合新硬件整合优化,解决传统架构挑战
• 持久化内存:秒级故障恢复毫秒级
故障恢复
https://opengauss.org
openGauss 2022年主要规划特性:性能,可靠,安全
DFX维度 关键特性 特性描述
性能 2P鲲鹏提升20%,4P鲲鹏230Wtpmc。
2P 提升20%,4P 230W tpmc,2P到4P线性度1.5。
I基于libnet和DPDK的网络加速。
可靠
Paxos协议增强。
备机能力增强。
主备支持Paxos协议,自选主。
备机能力增强:备机备份,逻辑复制,延迟回放,备机IO优化。
安全
全密态支持不等于查询。
支持国密加密算法。
全密态支持不等于运算符。
支持国密加密算法(SM3/SM4)。
敏感数据发现和保护。
存储透明加密。
防篡改数据库。
AI SQL根因分析、库内AI算子扩展、ABO优化器
AI4DB:SQL根因分析(慢SQL为什么慢)、ABO优化器
DB4AI:库内AI算子,通过SQL语法进行训练和预测。
实时分析
支持混合负载,数据交易与报表分析实时处理。
支持IoT场景边缘节点实时分析。
一个实例交易,另一个实例支持分析。
行存并行查询优化。
列存插入性能优化(delta store)。
向量化查询+CodeGen+列存,查询性能提升50%。
未来探索 架构演进
基于Memory Fabric的架构探索。
基于4P Pro的UCE的故障感知与修复。
基于1620网卡的性能优化。
https://opengauss.org
openGauss 社区交流
我们希望与各位一起,
共同打造更优秀的openGauss数据库!
共同构筑良好的openGauss数据库生态!
官网:https://opengauss.org
邮箱:contact@opengauss.org
微信公众号 添加微信小助手
即可加入官方社群交流
https://opengauss.org
https://opengauss.org
Thank you!

More Related Content

PPTX
系统开发最佳实践,现代系统架构的数字化转型大并发下的事件驱动微服务架构设计.pptx
PDF
【Deloitte】行业现状及趋势成就智慧的CFO降本增效,挖掘利润新动能.pdf
PDF
施耐德与绿色智能制造施耐德中国有限公司绿色智能制造咨询部,对中国工业4.0的观点.pdf
PDF
浪潮K1 Power医疗行业解决方案当今行业不可逃避的机遇与挑战,夯实基础.pdf
PDF
【艾瑞咨询】2022年中国制造业数字化转型研究报告2023年制造业报告综述.pdf
PDF
The voluntary carbon market- 2022 insights and trends.pdf
PPTX
You_Exec_-_RAPID_Decision_Making_Free.pptx
PPTX
You_Exec_-_Data_Visualization_Charts_Part_2_Free.pptx
系统开发最佳实践,现代系统架构的数字化转型大并发下的事件驱动微服务架构设计.pptx
【Deloitte】行业现状及趋势成就智慧的CFO降本增效,挖掘利润新动能.pdf
施耐德与绿色智能制造施耐德中国有限公司绿色智能制造咨询部,对中国工业4.0的观点.pdf
浪潮K1 Power医疗行业解决方案当今行业不可逃避的机遇与挑战,夯实基础.pdf
【艾瑞咨询】2022年中国制造业数字化转型研究报告2023年制造业报告综述.pdf
The voluntary carbon market- 2022 insights and trends.pdf
You_Exec_-_RAPID_Decision_Making_Free.pptx
You_Exec_-_Data_Visualization_Charts_Part_2_Free.pptx

More from blackangel52 (18)

PPTX
You_Exec_-_Minimum_Viable_Product_MVP_Part_2_Free.pptx
PPTX
You_Exec。 _-_Table_of_Contents_Free.pptx
PPTX
You_Exec_-_Performance_Management_Free.pptx
PPTX
You_Exec_-_Business_Process_Re-engineering_Free.pptx
PPTX
You_Exec_-_Sales_Strategies_Toolkit_Part_2_Free.pptx
PDF
Huawei GaussDB focuses on kernel development, promoting the cloud solution an...
PPTX
模版-车企数字化转型数字转型-后疫情时代数字化转型新视角Digital Transformation.pptx
PPTX
succession-planning-template-for-hr-leaders.pptx
PDF
Energy supply chain perspective:, challenges, demands and opportunities
PDF
益普索Strategy3白皮书2020_-_技术为王—中国智能网联汽车的下一个十年.pdf
PDF
【AWS London Summit2022】使用AWS for Industrial更快地构建和部署工业物联网项目.pdf
PDF
Global Cloud Database and DBaaS Market Report 2024-2032.pdf
PDF
【AWS】Amazon DocumentDB (with MongoDB compatibility).pdf
PPTX
Huawei SD-WAN Overview Presentation.pptx
PDF
2024中国零售消费企业敏捷经营指南报告-在本次报告中,我们对零售消费行业的现状和未来趋势进行了深入调研和分析
PPTX
自然资源部第一海阳研究所资产处-采购需求、实施和合同管理培训20225.pptx
PDF
利用亚马逊云强大的基础设施最大限度地减少数据库迁移到AWS期间的停机时间.pdf
PPTX
贝伐珠单抗注射液信达生物制药(苏州)有限公司药品通用名称;注册规格;说明书适应症/功能主治(概述)
You_Exec_-_Minimum_Viable_Product_MVP_Part_2_Free.pptx
You_Exec。 _-_Table_of_Contents_Free.pptx
You_Exec_-_Performance_Management_Free.pptx
You_Exec_-_Business_Process_Re-engineering_Free.pptx
You_Exec_-_Sales_Strategies_Toolkit_Part_2_Free.pptx
Huawei GaussDB focuses on kernel development, promoting the cloud solution an...
模版-车企数字化转型数字转型-后疫情时代数字化转型新视角Digital Transformation.pptx
succession-planning-template-for-hr-leaders.pptx
Energy supply chain perspective:, challenges, demands and opportunities
益普索Strategy3白皮书2020_-_技术为王—中国智能网联汽车的下一个十年.pdf
【AWS London Summit2022】使用AWS for Industrial更快地构建和部署工业物联网项目.pdf
Global Cloud Database and DBaaS Market Report 2024-2032.pdf
【AWS】Amazon DocumentDB (with MongoDB compatibility).pdf
Huawei SD-WAN Overview Presentation.pptx
2024中国零售消费企业敏捷经营指南报告-在本次报告中,我们对零售消费行业的现状和未来趋势进行了深入调研和分析
自然资源部第一海阳研究所资产处-采购需求、实施和合同管理培训20225.pptx
利用亚马逊云强大的基础设施最大限度地减少数据库迁移到AWS期间的停机时间.pdf
贝伐珠单抗注射液信达生物制药(苏州)有限公司药品通用名称;注册规格;说明书适应症/功能主治(概述)
Ad

华为计算商业策略:硬件开放、软件开源、使能合作伙伴openGauss产品:商用+自用+开源相结合,内核将长期演进

Editor's Notes

  • #32: ThreadPoolControler:线程池总控,负责线程池的初始化和资源管理 ThreadSessionControler :会话生命周期管理 ThreadPoolGroup:线程组,可以定义灵活的线程数量和帮核策略 ThreadPoolListener: 监听线程,负责事件的分发和管理 ThreadPoolWorker: 工作线程
  • #43: 2017年非面对面消费支付欺诈率64.3 BP(每万元中发生欺诈金额占比)。 2017年全球金融欺诈损失达73.71亿美金。 2017年金融服务领域风险交易比例相比2016年增长了40%。 预计2019年因数据泄露造成的经济损失,全球范围内将达到2.1万亿美金。
  • #44: 密态数据库允许客户端对客户端应用程序内的敏感数据进行加密。在查询期间,整个业务数据流在数据处理过程中都是以密文形态存在。 ● 保护数据在云上全生命周期的隐私安全; ● 通过将密钥掌握在用户自己手上,实现公有云、消费者云以及开发用户的用户信任问题; ● 使能合作伙伴,让合作伙伴借助全密态能力更好的遵守个人隐私保护方面的法律法规。
  • #50: Recovery Point Objective (RPO),指的是最多可能丢失的数据的时长。 Recovery Time Objective (RTO) ,指的是从灾难发生到整个系统恢复正常所需要的最大时长。 简单区分的话,RPO是灾难发生之前的时间, RTO是灾难发生之后的时间。
  • #59: 对客户应用透明: (1)生成客户端主密钥:用户需要在本地部署密钥管理工具(KeyTool),通过密钥管理工具相关指令来管理密钥,如创建或删除密钥; (2)记录CMK与CEK信息,在系统创建加密表:有了阶段1中生成的密钥信息后,为数据库设计专门的密钥创建语法,包括设计新的主密钥(CMK, Client Master Key)和列加密密钥(CEK, Column EncryptionKey)语法;通过内核接口访问KeyTool中存储的主密钥并记录在系统中,列加密密钥则由主密钥在客户端完成加密后存储在数据库服务端;数据通过列加密密钥完成在客户端的加密,然后传输到服务端。通过对创建表语法进行改造,指定字段的加密类型。 (3) 完成密态等值查询:在客户端解析模块,识别所有涉及的属性是否包含加密列信息,如果不涉及则直接返回并将查询发送到服务端,如果涉及加密列,则需要按照对应的列加密密钥和加密算法加密参数信息,然后发送查询任务到服务端。在服务端,数据在经过加密后,存储的数据类型发生变更,在服务端需要根据新的存储类型进行查询任务执行,通过修改优化器和执行器进行功能适配。 enc_type:采用确定性加密、随机加密;
  • #60: 密态数据库允许客户端对客户端应用程序内的敏感数据进行加密。在查询期间,整个业务数据流在数据处理过程中都是以密文形态存在。 ● 保护数据在云上全生命周期的隐私安全; ● 通过将密钥掌握在用户自己手上,实现公有云、消费者云以及开发用户的用户信任问题; ● 使能合作伙伴,让合作伙伴借助全密态能力更好的遵守个人隐私保护方面的法律法规。
  • #68: 调优参数列表:根据不同的场景预设,用户也可以根据经验配置; 调优方法概括:结合深度强化学习与全局优化算法,针对不同类别的参数进行细粒度调优。 调优效果评估:观察benchmark的跑分结果,预置的benchmark丰富,极简可扩展。