• [其他] 【DWS】【安装】【扩容】在33% RdsCreateInstance步骤失败
    问题描述: 创建或者扩容是,节点个数达到一定数据量,实例下发失败,RdsCreateInstance步骤失败BMS.0035 No IP addresses available on network xxxxx 分析过程:报错信息如下1.在 serviceOM 网络查询对应的xxx id,算出ip不足,只有61个ip,但是当节点超过时则没有ip资源2.cdk涉及的ctype,btype网段如下24位,0,2,4,8分别为26位掩码3.规划网段为:实际生成的网段为: 结论,网段生成有问题,需要手动修改cdk相关参数,重新发集群解决方案:ctype,btype按规划的为17位,对应补充,0,2,4,8 分别分四段19位网段  
  • [生态空间] 华为云GaussDB(DWS)持续创新,使能金融行业人人用数
           【2021年6月4日,中国,上海】6月3日至4日,以“数智金融,升级有道”为主题的华为智慧金融峰会2021在上海举行。在6月4日进行的“开启云原生新时代,数据智能赋能金融”主题论坛上,华为云EI服务产品部总经理贾永利表示:“面对金融业务多样化全面升级挑战, 通过AI与数据双轮驱动,华为云打造融合统一,敏捷灵活,持续演进的金融数据底座;利用AI的通用泛化,智能自动化,知识计算等全新能力加速激发金融全场景业务智能创新。”      随着数字化转型进程的逐渐深化,爆发增长的数据逐渐成为企业发展的重要生产要素,借助数据分析技术深挖数据资产价值,成为金融科技时代金融行业数字化转型的重要课题。华为云GaussDB(DWS)是推动金融数据仓库技术创新的积极贡献者,截止2021年5月底,为半数以上全国性股份制银行提供超大规模多层并行计算的数据仓库服务。工商银行与华为云深度合作,建设全球最大金融数仓      自2015年,工商银行启动新一代数据仓库的建设,解决日益增长的数据和业务需求,截止目前已建成8套集群、1000多个节点。基于华为云GaussDB(DWS)的分析师平台,单集群480节点四路全闪存服务器是全球最大金融数仓。承载13000位分析师在线数据探索,其作业平均等待时间从原来300分钟将至1.5分钟,灵活查询平均执行时间从30分钟将至50秒,大幅提升分析师体验,真正实现了人人都能成为分析师。 招商银行联合华为云,打造首个大规模金融云数仓      2020年经过严格的选型测试,招商银行与华为云共同发起设立新一代数据仓库联合实验室,同年6月“新一代数据仓库联合创新实验室”揭牌。双方秉承优势互补、资源共享的原则,开启新一代数据仓库联合创新,共同打造面向未来10年技术领先的企业数据仓库平台。截止目前,建成首个大规模金融云数仓,单集群240节点,装机容量达到10PB,为应用提供强大存储和算力支撑。      继今年1月首批应用投产,目前已承载20多个业务应用,预计到2022年上半年,该数据仓库将每天处理15万个ETL作业任务,完成50TB的数据交换,接入超过150个业务应用。以充足的算力匹配招行银行“人人用数,人人都是数据分析师”的数据发展战略,支撑数据分析师们更快更深更广地挖掘数据价值。中国人寿携手华为云,打造分钟级业务分析系统      华为云与中国人寿携手搭建的准实时+批量分析数据仓库,使用1套华为云GaussDB(DWS)替换30多套SQL Server,接入10多个源系统,每天2.7万张表的实时增量数据,使用小批量方案实现每3分钟或每5000条入库业务数据,提供T+0报表,以分钟级获取业务分析结果,极大提升保险客户业务满意度。      贾永利提到,在今年5月斩获贵州数博会 “领先科技成果奖”新技术的华为云GaussDB(DWS)实时数仓,是实时数据分析技术的进一步探索,也将在金融行业的实时业务中发挥价值。      基于标准数仓的架构内置时序引擎和CEP引擎,以处理时序数据和流数据,增加实时接入及混合负载能力。首创性的把多引擎融合在一起协同工作,支持持续计算、规则计算、预测分析,以及实时数据与历史数据关联分析。      华为云GaussDB(DWS)实时数仓已在华为云终端实时智能监控平台投产使用。该平台承载运维部门的业务监控,云平台10万多台服务器和数亿台智能终端持续上传时序数据和流数据,经过复杂分析处理后展示在前端监控台。时序数据单机入库每秒10万条、流数据每秒60万条持续入库,时序、流数据实时入仓持续计算,解决了时序数据和流数据在传统数仓的“装不进”问题。      从T+1到T+0,从小时级分钟级,到秒级毫秒级,华为云持续深入数据仓库技术的研究和实践,发挥自身优势,以丰富的跨域业务场景和实践经验,助力金融行业数字化转型,使能金融行业人人用数,人人都能成为分析师。本文转载自:GaussDB DWS微信公众号      想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技~
  • [问题求助] 怎样可以查询用户登录数仓DWS历史记录呢
    怎样可以查询用户登录数据库历史记录呢
  • [其他系列] DWS锁等待问题场景构造及定位演练
    DWS锁等待问题场景构造及定位演练Gaussdb(dws)支持表锁等级分为1-8级常用等级:Select 一级锁 Insert update delete  三级锁Drop Alter 等ddl语句 八级锁操作示例及根据客户已知信息查询等待原因例:客户操作 truncate tb1 持续等待 查找原因构造环境1.开启事务   执行查询语句2. truncate 同一张表 (等待)定位演练1.根据执行语句 查询活跃sql语句pg_stat_activity视图获得所需信息query_id  2.根据所获query_id  查询语句等待情况pg_thread_wait_status视图获取所需信息acquire lock3.根据pid信息查询锁视图pg_locks 获取所需信息 被锁定对象关系oid4.查询oid 根据granted列 查看持有锁t的pid信息5.根据pid信息 查询sql活跃视图得出username query 等状态信息
  • [开发应用] 【GaussDB A产品】【sql脚本执行功能】脚本文件中的某个语句sql语句报错,怎样才能不退出继续执行其余的sql语句
    【功能模块】sql脚本文件执行【操作步骤&问题现象】在使用命令 gsql -d  postgres -p port - f filed 执行某个sql文件时,里面的某个sql执行报错,此时会退出脚本文件的执行,但是怎样才能继续执行其余的sql语句,直至所有sql语句执行完毕oracle处理这种问题的办法是在执行sql语句前面加‘whenever sqlerror continue none ;’我想了一个办法,是利用匿名块来捕捉异常,还有其他办法么?类似于oracle这种处理方法
  • [其他] 【OS】 集群CPU高的一个案例
    问题描述集群中所有节点的CPU都非常高,接近90%左右,系统响应慢,集群中有10个节点。问题分析当出现CPU高的时候,通过以下几个SQL,抓取一下当前系统的并发和正在执行的语句:select coorname,  usename, datname, enqueue , count(*) from pgxc_stat_activity  where  usename <> 'omm' and state = 'active' group by coorname, usename, datname, enqueue ;select coorname, usename, client_addr, sysdate - query_start as dur, enqueue, query_id, replace(query, chr(10), ' ') from pgxc_stat_activity where usename!= 'omm' and state = 'active' order by coorname, dur desc;select sysdate - query_start as dur, waiting, enqueue, state, a.query_id, replace(substr(query, 0, 10), chr(10), ' '), node_name,thread_name,tid,lwtid,ptid,tlevel,smpid,wait_status,wait_event  from pgxc_stat_activity a, pgxc_thread_wait_status b  where state = 'active' and  a.query_id = b.query_id and a.query_id <> 0  order by a.query_id, 1 desc;通过第三条语句中等待视图的信息可以看到,单个语句执行计划达到了839层,执行的语句非常复杂,对应到系统中会有800多个stream线程并发来执行这个一个SQL语句,同时分析到该类型的语句并发执行的有20左右,因此会导致集群CPU飙升。解决方案1. 根据业务场景进行优化SQL。降低SQL复杂度。2. 推荐多租户方案,对单个租户的CPU使用率进行管控。
  • [分享驿站] dws免费试用——pooler复用
    1、连接如何复用?复用的标准又是怎样?怎样才算复用?2、内核8.0会自动清理空闲连接?此处的空闲是指非active状态?那与session_timeout又有何区别联系?
  • [分享驿站] dws免费试用——数据压缩算法
    dws或者gaussdb支持的数据类型与压缩算法的映射关系,如何确认?默认的压缩算法又是哪个?从何知道?选择何种算法最优?
  • [运维管理] GaussDB 6.5.1 11节点测试集群,现license失效想调整NTP地址时间差大于150秒
    【操作步骤&问题现象】是否可以通过后台命令cm_ctl stop 停止gaussdb服务后,在主管理节点执行sh ${BIGDATA_HOME}/om-server/om/bin/tools/modifyntp.sh --ntp_server_ip 10.1.1.1 --force_sync_time强制同步
  • [技术干货] GaussDB ( for Cassandra ) 性能测试 测试方法
      基于GaussDB(for Cassandra),进行性能测试,具体包括测试环境,测试步骤,以及测试结果。测试环境区域:亚太-新加坡可用区:可用区1+可用区2+可用区3(跨3个可用区部署)弹性云服务器(Elastic Cloud Server,简称ECS):规格选择h3.4xlarge.2,16U32GB,操作系统镜像使用CentOS 7.5 64位版本。被测试实例的配置:每个实例均包含3个节点。被测试实例的规格:覆盖以下规格类型,详见表1 实例规格。表1 实例规格编号规格cluster14U16GBcluster28U32GBcluster316U64GBcluster432U128GB测试工具  本次测试采用开源社区的YCSB 0.15.0版本的测试工具。  YCSB是一款广泛使用的数据库性能测试工具,具体使用方法请参见YCSB。测试指标  OPS:Operation Per Second,数据库每秒执行的操作数。测试步骤配置workload文件。按照表2 测试模型所示的业务模型,配置workload中的“readproportion”、“insertproportion”、“updateproportion”、“scanproportion”、“readmodifywriteproportion”的值。按照表3 预置数据量所示的预置数据量,配置workload中的“recordcount”的值。以测试模型workload-insert-mostly为例,执行以下命令,准备数据。sh bin/ycsb.sh load cassandra-cql -P workloads/workload-insert-mostly -p "hosts=${ContactPoints}" -p "port=${port}" -p "cassandra.username=${username}" -p "cassandra.password=${password}" -p operationcount=400000000 -p recordcount=400000000 -p exportfile=./data_load.exp -threads ${threadNum} -s > data_load.log 2>&1 &以测试模型workload-insert-mostly为例,执行以下命令,测试性能。sh bin/ycsb.sh run cassandra-cql -P workloads/workload-insert-mostly -p "hosts=${ContactPoints}" -p "port=${port}" -p "cassandra.username=${username}" -p "cassandra.password=${password}" -p operationcount=9000000 -p recordcount=9000000 -p maxexecutiontime=3600 -p exportfile=./workload-insert-mostly.exp -threads ${threadNum} -s > workload-insert-mostly_run.log 2>&1 &测试模型workload模型表2 测试模型测试模型编号测试模型workload-read-mostly95% read, 5% updateworkload-read-write-combination50% update, 50% readworkload-read-modify-write50% read, 50% readmodifywriteworkload-mixed-operational-analytical65% read, 25% update, 10% insertworkload-insert-mostly90% insert, 10% read数据模型fieldlength=100, fieldcount=10预置数据量本次性能测试中,针对每种规格的实例,测试了如下预置数据量的性能。预置数据具体如下表所示:表3 预置数据量编号规格预置数据量cluster14U16GB50GBcluster28U32GB100GBcluster316U64GB200GBcluster432U128GB400GB测试模式本次性能测试使用高性能模式。————————————————
  • [分享交流] 一键申请3500元DWS免费试用套餐,留言提建议还有相机、键鼠套餐、风扇等多重好礼等你拿~
    TO主贴点此留言参与活动,产品免费试用一键申请,还有相机等你拿~这次,玩大了!!!你知道吗,DWS不仅赠送免费试用机会,提建议还有好礼再相送!!!赠送免费试用机会,提建议还有好礼再相送!!!还有好礼再相送!!!再相送!!!送!!!一、活动时间:2021年6月3日—2021年7月15日二、活动介绍:活动:1:DWS免费试用可以继续申请啦,点此一键申请免费试用>>3500元套餐,我就免费,哎,就是玩儿~活动2:提建议,再送好礼:    本次建议收集包括:GaussDB(DWS)产品建议、试用建议、平台建议,三种类型的有效建议对应的分值不同:产品建议(20分)、试用建议(20分)、平台建议(10分),活动期间内按照建议被采纳后的有效建议计算对应分值排名,给予排名对应奖励。产品建议:包括但不限于产品功能建议、产品bug...试用建议:包括但不限于产品试用流程、试用心得、学习文档、数仓产品体验感受、遇到的问题…平台建议:包括但不限于平台建设、平台看护…任务多多,心动不如行动,看准机会,快快行动吧~产品主页:https://www.huaweicloud.com/product/dws.html产品文档:https://support.huaweicloud.com/dws/快速入门:https://support.huaweicloud.com/qs-dws/开发者社区:https://bbs.huaweicloud.com/forum/forum-598-1.html微信公众号……三、参与方式(前往主贴参与活动哦,此贴为分享帖回复无效)TO主贴参与活动有奖哦点此留言参与活动,产品免费试用一键申请,还有相机等你拿~
  • [其他] 【总结】【数据倾斜】通过倒推法找出数据倾斜严重的表
         某GaussDB(DWS)环境,运维过程中发现集群磁盘使用出现较严重的倾斜情况,因集群业务压力较大,而且集群统计信息更新不及时,无法从全库里通过系统表查出哪张表引起的数据倾斜,因此从数据文件倒推的防范,分析引起数据倾斜的原因,过程如下:1.查看集群各节点磁盘使用情况可以看到237级175节点的/DWS/data1目录,比别的数据盘多用了2TB的磁盘空间,存在较严重的数据倾斜问题,因这两块盘的倾斜大小相同,怀疑是同一DN的主备两个实例倾斜。2.查看实例存放路径,并过滤175级237两个节点的主机名如图中,只有dn_6001及dn_6002这对主备DN,数据分别放在237及175节点的data1目录下,因此倾斜的DN是dn_6001_6002 3.查询dn_6001及dn_6002的主备实例端口dn_6001的端口号为400004.到dn_6001目录下,查找那个表的数据文件最多进入base目录,因数据存储在数据文件中,每个文件1GB,因此越大的表,数据文件个数越多,文件名存储格式为<relfilenode.*>,relfilenode为这个表在实例上存储的relfilenode 值,可以通过在数据目录下,通过ls *.100 ;ls *.200 等方式查找数据文件最多的表的relefilenode,到系统表中取匹配表名。如图,找到.200的文件一个5.gsql连到当前DN上,端口号为上面查到的40000在pg_class中通过relfilenode字段过滤,没有找到对应的表,怀疑这张表可能是分区表在pg_partitions 表中通过relefilenode字段查找,找到这张表的parentid,此字段对应pg_class视图中的oid字段,这样可以对应找出pg_class视图中的relname字段,该字段未表名。6.通过表倾斜、表大小、等系统函数分析该表倾斜情况并进行整改。表倾斜:select table_skewness('tablename');表大小:select pg_table_size('tablename');分布键:\d+ tablename
  • [实践系列] GaussDB(DWS) 【低效SQL分析案例】
    SQL:select      t.ebeln  as ebeln    ,t.ebelp  as ebelp    ,t.werks  as werks    ,t.mwskz  as mwskz    ,t.txz01  as txz01    ,t.matnr  as matnr    ,t.matkl  as matkl    ,t.meins  as meins    ,t.menge  as menge    ,t.menge  as cmenge    ,t.netpr  as netpr    ,case when t.menge = 0 then t.netpr else round(t.brtwr/t.menge/decode(t.peinh,0,1,t.peinh),2) end as netprtax    ,t.netwr  as netwr    ,t.brtwr  as brtwrtax    ,t.brtwr-t.netwr  as tax    ,t.netwr  as cnetwr    ,t.brtwr  as brtwr    ,t.brtwr-t.netwr  as bghsk    ,t.retpo  as retpo    ,t.elikz  as elikz    ,t.banfn  as banfn    ,t.bnfpo  as bnfpo    , t.zdgdhxm  as zqgdhxm    ,t.konnr  as konnr    ,t.ktpnr  as ktpnr    ,t.zhtbh  as zhtbh    ,t.zhxm  as zhxm    ,t21_1.zqgdh  as zpr_id     ,t2.frgke  as frgke    ,t2.ekgrp  as ekgrp    ,t2.ekorg  as ekorg    ,t2.bstyp  as bstyp    ,t2.bsart  as bsart    ,case when t2.bedat = '00000000' then '' else cast( t2.bedat as date) end    as bedat    ,t2.ernam  as ernam    ,t2.lifnr  as lifnr    ,t2.waers  as waers    ,t2.zhtbglx  as zhtbglx    ,t2.verkf  as verkf    ,t2.telf1  as telf1    ,t4.budat  as budat    ,t5.menge  as fpyzsl    ,t25.bcqkje as wrbtr           ,t5.menge  as fpjysl    ,t8.eindt  as eindt    ,t8.wemng  as wemng    ,t9.pspsppnr  as ps_psp_pnr    ,t.menge-t8.wemng  as wzcgddsl    ,t10.name1  as name1    ,t11.maktx  as maktx    ,t12.prart  as prart    ,t12.post1  as wbspost1    ,t12.posid  as posid    ,t13.pspid  as pspid    ,t13.post1  as propost1    ,t14.eknam  as eknam    ,t15.text1  as text1    ,t16.batxt  as batxt    ,t17.pratx  as pratx    ,''              as kbetr           ,t19.vtext      as vtext       ,t20.ZGLIFNR          as gwven      ,case when t2.ZRETURN_DATUM = '00000000' then '' when  t2.ZRETURN_DATUM =' ' then '' else cast( t2.ZRETURN_DATUM as date) end as wzdat     ,t23.bidinteger  as zbnum    ,t21_1.zzbjhbh  as zzbjhbh     ,t.lgort  as lgort    ,t.infnr  as infnr    ,t.ktmng  as ktmng    ,t.bprme  as bprme    ,t.bpumz  as bpumz    ,t.bpumn  as bpumn    ,t.umrez  as umrez    ,t.umren  as umren    ,t.peinh  as peinh    ,case when t.agdat = '00000000' then '' when  t.agdat =' ' then '' else cast( t.agdat as date) end     as agdat    ,t27.bwtar  as bwtar     ,t.bwtty  as bwtty    ,t.pstyp  as pstyp    ,t.knttp  as knttp    ,t.wepos  as wepos    ,t.weunb  as weunb    ,t.repos  as repos    ,t.webre  as webre    ,case when t.abdat = '00000000' then '' when  t.abdat=' ' then '' else cast( t.abdat as date) end as     abdat    ,t.zwert  as zwert    ,t.bstyp  as bstyp_ekpo    ,t.sobkz  as sobkz    ,t.fistl  as fistl    ,t.fipos  as fipos    ,t.bonba  as bonba    ,t.zbbh  as zbbh    ,t.bhzb  as bhzb    ,case when t.zjcdj=' 'then ''   else t.zjcdj end as zjcdj    ,case when t.zjccj=' 'then ''  else t.zjccj end as zjccj    ,case when t.zjcfxjj=' 'then ''  else t.zjcfxjj end    as zjcfxjj    ,case when t.zjcfxzj=' 'then ''  else t.zjcfxzj end     as zjcfxzj    ,t.mandt  as mandt_ekpo    ,t.idnlf  as idnlf    ,t.webaz  as webaz    ,t.spinf  as spinf    ,t.kzvbr  as kzvbr    ,t.abmng  as abmng    ,case when t.prdat = '00000000' then '' when  t.prdat =' ' then '' else cast(t.prdat as date) end               as prdat    ,t.effwr  as effwr    ,t.xoblr  as xoblr    ,t.arsnr  as arsnr    ,t.arsps  as arsps    ,t.brgew  as brgew    ,t.volum  as volum    ,t.packno  as packno    ,t.uebpo  as uebpo    ,case when t.lewed = '00000000' then '' when  t.lewed =' ' then ''else cast(t.lewed as date) end               as lewed    ,t.anzpu  as anzpu    ,t2.bukrs  as bukrs    ,t2.statu  as statu    ,t2.zterm  as zterm    ,case when t2.kdatb = '00000000' then '' when  t2.kdatb =' ' then '' else cast( t2.kdatb as date) end    as kdatb    ,case when t2.kdate = '00000000' then '' when  t2.kdate =' ' then '' else cast( t2.kdate as date) end    as kdate    ,case when t2.bwbdt = '00000000' then '' when  t2.bwbdt =' ' then '' else cast( t2.bwbdt as date) end    as bwbdt    ,t2.konnr  as konnr_ekko    ,t2.reswk  as reswk    ,t2.lifre  as lifre    ,t2.frggr  as frggr    ,t2.frgsx  as frgsx    ,t2.frgzu  as frgzu    ,t2.frgrl  as frgrl    ,t2.procstat  as procstat    ,t2.rlwrt  as rlwrt    ,t2.ebeln  as ebeln_ekko    ,t21_1.zsczt  as zsczt     ,t2.zhtbh  as zhtbh_ekko    ,'' as zjcjzj        ,'' as zjcczj      ,t21_1.zqgdh  as zpr_id_ekko     ,t2.mandt  as mandt    ,t2.bsakz  as bsakz    ,t2.pincr  as pincr    ,t2.lponr  as lponr    ,t2.spras   as spras    ,t2.zbd1t  as zbd1t    ,t2.zbd2t  as zbd2t    ,t2.zbd3t  as zbd3t    ,t2.zbd1p  as zbd1p    ,t2.zbd2p  as zbd2p    ,case when t2.angdt = '00000000' then '' when  t2.angdt =' ' then ''else cast( t2.angdt as date) end    as angdt    ,case when t2.bnddt = '00000000' then '' when  t2.bnddt =' ' then ''else cast( t2.bnddt as date) end    as bnddt    ,case when t2.gwldt = '00000000' then '' when  t2.gwldt =' ' then ''else cast( t2.gwldt as date) end    as gwldt    ,case when t2.ihran = '00000000' then '' when  t2.ihran =' ' then ''else cast( t2.ihran as date) end    as ihran    ,t2.weakt  as weakt    ,t2.stako  as stako    ,t2.lands  as lands    ,t2.stceg_l  as stceg_l    ,t2.memory  as memory    ,case when t2.eq_eindt = '00000000' then '' when  t2.eq_eindt =' ' then ''else cast( t2.eq_eindt as date) end   as eq_eindt    ,t2.key_id  as key_id    ,t2.otb_value  as otb_value    ,t2.otb_res_value  as otb_res_value    ,t2.otb_spec_value  as otb_spec_value    ,sysdate  as cqsj    ,''            as aut_strategy      ,t21_1.ZPUR_MODE  as aut_mode     ,t21_1.zjhdd  as zjhdd    ,t21_1.zjsgfid  as zjsgfid     ,t.zdgdhxm                 as zggdhxm      ,t.swidsl  as swidsl     ,''                   as wznum      ,''                   as wzuse      ,''                 as zzprp10      ,''                  as zebeln      ,''                  as zebelp     ,t.meins                  as csdw     ,t.menge                 as cssl     ,t21_1.zqgdh  as zqgdh    ,t2.zjfbh  as htbh     ,t.loekz  as loekzfrom erp_sapsr3.ekpo t       left join erp_sapsr3.ekko t2 on t.ebeln = t2.ebeln and t2.mandt = '800'     left join (                select ebeln,ebelp,vgabe,min(budat) as budat from sg_dwd_mat.dwd_mat_purchaseorderhistory where vgabe = '1' group by ebeln,ebelp,vgabe         ) t4 on t.ebeln = t4.ebeln and t.ebelp = t4.ebelp     left join sg_dwd_mat.dwd_mat_purchaseorderhistory t5 on t.ebeln = t5.ebeln and t.ebelp = t5.ebelp and t5.vgabe = '1' and t5.bewtp in ('t','a','q')     left join sg_dwd_mat.dwd_mat_plaagreplaline t8 on t.ebeln = t8.ebeln and t.ebelp = t8.ebelp and t8.mandt = '800'     left join sg_dwd_mat.dwd_mat_purorderaccassign t9 on t.ebeln = t9.ebeln and t.ebelp = t9.ebelp     left join erp_sapsr3.lfa1 t10 on  t2.lifnr = t10.lifnr  and t10.mandt='800'                        left join sg_dwd_mat.dwd_mat_matdes t11 on t.matnr = t11.matnr and t11.spras = '1' and t11.mandt = '800'              left join un_erp_sapsr3.un01_03_erp_cd_prps t12 on  t9.pspsppnr = t12.pspnr and t12.mandt = '800'     left join un_erp_sapsr3.un01_03_erp_cd_proj t13 on    t12.psphi = t13.pspnr and t13.mandt = '800'        left join sg_dwd_mat.dwd_mat_purgroup t14 on  t2.ekgrp = t14.ekgrp     left join un_erp_sapsr3.un01_03_erp_cd_t052u t15 on  t2.zterm = t15.zterm and t15.spras = '1' and t15.mandt = '800'       left join un_erp_sapsr3.un01_03_erp_cd_t161t t16 on  t2.bstyp = t16.bstyp and t2.bsart = t16.bsart and t16.spras = '1' and t16.mandt = '800'      left join un_erp_sapsr3.un01_03_erp_cd_tcj1t t17 on    t12.prart = t17.prart and t17.langu = '1' and t17.mandt = '800'      left join erp_sapsr3.tvzbt t19 on  t2.zterm = t19.zterm  and t19.mandt = '800'  and t19.spras = '1'      left join erp_sapsr3.zvendor_add_on t20 on  t2.lifnr = t20.lifnr and t20.mandt = '800'       left join un_erp_sapsr3.un01_03_erp_cd_ekpo t21 on t.ebeln = t21.ebeln and t.ebelp = t21.ebelp and t21.mandt = '800'     left join erp_sapsr3.eban t21_1 on t21.banfn = t21_1.banfn and t21.bnfpo = t21_1.bnfpo and t21_1.mandt = '800' and t.banfn <> ' '     left join un_erp_sapsr3.un01_03_erp_cd_ekko t22 on t.ebeln = t22.ebeln and t22.mandt = '800'     left join (                 select distinct * from sg_dwd_mat.dwd_mat_purchaserequisition where length(banfn) > 1              ) t23 on t.ebeln = t23.ebeln and t.ebelp = t23.ebelp     left join  erp_sapsr3.zfi22t_zjjh t25  on  t25.mandt='800' and t25.fkxz='A' and t25.ebeln=t.ebeln     left join  erp_sapsr3.ekbe t27 on t27.mandt='800' and t27.ebeln=t2.ebelnwhere t.banfn <> ' ' and t.mandt = '800' and t.ebeln not like '6%' and t.ebeln not like '7%';执行计划:分析:1)计划中49层-->19层算子,t表一直作为主表进行关联操作,当与与t14表进行关联时,结果集翻2倍+,从599万涨到1364万t表的的值在关联的t14表中过程中,关联字段ekgrp出现大量重复数据,导致结果集翻倍。2)计划中,5层到4层算子 join后结果集从1364万增加到51亿+,增长将近500倍,性能劣化严重。经验证,t表与t14的的结果集1364万与t27关联字段存在大量重复值,导致结果集增加到51亿+,增长将近500倍3)93层到91层算子,t27表因统计信息不准,预估scan结果集为300行,因此执行计划走的BROADCAST,会把结果集分发到每个DN用于下一层的HASH计算,但实际scan的结果集为1700w+,造成对大表广播,大量的文件传输,消耗IO资源,导致性能劣化。优化建议:1.对SQL相关表更新统计信息,保证SQL执行时,优化器有准确的统计信息作为参考,生成高效的执行计划。2.关联过程中存在大量关联字段重复数据,导致结果集膨胀,说明业务数据质量不高,请结合业务提前清晰重复数据。
  • [运维管理] 【gaussdb A】有sql缓冲池命中率的概念吗
    有sql缓冲池命中率的概念吗有的话命中率怎么查看呢
  • [行业资讯] 华为云TechWave云原生2.0专题日即将举行,GaussDB再次升级亮相
     数据是企业数字化转型的核心之一,并成为智能时代新的生产资料和企业数字化的生命,而数据库则是支撑数据生命线的底座。数据库从作为一个信息系统服务的支撑软件,已经转变为通过数据库云化来加速实现企业数字化转型,数据库的持续发展也进入了云原生数据库新阶段,基于统一云基础设施的云原生数据库,将成为企业数字化转型的数据底座。 在刚刚结束不久的华为开发者大会 2021(Cloud)上,华为云CTO张宇昕宣布了云原生金融级分布式数据库GaussDB正式商用,并表示“数据库是承载企业核心交易业务与数据处理的核心基石,云原生数据库需要承载核心业务的高性能,具备弹性扩展、快速发放、高可用、数据安全等能力。” 华为云GaussDB是数据库团队基于对内外部客户高可靠、高性能诉求的理解,结合云原生与AI技术倾力打造的数据库品牌,它以市场为导向,坚持生态开放,兼容华为自有生态openGauss与主流开源数据库生态(如MySQL、Redis、InfluxDB等),避免了客户从一个封闭生态走向另一个封闭生态;支持关系型与非关系型数据库,面向金融政企客户提供了极致性能、高可靠、高扩展、高安全等数据库能力,让企业应用基于云原生能力变得更敏捷高效,业务更快速增长。 基于统一的计算存储分离架构,云原生数据库GaussDB实现生态兼容,层次解耦,数据融合,突破了传统数据库能力瓶颈,在性能、扩展性、可用性、容量、生态开放等方面均表现出极致的能力优势。如解决令运维人员十分头疼的热点数据问题;保障数据0丢失,故障闪恢复等。       此外,基于多年的企业客户服务经验与华为自身对云化、数字化的理解,华为云GaussDB还精心为政企客户打造了传统商业数据库一站式上云解决方案,从数据库选型到迁移上云,再到云数据库运维管理,每个环节GaussDB都提供了贴心的服务,让企业客户真正做到“选型安心、迁移放心、管理省心”。华为云GaussDB计算存储分离架构图 5月20日,华为云TechWave云原生2.0专题将线上举行,更多云原生创新技术和丰富实践还将与大家见面,GaussDB也将再次迎来升级亮相!华为云专家将从生态、业务两方面为您解读GaussDB战略升级,并深度剖析云原生数据库计算存储分离的核心架构,从应用行业/场景、技术创新、客户案例等方面详细解读GaussDB系列产品。 目前,GaussDB案例已经覆盖全场景,在1000+大客户规模商用,并持续致力于提供传统商业数据库一站式上云解决方案,加速企业数字化转型。
总条数:2749 到第 页
上滑加载中