-
融合分析能力是云原生数据仓库GaussDB(DWS)核心亮点之一。GaussDB(DWS)采用一套SQL引擎,支持Oracle、Mysql、HDFS等多源数据融合分析,并通过算子下推、加速集群等技术对分析性能进行了大幅优化,在数据免搬迁的前提下,实现了跨源数据免搬迁、高效分析。GaussDB(DWS)云原生数据仓库支持冷热数据多温存储,热数据存储于数仓内部,以获得良好的查询分析性能,冷数据可分级存储到更低成本的OBS中,不仅降低存储成本,并且在OBS内,通过合法鉴权,数据能够共享开放,供其他引擎处理分析,GaussDB(DWS)当前已经支持表内不同分区间的冷热数据存储,未来还将支持更细粒度、更加智能的冷热数据管理。并行的第一个层级,是集群内物理节点间的并行,CN将计划动态分布到多个服务器,通过分布式执行框架,将查询计划在集群内多台物理节点并行执行;第二个层级,是算子级并行,在每个服务器内,查询算子能够利用一个节点内多个CPU核心进行并行计算;第三个层级,是在一个CPU核心的指令序列中支持SIMD指令,结合我们的向量化引擎,实现一个指令同时操作多条数据。同时,我们还集成了现代编译器技术,利用LLVM框架,运行时动态生成执行代码,减少无关指令生成;数据量越大,可获得的性能提升效果越好。正是因为有这样一个全并行计算引擎,我们可以将系统资源最大化利用,提供极致的分析性能。随着金融风控,以及IoT场景对数据实时处理分析的诉求,我们正式发布了GaussDB(DWS)实时数仓版本,快上加快,将快发挥到极致。
-
数据库的使用者在书写SQL语句时,会根据自己已知的情况尽力写出性能很高的SQL语句。但是当需要写大量SQL语句,且有些SQL语句的逻辑极为复杂时,数据库使用者就很难写出性能较高的SQL语句。而每个数据库都有一个类似人的大脑的查询优化器模块,它接收来自语法分析模块传递过来的查询树,在这个查询树的基础上进行逻辑上的等价变换、物理执行路径的筛选,并且把选择出的最优的执行路径传递给数据库的执行器模块。查询优化器是提升查询效率非常重要的一个手段。由于优化器基于统计信息和估算模型生成计划,当估算出现偏差时,计划可能出现问题,性能较差,使语句的执行变得奇慢无比。通常,查询优化器的优化过程对数据库使用者是透明的。在上一篇博文《GaussDB(DWS)性能调优系列实战篇五:十八般武艺之路径干预》中,Gauss DB(DWS)提供了可通过配置GUC参数的方式,全局的干预查询计划的路径生成。本次,将介绍另一种可以人工干预计划生成的功能--plan hint。Hint是一种通过SQL语句中的注释传递给优化器的指令,优化器使用hint为语句选择执行计划。在测试或开发环境中,hint对于测试特定访问路径的性能非常有用。例如,您可能知道某些表优先进行连接,可以有效减少中间结果集大小,在这种情况下,可以使用提示来指示优化器使用更好的执行计划。Plan hint功能属于语句级的调控,仅对当前语句的当前层次生效,可以帮助我们在调优的过程中,针对特定的语句,通过plan hint进行人工干预,选择更高效的执行计划。GaussDB(DWS)的Plan hint有以下种类:Join顺序的hint:调整join顺序Scan/Join方法的hint:指定或避免scan/join的方法Stream方法的hint:指定或避免redistribute/broadcast行数hint:对于给定结果集,指定行数,或对原有估算值进行计算调整倾斜值hint:在倾斜优化时,指定需要倾斜处理的特殊值
-
索引是对数据库表中一列或多列的值进行排序的一种结构;使用索引可快速访问数据库表中的特定信息;分类:行存表索引/列存表索引- 行存表索引 - B-Tree索引:适合数据重复度低的数据字段, 例如 身份证号码 等字段;*B-Tree索引 - 优点:有B-tree索引,就像翻书目录一样,可以通过索引直接定位到要查询的数据(减少了I/O操作);另外查询性能与表中数据量无关;*注意:不适合键值重复率较高的字段上创建B-Tree索引;- 列存表索引 - PCK索引(Partial Cluster Key 局部聚集):一种针对列存的约束条件;一般在建表时创建,在数据导入时,根据约束,在列存存储单元(CU)内对数据做聚集;*Psort索引:一种列存局部索引,对列存存储单元(CU)内的数据,创建局部索引(MIN/MAX index稀疏索引),提高查询效率;*PCK索引 - 注意:先创建后使用,之前入库的数据不会自动根据索引聚集;行存选择索引注意事项: - 查询条件列上创建B-tree index, 也可以创建组合索引, distinct值比较少的列不适合建立index; - 行存不适合建立太多B-tree index, 然后做数据导入,这样的导入性能非常差;一般这种情况需要禁用该表的索引,待数据导入后重建index;列存选择索引注意事项 - 查询条件出现最多的列,例如filter条件或者join列上建立partial cluster key(约束); - 条件列上可以建立psort index, 也可以创建组合索引;
-
能够根据数据特征自适应的选择压缩算法,平均压缩比7:1;根据预置的时间策略对数据自动压缩;压缩数据可通过数据库接口继续访问,压缩过程对应用透明;压缩数据可直接访问,对业务透明,无需导入导出,极大缩短历史数据访问的准备时间;优点:数据库性能瓶颈经常集中在磁盘I/O,数据压缩后,读取数据时,相对于压缩解压,减少I/O能够更好地提高性能;- 尽量选择distinct值比较多的列,保证数据均匀分布,分布均匀是为了避免木桶效应,让各个主机对等执行; - 尽量选择Join列或group 列做分布列,尽量选择Join列或group列是为了避免DN之间数据流动, 提高性能;- 尽量不要选择filter列作为分布列;- 不同DataNode的数据量相差5%以上即可视为倾斜,如果相差10%以上就必须要调整分布列;
-
系统卡慢原因分析(1)部分业务实现逻辑存在问题:例如系统存在很多冗余逻辑,额外增加了系统的复杂度和资源消耗。(2)SQL代码质量不高:例如缺少索引、子查询过多、不合理递归等。(3)数据库内核对个别场景的支撑能力不足:例如TP型数据库在AP场景处理方面存在不足。(4)服务器硬件资源配置不足:例如客户部分老系统运行10年以上,前期规划的硬件资源因为数据膨胀等原因已经不堪重负,出现硬件资源瓶颈。(5)无法进行合理的资源管控:因为业务要求或者数据库能力等原因,无法进行合理的资源管控,导致业务高峰期资源抢占严重,大面积业务出现卡慢甚至不可用。(6)应用厂商测试不充分,生产存在大量漏测场景:因为应用厂商的能力和态度等原因,在前期性能测试时场景考虑不充分,遗漏大量可能的高并发场景,导致系统上线后出现性能瓶颈。(7)其他包括云平台和微服务等配置因素:因为云平台和微服务等配置不当(过小),导致系统整体性能下降。(8)日常运维工作不到位:例如生产环境周期性的进行垃圾和统计信息更新,并且针对历史数据进行归档,为系统减负。
-
告警的周期是多少?从哪能看所有告警的周期频率信息?
-
1. 错误背景客户环境insert报错,返回错误信息:SQL错误[22007]:ERROR:dn_6007_6008:invalid input syntax for type timestamp:"RJBL" Where:referenced column filter_time原语句为非分区表,重建为分区表后插入失败,schema.table1_partition为 schema.table1表的分区表原SQL 如下insert into schema.table1_partition select * from schema.table1;--失败但是换个写法就能插入成功insert into schema.table1_partition( sno int, kno int, gno int, address varchar(10) )select sno,kno,gno,address from schema.table1;-----插入成功2.错误原因二表经过对比,发现为字段顺序不一致,select * from pg_get_tabledef("schema.table1")create table schema.table1(sno int,kno int,address varchar,gno int).....select * from pg_get_tabledef("schema.table1_partition")create table schema.table1(sno int,gno int,kno int,address varchar).....原写法插入失败因为二表所有字段类型一致,前面都插入成功,到达字段类型不一致的地方产生错误,RJBL为字段的实际第一个值。改良后sql插入成功因为指定了字段。
-
【问题版本】 所有版本【问题描述】 创建集群失败,报BMS.3037【问题影响】 无【问题根因】 裸机侧定位:裸机SDI未配置IP地址导致【定位过程】1、查task任务,发现是RdsWaitSendInitConfigTask步骤失败;2、拿jobid去controller搜日志,发现是报的BMS.3037;status is error, errorMsg Build of instance XXXX-XXXX-XXXX-XXXX-XXXX aborted: Block Device Mapping is Invalid;3、给BMS裸机侧同事处理;【规避措施】找BMS侧同事处理,选择别的空闲机器去下发
-
本样例程序会生成两个文件test1.dat和test2.dat;test1生成1行数据,数据内容包括:abc分隔符123换行符test2生成1行数据,但是,在生成数据之前,先将字符串的分隔符“,”替换为“chr(36)”;然后,分别以cat、od和vi的形式观察生成的数据的不同展现形式。1、perl程序正文#!/usr/bin/perl -w #1、generate data open(W_DATA, "> test1.dat") or die "open test1.dat failed:$! \n"; my $str1 = "abc"; my $deli = chr(036) ; my $str2 = "123"; my $w_str = $str1 . $deli . $str2 . "\n"; print W_DATA $w_str; close(W_DATA); #2、Generate data after character string replacement. my $str3 = "xyz,123,ujm,dfg\n"; print "origin str3 is: $str3\n"; open (W_DATA2, "> test2.dat") or die "open test2.dat failed: $!\n"; $str3 =~ s/,/${deli}/g; print "new str3 is: $str3\n"; print W_DATA2 $str3; close(W_DATA2); 2、执行程序及程序输出3、查看生成后的文件test1和test23.1 test1查看方式1:cat方式3.2 test1查看方式2:od方式(红线是一个标记线,正文中没有,标出来主要方便大家识别分隔符的表现形式)3.3 test1查看方式3:vi方式,vi test1.dat (红线是一个标记线,正文中没有,标出来主要方便大家识别分隔符的表现形式)3.4 test2的查看方式1:cat3.5 查看方式2:od方式 3.6 查看方式3:vi方式
-
前言在大数据和云计算的时代,分布式数据库系统(如DWS集群)已经成为企业处理和分析海量数据的核心工具。然而,随着业务量的不断增长,如何有效地管理和监控这些集群资源,确保它们能够高效、稳定地运行,成为了每个数据库管理员和运维人员必须面对的挑战。在DWS集群中,资源管理是一个至关重要的环节。当集群开启了资源管理功能时,它会定时收集各个实例的资源使用情况,为管理员提供宝贵的参考数据。华为GaussDB(DWS)等数据库管理系统提供了pg_stat_get_wlm_instance_info函数,该函数能够实时获取各个计算节点(CN)和数据节点(DN)的资源使用情况,包括CPU、内存、IO等信息。下面,我们将详细介绍如何利用pg_stat_get_wlm_instance_info函数来构建一个SQL查询,以获取DWS集群中各个实例的资源使用情况。SQL查询构建首先,我们需要从pg_stat_get_wlm_instance_info()函数中获取每个实例的资源使用情况。由于这个函数会返回多条记录,并且我们只需要最新的记录,因此我们需要在查询中使用ORDER BY timestamp DESC LIMIT 1来对结果进行排序和限制。同时,为了获取每个实例所在的物理节点信息(即节点主机名),我们需要查询pgxc_node表。这个表包含了集群中所有节点的相关信息,包括节点名(node_name)和节点主机名(node_host)。下面是一个完整的SQL查询示例:SELECT t2.node_host, t1.node_name, t1.used_cpu, -- CPU消耗信息 t1.free_mem, t1.used_mem, CAST((t1.used_mem / (t1.used_mem + t1.free_mem) * 100) AS NUMERIC(5,2)) AS mem_util, -- 内存消耗信息 t1.io_util, -- IO消耗信息 t1.disk_read, t1.disk_write FROM ( SELECT * FROM pgxc_parallel_query( 'all', ' SELECT instancename AS node_name, used_cpu, free_memory AS free_mem, used_memory AS used_mem, io_util::NUMERIC(5,2), disk_read::NUMERIC(20,2), disk_write::NUMERIC(20,2) FROM pg_stat_get_wlm_instance_info() ORDER BY timestamp DESC LIMIT 1 ' ) tmp (node_name TEXT, used_cpu INT, free_mem INT, used_mem INT, io_util NUMERIC(5,2), disk_read NUMERIC(20,2), disk_write NUMERIC(20,2)) ) t1, ( SELECT node_name, STRING_AGG(DISTINCT node_host, ',') AS node_host FROM pgxc_parallel_query( 'cn', ' SELECT node_name::TEXT, CAST((CASE WHEN node_host::TEXT=''localhost'' THEN NULL ELSE node_host END) AS TEXT) AS node_host FROM pgxc_node; ' ) tmp (node_name TEXT, node_host TEXT) GROUP BY 1 ) t2 WHERE t1.node_name = t2.node_name;查询结果解读执行上述SQL查询后,你将获得一个结果集,其中包含了每个实例的节点主机名、节点名、CPU使用情况、内存使用情况、IO使用情况等信息。其中,mem_util字段表示内存的使用率(以百分比形式展示),它可以帮助你快速了解每个实例的内存使用状况。注意事项请确保在执行查询前已经开启了DWS集群的资源管理功能,并且pg_stat_get_wlm_instance_info函数可用。由于pg_stat_get_wlm_instance_info函数返回的是实时数据,因此查询结果可能会随着时间的推移而发生变化。如果需要定期
-
DWS集群开启了资源管理情况下,会定时收集各个实例的资源使用情况。函数 pg_stat_get_wlm_instance_info 提供了相关的信息数据,每分钟手机一次。利用此函数,我们可以准实时获取各个CN、DN实例的资源使用情况,以供我们进行资源分析参考。其中常用的为实例的CPU、内存、IO等信息。参考语句:select t2.node_host, t1.node_name, t1.used_cpu, -- CPU消耗信息t1.free_mem, t1.used_mem, cast((t1.used_mem/(t1.used_mem+t1.free_mem)*100) as numeric(5,2)) as mem_util, -- 内存消耗信息t1.io_util, -- IO消耗信息t1.disk_read, t1.disk_write from ( select * from pgxc_parallel_query( 'all', ' select instancename as node_name, used_cpu, free_memory as free_mem , used_memory as used_mem, io_util::numeric(5,2), disk_read::numeric(20,2), disk_write::numeric(20,2) from pg_stat_get_wlm_instance_info() order by timestamp desc limit 1 ') tmp (node_name text,used_cpu int,free_mem int,used_mem int,io_util numeric(5,2),disk_read numeric(20,2),disk_write numeric(20,2)) ) t1, ( select node_name,string_agg(distinct node_host,',') as node_host from pgxc_parallel_query( 'cn', ' select node_name::text, cast((case when node_host::text=''localhost'' then null else node_host end) as text ) as node_host from pgxc_node; ') tmp (node_name text,node_host text) group by 1 ) t2 where t1.node_name=t2.node_name ;
-
DWS中提供了 pv_os_run_info 函数,展示当前节点的系统资源情况,其中包含了CPU的使用信息,其中,可获取到: IDLE_TIME、BUSY_TIME、NICE_TIME,使用此数据,可进行估算CPU使用率。可采用采样两个足够短的时间间隔的 CPU 快照,来计算瞬时的CPU使用率。 CPU使用率计算方法如下:TOTALCPUTIME = (IDLE_TIME2+BUSY_TIME2+NICE_TIME2) - (IDLE_TIME1+BUSY_TIME1+NICE_TIME1) USEDCPUTIME = (BUSY_TIME2+NICE_TIME2) - (BUSY_TIME1+NICE_TIME1) CPU使用率 = USEDCPUTIME/TOTALCPUTIME 参考语句: create or replace function public.udf_get_node_cpu(out nodehost text,out cpu_usage numeric(6,2)) RETURNS SETOF record LANGUAGE plpgsql AS $function$ declare row_data record; sql_text1 text; sql_text2 text; sql_text3 text; begin sql_text1 := ' create temp table vt_get_node_cpu_01 with(orientation = column) distribute by hash(nodename) as select * from pgxc_parallel_query( ''all'', '' select get_nodename()::text as nodename, sum(case when name=''''IDLE_TIME'''' then value end)::bigint as IDLE_TIME, sum(case when name=''''BUSY_TIME'''' then value end)::bigint as BUSY_TIME, sum(case when name=''''NICE_TIME'''' then value end)::bigint as NICE_TIME, (IDLE_TIME+BUSY_TIME+NICE_TIME)::bigint as TOTAL_TIME from pv_os_run_info() where name in (''''IDLE_TIME'''',''''BUSY_TIME'''',''''NICE_TIME'''') '' ) tmp (nodename text,IDLE_TIME bigint,BUSY_TIME bigint,NICE_TIME bigint,TOTAL_TIME bigint) '; sql_text2 := ' create temp table vt_get_node_cpu_02 with(orientation = column) distribute by hash(nodename) as select * from pgxc_parallel_query( ''all'', '' select get_nodename()::text as nodename, sum(case when name=''''IDLE_TIME'''' then value end)::bigint as IDLE_TIME, sum(case when name=''''BUSY_TIME'''' then value end)::bigint as BUSY_TIME, sum(case when name=''''NICE_TIME'''' then value end)::bigint as NICE_TIME, (IDLE_TIME+BUSY_TIME+NICE_TIME)::bigint as TOTAL_TIME from pv_os_run_info() where name in (''''IDLE_TIME'''',''''BUSY_TIME'''',''''NICE_TIME'''') '' ) tmp (nodename text,IDLE_TIME bigint,BUSY_TIME bigint,NICE_TIME bigint,TOTAL_TIME bigint) '; execute sql_text1; execute 'select pg_sleep(0.5)'; execute sql_text2; execute 'analyze vt_get_node_cpu_01'; execute 'analyze vt_get_node_cpu_02'; sql_text3 := ' select t1.nodehost,t2.cpu_usage from ( select nodehost,max(node_name) as nodename from ( select node_name,string_agg(distinct node_host,'','') as nodehost from pgxc_parallel_query( ''cn'', '' select node_name::text, cast((case when node_host::text=''''localhost'''' then null else node_host end) as text ) as node_host from pgxc_node; '') tmp (node_name text,node_host text) group by 1 ) group by 1 ) t1, ( select a.nodename, round(((b.TOTAL_TIME-a.TOTAL_TIME)-(b.IDLE_TIME-a.IDLE_TIME))/(b.TOTAL_TIME-a.TOTAL_TIME)*100,2)::numeric(6,2) as cpu_usage from vt_get_node_cpu_01 a,vt_get_node_cpu_02 b where a.nodename=b.nodename ) t2 where t1.nodename=t2.nodename '; for row_data in execute(sql_text3) loop nodehost := row_data.nodehost; cpu_usage := row_data.cpu_usage; return next; end loop; execute 'drop table vt_get_node_cpu_01'; execute 'drop table vt_get_node_cpu_02'; return; END; $function$ ;
-
现场是云上的dws 813版本,有没有GDS导入导出数据的详细步骤
-
精彩导读:华为云数据仓库DWS,历经13年的技术磨砺,已成为国产数据仓库中的佼佼者,是中国唯一获得数仓类CC安全认证的产品。华为云DWS一站式全场景云数据仓库,提供PB级数据分析能力、多模分析和实时处理能力,以统一内核提供公有云、混合云等部署形态,用户体验一致。在金融、泛政府、电信、能源、交通、医疗、物流、电商等领域,帮助1700+大客户规模商用。未来,将继续深耕云原生Serverless化、实时分析、湖仓一体、数智融合、HTAP等国产数仓核心技术,引领数据产业,创新构建开放融合、云化、实时、全场景、智慧的数据底座!《DWS用户运维指南》从业务管控实践、业务开发规范、运维监控及业务应急预案4个方面,深入介绍了DWS熔断策略、负载均衡、业务开发规范、业务设计最佳实践、TOPSQL配置、集群健康检查、业务高并发/业务排队/锁等待场景的应急预案等内容。帮助用户系统掌握DWS运维的方法和操作流程,提高DWS的使用效率。 点击下载《DWS用户运维指南》 了解详情 产品主页:cid:link_1社区论坛:cid:link_3开发者学习平台:cid:link_2
-
GaussDB(DWS)开发者门户2.0升级版全新上线啦!板块划分升级,内容更丰富:提供全链路学习路径,从入门到精通;一站式问题求助渠道,产品使用无忧;整合DWS技术资源,打通知识触达“最后一公里”还有更多功能等您探索>>>传送门板块介绍:📍01入门路径:开启DWS开发者的学习之旅从0到1带您入门华为云数仓GaussDB(DWS),详解数仓发展史及GaussDB(DWS)使用流程。📍02数据分析实验室为数据仓库的试用者和开发者提供华为云官方实验平台,可以一键创建数据仓库,实践和验证典型场景。📍03问题百宝箱:故障案例库、小D、论坛问题求助为业务开发人员和运维DBA提供问题解答渠道,帮助您获取优质故障案例、进行自助或互动答疑。📍04技术资源货架:书架、视频库帮助初学者、开发者进行能力提升的体系化技术资源货架,包含电子书、技术博文、视频教程等内容。📍05开发者认证HCCDP华为云数仓官方认证,培养具有数仓开发和运维能力的高级工程师,对数仓相关领域人员进行技能提升培训。📍06开发者活动:活动日历面向开发者的线上、线下活动,为开发者们提供交流平台和渠道。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签