- 博客(75)
- 收藏
- 关注
原创 GaussDB事务ID分配及CLOG_CSNLOG
对于bucket子目录下的CLOG文件,每SLRU_CLOG_PAGES_PER_SEGMENT(4)个页面切分一个段文件,文件名长度为10。xid是由各个DN自己维护的。事务ID分配及CLOG/CSNLOG为了在数据库内部区别不同的写事务,GaussDB会为它们分配唯一的标识符,即事务id(transaction id,缩写xid),xid是uint64单调递增的序列,从FIRST_NORMAL_XACT_ID (3)开始分配。对于页面上的元组,xmin记录插入时的xid,xmax记录删除时的xid。
2025-03-10 10:14:04
391
1
原创 GaussDB基线数据传输
的文件,如:/base/db_oid目录或/pg_tblspc/tblspc_oid/db_oid目录下的2_b1,2_b1.1,2_b1_fsm,2_b1_vm等。由于sender和receiver分别在不同的DN上,同一个tablespace在不同DN上的tablespaceid可能是不同值,因此在日志回放前需要将日志中的tablespaceid及dbid替换成本地的tablespaceid及dbid。按照tablespaceoid map、bucket数据文件、CLOG文件的顺序进行传输。
2024-12-27 10:42:03
358
原创 GaussDB CLOG拆分处理可见性判断
bucketxid:bucket粒度,在当前库,新节点产生的最小xidbucketcsn:bucket粒度,在当前库,来自源节点的最大CSNbucket上线后,CLOG和数据文件已搬迁,CSNLOG未搬迁。只有用户业务的场景,DML和DDL业务间的并发仍然通过表锁实现,所有业务都拿bucket的一级锁。如果新节点next_xid < exp_xid,设置新节点next_xid为next_step_xid,并等待当前活跃事务的最小值推进,更新next_step_xid,直到next_xid不小于预期值。
2024-12-27 10:41:25
962
原创 华为GaussDB数据库包括:事务性(OLTP)数据库、分析型(OLAP)数据库和混合负载(HTAP)数据库
华为GaussDB数据库包括:事务性(OLTP)数据库、分析型(OLAP)数据库和混合负载(HTAP)数据库。这里需要解释下OLTP、OLAP、HTAP之间的区别,这也是数据库最基本的内容。据库系统一般分为两种类型:一种是面向前台应用的,应用比较简单,但是重吞吐和高并发的OLTP类型;一种是重计算的,对大数据集进行统计分析的OLAP类型。本身不产生数据,其基础数据来源于生产系统中的操作数据(OperationalData);基于交易的处理系统(Transcation-Based);基于查询的分析系统;
2024-12-27 10:40:22
297
原创 GaussDB如何创建修改数据库和数据表
GaussDB是华为公司自研的云化企业级分布式关系型数据库,面向金融核心交易、企业生产系统、互联网金融、ERP/CRM、办公/OA等业务场景,GaussDB具备高性能、高可用、混合负载处理、自治、全密态五大优势。GaussDB支持分布式事务,同城跨AZ部署,数据0丢失,支持1000+的扩展能力,PB级海量存储。
2024-12-27 10:37:02
544
原创 GaussDB企业级AI-Native分布式数据库
GaussDB采用MPP(Massive Parallel Processing)架构,支持行存储与列存储,提供PB(Petabyte,2的50次方字节)级别数据量的处理能力。华为GaussDB将AI能力植入到数据库内核的架构和算法中,为用户提供更高性能、更高可用、更多算力支持的分布式数据库。GaussDB 采用 MPP(Massive Parallel Processing)架构,支持行存储与列存储,提供 PB(Petabyte,2 的 50 次方字节)级别数据量的处理能力。
2024-12-27 10:36:17
281
原创 GaussDB技术解读——GaussDB架构介绍之OM运维管理关键技术方案
通过OM Adaptor和OM Agent 采用适配器模式设计,对管控面提供了统一的北向接口。华为云Console调用云管控服务,云管控服务根据用户输入的运维操作,如购买实例,进行相应的操作,如购买实例,云管控服务会创建虚拟机。用户登录华为云Console,访问GaussDB Kernel V5的管控页面,输入想要的运维操作(购买实例)。云管控服务调用Mgr Agent,Mgr Agent会调用内置插件Adapter。OM Agent会调用OM来完成具体的运维操作。Adapter会调用OM Agent。
2024-12-27 10:34:11
260
原创 GaussDB 24.1.30 分布式3节点命令行方式部署(2)
修改 安装脚本中的install_cluster.conf 配置文件 install_cluster.conf 配置文件参数说明 注意:密码中不能用连续的数字。GaussDB 数据库使用 adaptor接口方式的安装,在adaptor、om-agent安装完成后,会调用 adaptor接口来执行实例的预安装和安装。举例:需要把cn_dir路径配置到/data/cn路径下配置修改格式:cn dir=/data/cn。查看pkgDir目录下的安装包 注意:此处注意清理掉其他所有文件,仅仅保留以下的几个文件。
2024-12-27 10:20:16
441
原创 华为GaussDB数据库包括:事务性(OLTP)数据库、分析型(OLAP)数据库和混合负载(HTAP)数据库
华为GaussDB数据库包括:事务性(OLTP)数据库、分析型(OLAP)数据库和混合负载(HTAP)数据库。这里需要解释下OLTP、OLAP、HTAP之间的区别,这也是数据库最基本的内容。据库系统一般分为两种类型:一种是面向前台应用的,应用比较简单,但是重吞吐和高并发的OLTP类型;一种是重计算的,对大数据集进行统计分析的OLAP类型。本身不产生数据,其基础数据来源于生产系统中的操作数据(OperationalData);基于交易的处理系统(Transcation-Based);基于查询的分析系统;
2024-12-27 10:12:51
237
原创 GaussDB针对hashbucket表两种索引:bucket全局索引和bucket本地索引
GaussDB针对hashbucket表有两种索引,bucket全局索引(跨bucket索引,cross-bucket index, CBI)和bucket本地索引(local-bucket index, LBI)。LBI索引为hashbucket类型的特殊段页式存储,同hashbucket表,pg_class中虽只有一条记录,存储层有bucketnode为[0-1023]的fake relation存在,索引扫描时需逐个遍历bucket索引。图4为CBI索引基线数据构建与日志追增示意图。
2024-12-27 10:12:37
204
原创 GaussDB日志传输与回放
增量数据通过XLOG日志传输和日志回放的方式进行追增。替换方法:dbid: 在进行重分布前,在内核中记录各个节点本次要重分布的dbid,在日志回放的解析日志阶段,把日志里所有的block里的dbid进行替换。(3)日志中元数据的处理日志多流技术中,新节点上的数据可能来自于不同的老节点,相同的tablespace及database在不同DN上对应的tablespaceid及dbid很可能是不同的,因此在日志回放前需要将日志中的tablespaceid及dbid替换成本地的tablespaceid及dbid。
2024-12-27 10:06:06
767
原创 GaussDB基线数据传输
的文件,如:/base/db_oid目录或/pg_tblspc/tblspc_oid/db_oid目录下的2_b1,2_b1.1,2_b1_fsm,2_b1_vm等。由于sender和receiver分别在不同的DN上,同一个tablespace在不同DN上的tablespaceid可能是不同值,因此在日志回放前需要将日志中的tablespaceid及dbid替换成本地的tablespaceid及dbid。按照tablespaceoid map、bucket数据文件、CLOG文件的顺序进行传输。
2024-12-27 10:04:50
202
原创 GaussDB CLOG拆分处理可见性判断
bucketxid:bucket粒度,在当前库,新节点产生的最小xidbucketcsn:bucket粒度,在当前库,来自源节点的最大CSNbucket上线后,CLOG和数据文件已搬迁,CSNLOG未搬迁。只有用户业务的场景,DML和DDL业务间的并发仍然通过表锁实现,所有业务都拿bucket的一级锁。如果新节点next_xid < exp_xid,设置新节点next_xid为next_step_xid,并等待当前活跃事务的最小值推进,更新next_step_xid,直到next_xid不小于预期值。
2024-12-27 10:03:47
614
原创 GaussDB整体性能慢分析
长时间性能下降通常的场景,通常是指某段时间(小时级)性能抖动,比如: 过去8:00-9:00性能正常,但10:00-11:11性能出现较大的性能抖动,这种场景,可以比较两段时间内WDR报告,排查报告内差异点,可排查Top SQL、Top Wait Events、Load Profile、Cache/IO Stats、Object Stats等。当前数据库内核默认是开启线程池的,由于某些或者某个不优SQL慢,导致业务整体性能差,或者占满整个内核线程池,从而可能会引发更加严重的业务阻塞。
2024-12-27 09:51:19
2009
原创 GaussDB SQL基本语法示例-CASE表达式
另外,如果没有取值为TRUE的input_expression = when_expression,则当指定ELSE子句时,DLI将返回else_result_expression;当没有指定ELSE子句时,返回NULL值。说明:其中,input_expression表示需要比较的表达式,when_expression等表示需要比较的值,result_expression等表示各个值相等时的结果,else_result_expression表示当input_expression不等于任何值时的默认结果。
2024-12-27 09:44:15
976
原创 GaussDB云数据库SQL应用系列—索引管理
随着互联网的快速发展,数据量呈现爆炸式增长。如何高效地管理和查询这些数据成为了企业面临的重要问题。而数据库索引作为数据库优化的关键手段之一,对于提高数据库性能和查询效率具有重要作用。本文将介绍GaussDB云数据库的索引创建和管理方法,并结合实际应用场景进行分析。本文结合一张测试表简单的介绍了GaussDB云数据库的索引创建、查询、删除等操作。索引可以提高数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。
2024-12-26 11:23:43
373
原创 GaussDB云数据库SQL应用系列-视图管理
GaussDB是一款基于云计算技术的高性能关系型数据库,支持多种数据模型和分布式架构。在GaussDB中,视图管理是非常重要的一项功能,它可以帮助用户更方便地管理和查询数据。数据库视图管理是指对数据库中的视图进行创建、修改、删除、查询等操作的过程。
2024-12-26 11:20:16
815
原创 GaussDB云数据库SQL应用系列-基础使用
随着云计算技术的不断发展,云数据库已经成为了企业信息化建设中不可或缺的一部分。而在众多的云数据库产品中,华为GaussDB以其卓越的性能和稳定性备受用户青睐。GaussDB云数据库是一款具有高性能、高可用、高安全等特点。它采用了先进的存储技术和算法,可以快速处理大量的数据请求,并保证数据的一致性和可靠性。同时,GaussDB还具有丰富的应用场景。例如,在电商行业中,可以使用GaussDB来存储用户的购物记录和订单信息;在金融行业中,可以使用GaussDB来存储客户的账户信息和交易记录;
2024-12-26 11:19:41
790
原创 GaussDB云数据库SQL应用系列-定时任务管理
GaussDB数据库定时任务主要可以用于实现定期的备份、统计信息采集、数据汇总、数据清理与优化等,它是指在指定的时间间隔内自动执行一次或多次SQL语句的程序。GaussDB数据库兼容Oracle定时任务功能主要通过DBE_TASK高级功能包提供的二次封装接口实现(另可参见GaussDB提供的基础接口PKG_SERVICE,此接口也可实现定时任务创建),主要包括创建定时任务、任务到期自动执行、任务删除、修改任务属性(任务id、任务的关闭开启、任务的触发时间、触发时间间隔、任务内容)等。
2024-12-26 11:18:52
662
原创 GaussDB SQL调优:建立合适的索引
所有调优手段都是围绕资源使用开展的。比如做典型点查询的时候,可以用seqscan+filter(即读取每一条元组和点查询条件进行匹配)实现,也可以通过indexscan实现,显然indexscan可以以更小的代价实现相同的效果。拥有云上高可用,高可靠,高安全,弹性伸缩,一键部署,快速备份恢复,监控告警等关键能力,能为企业提供功能全面,稳定可靠,扩展性强,性能优越的企业级数据库服务。很明显,执行计划中存在SubPlan,并且SubPlan中的运算相当重,即此SubPlan是一个明确的性能瓶颈点。
2024-12-26 11:17:29
326
原创 以学校数据模型为例,掌握在DAS下使用GaussDB
目的: 这里以学校数据库模型为例,介绍GaussDB数据库、表等常见操作,以及SQL语法使用的介绍。
2024-12-26 11:17:10
936
原创 如何通过DAS连接GaussDB
本实验主要描述如何通过华为云数据管理服务 (Data Admin Service,简称DAS) 来连接华为云GaussDB数据库实例,DAS是一款专业的简化数据库管理工具,提供优质的可视化操作界面,大幅提高工作效率,让数据管理变得既安全又简单。DAS连接数据库,无需使用IP地址,易用、安全、高级、智能。
2024-12-26 11:13:08
907
原创 GaussDB数据类型转换介绍
需要注意的是,在进行数据类型转换时,应该考虑出现的数据精度、数据溢出、数据失真等问题,同时也要避免数据类型不兼容造成的错误。数据清洗与转换:在数据分析和处理中,经常需要对数据进行清洗和转换,例如将文本数据转换为数字格式,将日期格式转换为文本格式等。数据计算:在进行数据计算时,需要对数据类型进行转换,例如将整数类型的数据转换为浮点数类型的数据,以便进行精确的计算或处理。数据存储:在将数据存储到数据库中时,需要将不同类型的数据转换为数据库支持的数据类型,以便正确地存储和查询数据。
2024-12-26 11:12:10
1217
原创 GuassDB数据库的GRANT & REVOKE
在数据库中,对象的创建者将成为该对象的所有者,具有对该对象进行查询、修改和删除等操作的权限。同时,系统管理员也拥有与所有者相同的权限。因此,如果要让其他用户能够使用某个对象,必须向该用户或包含该用户的角色授予必要的权限。GaussDB数据库对象权限:对象所有者的权限(例如ALTER、DROP、COMMENT、INDEX、VACUUM、GRANT和REVOKE)是隐式拥有的,即只要拥有对象就可以执行对象所有者的这些隐式权限。对象所有者可以撤消自己的普通权限。要撤消已经授予的权限,可以使用REVOKE。
2024-12-26 11:09:23
620
原创 GaussDB数据类型介绍
在进行字段设计时,需要根据数据特征选择相应的数据类型。字符串类型在使用时比较容易混淆,下表罗列了GaussDB中常见的字符串类型。1)常用字符串类型2)示例--创建表。--插入数据。--插入的数据长度超过类型规定的长度报错。--明确类型的长度,超过数据类型长度后会自动截断。--查询数据。
2024-12-26 11:08:35
1068
原创 GaussDB数据库基础函数介绍-上
本文主要从:数字操作函数、时间和日期处理函数、类型转换函数、数组函数、范围函数、窗口函数、聚集函数、安全函数、系统信息函数、动态脱敏函数等方面作一个简单介绍。这些函数包括获取当前日期和时间的函数、将日期和时间转换为数字格式的函数、处理日期和时间的函数等。–可选参数fmt可以为以下几类:十进制字符、“分组”符、正负号和货币符号,每类都可以有不同的模板,模板之间可以合理组合,常见的模板有:9、0、,(千分隔符)、.(小数点)。提高程序的可读性:函数可以用于定义复杂的SQL语句,从而使得程序的代码更加简洁明了。
2024-12-26 11:08:02
939
原创 GaussDB数据库存储过程介绍
华为云数据库GaussDB是一款高性能、高安全性的云原生数据库,在数据库领域处于领先地位。而在GaussDB中,存储过程是一个不容忽视的重要功能。本文将深入介绍GaussDB存储过程的使用场景、使用优缺点、示例及示例解析、调用方法等方面,为读者提供全方位的指导与帮助。存储过程是一个可重用的、批处理的SQL语句代码块,可以包含多条SQL语句,通常用于执行复杂的数据操作、提高数据库的性能和安全性,以及简化数据库应用程序的开发和维护。
2024-12-26 11:07:14
1063
原创 GaussDB数据库存储过程介绍
华为云数据库GaussDB是一款高性能、高安全性的云原生数据库,在数据库领域处于领先地位。而在GaussDB中,存储过程是一个不容忽视的重要功能。本文将深入介绍GaussDB存储过程的使用场景、使用优缺点、示例及示例解析、调用方法等方面,为读者提供全方位的指导与帮助。存储过程是一个可重用的、批处理的SQL语句代码块,可以包含多条SQL语句,通常用于执行复杂的数据操作、提高数据库的性能和安全性,以及简化数据库应用程序的开发和维护。
2024-12-26 11:07:02
676
原创 GaussDB 数据库实验环境搭建指导
本指导书适用于在华为云部署购买GaussDB数据库,通过该指导书可以顺利完成GaussDB数据库在华为云的购买。本实验主要描述华为云GaussDB数据库的购买。
2024-12-26 11:00:32
417
原创 GaussDB 双集群容灾方案
因此,GaussDB提供了支持RPO=0的数据库双集群容灾方案,即主集群在出现故障的情况下,备集群还具备继续提供服务的能力,当发生自然或人为灾难时,保护数据并快速进行恢复,对数据丢失零容忍。当数据库主节点写入的日志同步到备集群的存储设备之后,主节点的事务才会被提交,从而确保了集群切换RPO=0的性能指标。第二,通过Dorado存储硬件实现集群间日志的快速同步,利用Dorado固有网络协议(密集波分),降低网络时延一倍以上,同时利用Dorado存储的缓存能力,日志写入即刻持久化,降低了事务提交时延。
2024-11-25 16:22:33
792
原创 GaussDB关键技术原理|高可用:DCF技术
Follower接收新leader来的日志信息,判断日志是否跟自己连续匹配,连续匹配则接受。接口选举:负责主节点的选举、心跳维持、状态通知复制:负责日志的复制、提交、达成一致控制元数据:负责管理集群配置信息存储:负责日志数据的缓存管理和持久化通信:提供节点间的数据通信功能,并支持压缩解压和SSL能力基础库:提供线程、日志、锁、队列、定时器等基础能力。Leader故障 如图,三节点集群,红色节点表示主机、蓝色表示备机,各节点旁边数字第一行表示日志index,第二行表示任期term,每一列表示一条日志。
2024-11-25 16:19:42
1127
原创 GaussDB关键技术原理——高斯数据库性能优化总结
首先,高斯数据库从架构层面需要保证处理能力可持续提升、可横向扩展,避免某一单点问题阻碍上限的提升,因此最初架构演进上就做过深入的考虑,因此在相同代码基础上同时具备分布式、集中式两种不同的部署形态,这里集中式部署形态决定了单节点(单分片)的性能上限,而分布式将多个数据分片结合到一起通过横向扩展提升总体上限。(1)集中式性能维度,主要聚焦数据库进程内的算法实现,其目标在于将节点内有限计算资源有效最大化利用。首先,从查询执行算法的宏观维度,优化器通过查询重写、CBO/ABO代价模型确保查询整体执行步骤最优;
2024-11-25 16:08:31
1196
原创 GaussDB关键技术原理——高性能之日志无锁刷新与多级流水
同时把Ustore的数据页面回放按照blkno去分发,更好的提高并行回放的并行程度。(1)数据库内核线程必须获取日志插入锁WALInsertLock才能进入第一个临界区,在临界区中,Backend线程首先会预留WAL的插入位置,然后将生成的WAL复制到WAL Buffer的对应预留位置中。(2)数据库后台线程需要遍历所有的WALInsertLock检查lsn是否已经下盘,当WALInsertLock的数目越多时,在执行WAL Flush之前等待其他Backend线程将日志拷贝完成的时间就越长。
2024-11-25 16:05:29
611
原创 GaussDB关键技术原理——高性能之多核处理器优化
鲲鹏ARM服务器多CPU-socket架构下跨NUMA内存访问延迟存在严重的不对称,远/近端内存访存时延有成倍数差异,同时相比x86内存访问时延高50%、并发控制原语代价高2-3倍,在数据库中会以进一步恶化OLTP瓶颈,尽管通常在架构下CPU物理核心数相比x86有了一定提升,但如果不合理设计和实现数据库内核关键数据结构、线程调度模型无法充分利用ARM多核的优势,如何优化NUMA带来的访问时延问题,如何充分利用众核CPU解决并发控制问题成为了鲲鹏上优化数据库OLTP负载性能的主要挑战。
2024-11-25 16:03:57
386
原创 GaussDB关键技术原理——高性能之线程池化
线程池技术的整体设计思想是线程资源池化,并且在不同连接之间复用。因为工作线程数是固定的,因此在高并发下不会导致线程的频繁切换,而由数据库层来进行session的调度管理。这个模式好处是架构上处理简单,但是高并发下,由于线程太多,线程切换和数据库轻量级锁区域的冲突过大导致性能急剧下降,使得系统性能(吞吐量)严重下降,无法满足用户性能的SLA。(2)多核优化:在多核场景下考虑到NUMA效应,线程池针对工作线程的调度范围根据NUMA node进行分配和限制,避免线程的调度跨numa,降低处理时延提升性能。
2024-11-25 16:02:34
560
原创 GaussDB关键技术原理——高性能之SQL-BYPASS执行优化
因此为了加速这类查询,提出了SQL-BY-PASS框架,其核心思想是对执行路径inline处理优化,减少不必要的执行器函数迭代的开销,在parse层对这类查询做简单的模式判别后,进入到特殊的执行路径里,跳过经典的执行器执行框架,包括算子的初始化与执行、表达式与投影等经典框架,直接重写一套简洁的执行路径,并且直接调用存储接口,这样可以大大加快简单查询的执行速度。以分区表点差举例,通过SqlByPass技术将分区表的执行过程进行扁平化inline处理,将原来SQL执行引擎中很深的调用栈扁平化,性能提升30%。
2024-11-25 15:38:35
332
原创 GaussDB关键技术原理——高性能之LLVM动态查询编译执行
(1)GaussDB内置的LLVM编译框架通过为每一个计算单元(表达式或者执行算子里面的热点函数)生成一段独特的执行代码,由于在编译的时候提前知道了表达式涉及的操作和数据类型,为这个表达式生成的执行代码将所有的逻辑内联,完全去除函数调用。这两个核心原因,分支判断和函数调用同样在执行算子中也是影响性能的关键因素,为了提升其执行速度,GaussDB引入了业界著名的开源编译框架LLVM(Low Level Virtual Machine)来提速的执行速度,LLVM是一个通用的编译框架,能够支持不同的计算平台。
2024-11-25 15:34:08
409
原创 GaussDB技术解读系列:如何迁移到GaussDB_
上面解答了能不能迁移,怎么迁移的问题,那么迁移至GaussDB后能否平稳度过业务峰值的考验,技术上有了上面UGO和DRS的基础,我们能够在Oracle数据库上自动采集数据了。数据库一个非常繁忙的软件,每过一秒都有可能会有成千上万的数据发生变化,如何在数据高度变化的动态过程中将数据库迁走,比较容易想到的做法是将业务停机来确保数据迁移不丢失,但这对于一个核心业务来说是无法接受的,这样就提出了一个技术问题,有没有一种办法可以在业务运行过程中将数据库迁移到GaussDB,也就是业界常说的热迁移,或者说在线迁移。
2024-11-25 09:21:54
716
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅