• [技术干货] 行存储和列存储的特点
    能够根据数据特征自适应的选择压缩算法,平均压缩比7:1;根据预置的时间策略对数据自动压缩;压缩数据可通过数据库接口继续访问,压缩过程对应用透明;压缩数据可直接访问,对业务透明,无需导入导出,极大缩短历史数据访问的准备时间;优点:数据库性能瓶颈经常集中在磁盘I/O,数据压缩后,读取数据时,相对于压缩解压,减少I/O能够更好地提高性能;- 尽量选择distinct值比较多的列,保证数据均匀分布,分布均匀是为了避免木桶效应,让各个主机对等执行; - 尽量选择Join列或group 列做分布列,尽量选择Join列或group列是为了避免DN之间数据流动, 提高性能;- 尽量不要选择filter列作为分布列;- 不同DataNode的数据量相差5%以上即可视为倾斜,如果相差10%以上就必须要调整分布列;
  • [技术干货] GaussDB(DWS)性能优化最佳实践
    系统卡慢原因分析(1)部分业务实现逻辑存在问题:例如系统存在很多冗余逻辑,额外增加了系统的复杂度和资源消耗。(2)SQL代码质量不高:例如缺少索引、子查询过多、不合理递归等。(3)数据库内核对个别场景的支撑能力不足:例如TP型数据库在AP场景处理方面存在不足。(4)服务器硬件资源配置不足:例如客户部分老系统运行10年以上,前期规划的硬件资源因为数据膨胀等原因已经不堪重负,出现硬件资源瓶颈。(5)无法进行合理的资源管控:因为业务要求或者数据库能力等原因,无法进行合理的资源管控,导致业务高峰期资源抢占严重,大面积业务出现卡慢甚至不可用。(6)应用厂商测试不充分,生产存在大量漏测场景:因为应用厂商的能力和态度等原因,在前期性能测试时场景考虑不充分,遗漏大量可能的高并发场景,导致系统上线后出现性能瓶颈。(7)其他包括云平台和微服务等配置因素:因为云平台和微服务等配置不当(过小),导致系统整体性能下降。(8)日常运维工作不到位:例如生产环境周期性的进行垃圾和统计信息更新,并且针对历史数据进行归档,为系统减负。
  • [运维管理] 告警的周期是多少?从哪能看所有告警的周期频率信息?
    告警的周期是多少?从哪能看所有告警的周期频率信息?
  • sql插入报错SQL错误[22007]
    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插入成功因为指定了字段。
  • [集群购买/创建] GaussDB(DWS)创建集群失败报BMS.3037
    【问题版本】 所有版本【问题描述】 创建集群失败,报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侧同事处理,选择别的空闲机器去下发
  • [分享交流] 使用perl语言生成以chr(36)为分隔符的文本文件数据的程序样例
    本样例程序会生成两个文件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方式
  • [SQL] 利用pg_stat_get_wlm_instance_info函数,实时分析DWS集群资源使用情况
    前言在大数据和云计算的时代,分布式数据库系统(如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函数返回的是实时数据,因此查询结果可能会随着时间的推移而发生变化。如果需要定期
  • [SQL] 利用库内函数,准实时监控实例资源使用情况。
    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 ; 
  • [SQL] 利用库内函数,实时获取节点CPU使用率
    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$ ; 
  • [运维管理] 云上的环境使用GDS进行数据导入测试
    现场是云上的dws 813版本,有没有GDS导入导出数据的详细步骤
  • [DWS书库] 《DWS用户运维指南》电子书来啦!---带您深入了解DWS运维方法和操作流程(适用版本:8.1.3及以上版本)
    精彩导读:华为云数据仓库DWS,历经13年的技术磨砺,已成为国产数据仓库中的佼佼者,是中国唯一获得数仓类CC安全认证的产品。华为云DWS一站式全场景云数据仓库,提供PB级数据分析能力、多模分析和实时处理能力,以统一内核提供公有云、混合云等部署形态,用户体验一致。在金融、泛政府、电信、能源、交通、医疗、物流、电商等领域,帮助1700+大客户规模商用。未来,将继续深耕云原生Serverless化、实时分析、湖仓一体、数智融合、HTAP等国产数仓核心技术,引领数据产业,创新构建开放融合、云化、实时、全场景、智慧的数据底座!《DWS用户运维指南》从业务管控实践、业务开发规范、运维监控及业务应急预案4个方面,深入介绍了DWS熔断策略、负载均衡、业务开发规范、业务设计最佳实践、TOPSQL配置、集群健康检查、业务高并发/业务排队/锁等待场景的应急预案等内容。帮助用户系统掌握DWS运维的方法和操作流程,提高DWS的使用效率。 点击下载《DWS用户运维指南》 了解详情 产品主页:cid:link_1社区论坛:cid:link_3开发者学习平台:cid:link_2
  • [全景传送门] 2.0升级!重塑DWS开发者门户,传递知识的力量
    GaussDB(DWS)开发者门户2.0升级版全新上线啦!板块划分升级,内容更丰富:提供全链路学习路径,从入门到精通;一站式问题求助渠道,产品使用无忧;整合DWS技术资源,打通知识触达“最后一公里”还有更多功能等您探索>>>传送门板块介绍:📍01入门路径:开启DWS开发者的学习之旅从0到1带您入门华为云数仓GaussDB(DWS),详解数仓发展史及GaussDB(DWS)使用流程。📍02数据分析实验室为数据仓库的试用者和开发者提供华为云官方实验平台,可以一键创建数据仓库,实践和验证典型场景。📍03问题百宝箱:故障案例库、小D、论坛问题求助为业务开发人员和运维DBA提供问题解答渠道,帮助您获取优质故障案例、进行自助或互动答疑。📍04技术资源货架:书架、视频库帮助初学者、开发者进行能力提升的体系化技术资源货架,包含电子书、技术博文、视频教程等内容。📍05开发者认证HCCDP华为云数仓官方认证,培养具有数仓开发和运维能力的高级工程师,对数仓相关领域人员进行技能提升培训。📍06开发者活动:活动日历面向开发者的线上、线下活动,为开发者们提供交流平台和渠道。
  • [运维管理] 大规模X86集群切换到arm集群会有哪些风险点?
    大规模X86集群切换到arm集群会有哪些风险点?
  • [数据库使用] 查询外表报错Failed to connect hdfs because of connect 182.x.x.x:25000 failed
    【问题现象】=>Select * from ptemp.wh_maps_fr_test;ERROR: Failed to connect hdfs because of connect 182.x.x.x:25000 failed,detail:HdfsRpcException:Failed to invoke RPC call "getFsStats" on server "182.x.x.x:25000" because of HdfsRpcServerException:javax.security.sasl.SaslException:Problem with callback handler Caused by:HdfsRpcServerException:javax.security.sasl.SaslException:Problem with callback handler,detail can be found in log of cn_5001.cn_5001报错如下2024-05-10 11:00:03.210 663d8d8d.1778 xxxx mgt 281461758977344 gsql 0 cn_5881 00000 102738366514311967 [BACKEND] LOG:statement:Select* fro ptemp.wh_maps_fr_test; 2024-05-10 11:00:03.212 663d8d8d.1778 xxxx mgt 281461758977344 gsql 0 cn_5881 00000 102738366514311967 [HDFS] LOG:failed to check ticket cache:No credentials cache found(filename:/DWS/data1/coordinator/md56f48dee51bdd912c19f89538e3ad428c5),error code-1765328189 2024-05-10 11:00:03.212 663d8d8d.1778 xxxx mgt 281461758977344 gsql 0 cn_5881 00000 102738366514311967 [HDFS] STATEMENT:Select* fro ptemp.wh_maps_fr_test; 2024-05-10 11:00:03.212 663d8d8d.1778 xxxx mgt 281461758977344 gsql 0 cn_5881 DFS02 102738366514311967 [HDFS] ERROR: Failed to connect hdfs because of connect 182.xx.xx.xx:25000 failed,detail:HdfsRpcException: Failed to invoke RPC call "getFsStats" on server "182.xx.xx.xx:25000" because of HdfsRpcServerExCeption:javax.searity.sasl.SaslException:Problen with callback handler Caused by:HdfsRpcServerException: javax.security.sasl.SaslException:Problem with callback handler,detail can be found in log cn_5001. 2024-05-10 11:00:03.313 663d8d8d.1778 xxxx mgt 281461758977344 gsql 0 cn_5001 DFS02 102738366514311967[HDFS]LOCATION:Connect,hdfs_authentication.cpp:1369 2024-05-10 11:00:03.313 663d8d8d.1778 xxxx mgt 281461758977344 gsql 0 cn_5001 DFS02 102738366514311967 [HDFS]STATENENT:Select* fro ptemp.wh_maps_fr_test; 2024-05-10 11:00:03.321 663d8d8d.1778 xxxx mgt 281461758977344 gsql 0 cn_5001 00000 102738366514311967 [BACKEND]LOG:AbortTransaction 2024-05-10 11:00:03.321 663d8d8d.1778 xxxx mgt 281461758977344 gsql 0 cn_5001 00000 102738366514311967 182738366514311967[BACKEND]STATEMENT:Select* fro ptemp.wh_maps_fr_test;【问题解决】 到鉴权文件路径下 cat elk-site.xml<name>dfs.namenode.kerberos.principal</name>对应位置只有用户,这个位置应该为用户@域名,更改后再次尝试查询语句,问题得到解决。
  • [DWS书库] 《DWS技术原理解析》电子书来啦!---带您一站式掌握GaussDB(DWS)核心架构的技术原理。
    精彩导读:华为云数据仓库DWS,历经13年的技术磨砺,已成为国产数据仓库中的佼佼者,是中国唯一获得数仓类CC安全认证的产品。华为云DWS一站式全场景云数据仓库,提供PB级数据分析能力、多模分析和实时处理能力,以统一内核提供公有云、混合云等部署形态,用户体验一致。在金融、泛政府、电信、能源、交通、医疗、物流、电商等领域,帮助1700+大客户规模商用。未来,将继续深耕云原生Serverless化、实时分析、湖仓一体、数智融合、HTAP等国产数仓核心技术,引领数据产业,创新构建开放融合、云化、实时、全场景、智慧的数据底座!为了让用户一站式掌握DWS核心架构的技术原理,我们联合DWS的技术专家、技术爱好者重磅推出《DWS技术原理解析》电子书,为您带来优化器、执行器、存储引擎、事务处理、集群通信等方面的技术原理解析与实践。未来我们会推出更多书目,为广大数仓开发者们提供更有用的技术分享,也欢迎大家一起参与到DWS的技术建设与分享中来,一起建设更有技术力量的开发者社区。点击下载《DWS技术原理解析》 了解详情  产品主页:cid:link_1社区论坛:cid:link_3开发者学习平台:cid:link_2
总条数:2746 到第
上滑加载中