• [其他] 【gsar】【网络监控】gsar网络监测工具使用及含义说明
    【功能描述】对指定网卡流量、重传、丢包等指标监测,以便快速定位网络问题。【实现效果】【参数说明】1. 网卡名(图中eth8):指定监测的网卡名称,可使用ifconfig命令根据相应ip找到网卡;2. 监控时间(图中5):gsar脚本每一秒钟打印一次监测结果,该参数可缺省,表示不停止;【结果说明】1. time:系统时间,每一秒打印一次;2. recv_kbyte:接收流量大小(老版本为byte);3. recv_pkg:接收包数量;4. ave_len:接收包平均长度(单位byte);5. recv_drop:接收丢包数量;6. drop_per:丢包率;7. send_kbyte:发送流量大小(老版本为byte);8. send_pkg:发送包数量;9. ave_len:发送包平均长度(单位byte);10. tcp_estab:tcp处于正常连接状态数量;11. tcp_send:tcp发包数量(8中为指定网卡);12. resend:tcp重传包数量;13. resend_per:tcp重传率;【结果应用】1. recv_kbyte/send_kbyte:接收/发送流量接近网卡上限,网络存在瓶颈;2. drop_per/resend_per:丢包/重传率超过0.05%,网络链路问题;3. ave_len:包长过大(通常小于1500),网卡参数排查;4. tcp_estab:连接数过多,排查并发、空闲连接;【存放位置】通常情况下在/opt/huawei/Bigdata/mppdb/core/bin/dfx_tool目录下
  • [维护宝典] 【目录】GaussDB DWS存储类问题汇总
    GaussDB DWS存储类问题汇总原理类行列存GaussDB(DWS)之数据库对象设计https://bbs.huaweicloud.com/blogs/195856GaussDB(DWS)&TD分区表设计原理和使用对比 https://bbs.huaweicloud.com/blogs/177226GaussDB(DWS)存储系列之行存表https://bbs.huaweicloud.com/blogs/207721Gauss行列存储压缩总结https://bbs.huaweicloud.com/blogs/233430HAGaussDB(DWS)高可用之数据复制https://bbs.huaweicloud.com/blogs/175234GaussDB(DWS)高可用之主备从HA技术https://bbs.huaweicloud.com/blogs/175249GaussDB(DWS)数据同步状态查看方法https://bbs.huaweicloud.com/blogs/198536事务GaussDB中两阶段事务的故障与恢复https://bbs.huaweicloud.com/blogs/201221等待事务synhttps://bbs.huaweicloud.com/blogs/195267GTMGaussDB(DWS)中GTM组件对sequence管理https://bbs.huaweicloud.com/blogs/193095数仓GaussDB(DWS)GTM总结https://bbs.huaweicloud.com/blogs/198243vacuumGaussDB(DWS) VACUUM总结https://bbs.huaweicloud.com/blogs/245835锁GaussDB(DWS) 锁管理介绍https://bbs.huaweicloud.com/blogs/228062GaussDB常规锁简介https://bbs.huaweicloud.com/blogs/228809GaussDB(DWS)之锁等待场景介绍https://bbs.huaweicloud.com/blogs/233114字符集GaussDB(DWS) 字符集浅谈https://bbs.huaweicloud.com/blogs/176354运维经验&&最佳实践磁盘使用空间磁盘使用率相关问题定位指南https://bbs.huaweicloud.com/blogs/174806GaussDB(DWS)运维的那些事?   ——关于释放磁盘异常占用空间的经验总结https://bbs.huaweicloud.com/blogs/245125vacuum fullDWS表对象VACUUM FULL实践https://bbs.huaweicloud.com/blogs/174978GaussDB(DWS)系统表清理指南https://bbs.huaweicloud.com/blogs/212723DWS数据脏页统计及空间回收介绍https://bbs.huaweicloud.com/blogs/213674关于DWS 空间释放(vacuum   full) 最佳实践https://bbs.huaweicloud.com/blogs/214160vacuum full执行慢怎么办?https://bbs.huaweicloud.com/blogs/222033vacuum full回收机制——oldestXminhttps://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=90486HAGaussDB   (DWS)高可用问题定位指南https://bbs.huaweicloud.com/blogs/198733GaussDB(DWS)实例长期处于catchup问题分析https://bbs.huaweicloud.com/blogs/242269行列存GaussDB(DWS)创建行存表的最佳实践https://bbs.huaweicloud.com/blogs/238443数据恢复GaussDB(DWS)delete误删数据后如何恢复https://bbs.huaweicloud.com/blogs/197988GDSGaussDB(DWS)数据量太大?试试GDS并行导入https://bbs.huaweicloud.com/blogs/194902
  • [运维管理] 【GaussDB A 8.0.0】集群服务器的时间与实际时间不对,怎么修改服务器时间?
    rt.时区是一样的,就时间不对,修改服务器的时间的步骤是什么?怕乱改会有什么影响。
  • [对接系列] DWS Power BI对接指导
    1.1 Power BI介绍Power BI是微软官方推出的可视化数据探索和交互式报告工具。 1.2 环境准备软件环境要求DWS 已经在华为云上购买完成。Power BI已经安装完成。 数据库环境设置create user upowerbi identified by "Huawei@123";grant connect on database tpcdsdb to upowerbi;\c tpcdsdbgrant usage on schema tpc_ds to upowerbi;grant select on all tables in schema tpc_ds to upowerbi; 1.3 在Power BI服务器端配置DWS ODBC驱动ODBC 驱动下载https://support.huaweicloud.com/mgtg-dws/dws_01_0032.html ODBC 驱动安装https://support.huaweicloud.com/mgtg-dws/dws_01_0086.html ODBC 数据源在PoweBI中打开该链接进行连接常见问题ODBC 驱动包的选择在华为云上,选购了windows server 2012 ECS之后,必需选择,否则会安装失败dws_1.2.x_odbc_driver_for_windows.tar.gz ECS中安装dws 1.7时,运行报如下错误dws_1.7.x_odbc_driver_for_windows.zip问题1:64bit的驱动无法安装问题2:ODBC使用32bit的驱动创建DSN时,报错均报如下错误ODBC 驱动包的版本驱动程序要与系统的体系结构一致,即64bit的系统,选择64bit的驱动
  • [开发应用] GaussDB跨集群访问HDFS
    【功能模块】背景是这样的:当前有一套FI大数据集群和GaussDB集群,每天需要把增量数据从FI复制一份到GaussDB中,有什么好的方案?1)gds虽然可以实现这个需求,但是需要单独的GDS服务器,还有数据的导出、导入过程,方案较繁琐。听说SDR也可以,但是收费。2)在GaussDB中通过创建HDFS外表,可以直接访问HDFS的数据,可以满足需求。但是这种方案的效率怎么样?在别的局点有应用过吗?对原有的大数据集群有多大的影响(例如会不会拖垮大数据集群,当前FI主要是使用Elk组件做查询)?【操作步骤&问题现象】1、2、【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • [迁移系列] Oracle + APEX 迁移至 DWS + 帆软
    迁移背景:从Oracle + apex 转向 DWS + 帆软其中apex通过匿名块拼接SQL语句,再执行语句获得查询结果帆软不支持类似于APEX的"两阶段"执行方式,仅支持一次性返回报表结果解决方法:将匿名块跟执行SQL封装在一个function中,上层直接调用对应的SQL语句获取对应的报表的结果。客户侧从备份文件中获取PLSQL语句,格式较为统一,考虑转换function脚本自动化。脚本设计:(1)APEX绑定参数均为[:P]开头,脚本可识别为入参。(2)function需要定义出参类型,目前没想到一劳永逸的返回任意类型方案。但DWS在执行function时如果出参个数及其类型与实际执行结果不符时会报错,可以利用这一点进行function的修改。脚本输出:(1)通过declare及end识别匿名块(1)识别匿名块的绑定参数,生成function的定义,入参确定,出参使用returns table,初始化状态仅指定一个出参,类型默认为text。(2)调用函数,出参默认使用null值,此时DWS存在三类报错a.function定义的出参个数与function实际的返回字段数不符:函数定义新增一个字段,默认类型还是text类型,直至无此报错b.function定义的出参类型与function实际的返回字段类型不符:修改对应出参类型为正确的类型,直至无此报错c.其他语法等报错:跳过该匿名的转换,后续手工修改语法问题:1、数字开头的对象名需要用双引号包围,否则会语法报错postgres=# create table test("48小时出货量" int)distribute by hash("48小时出货量"); CREATE TABLE postgres=# \d+ test; Table "public.test" Column | Type | Modifiers | Storage | Stats target | Description --------------+---------+-----------+---------+--------------+------------- 48小时出货量 | integer | | plain | | Has OIDs: no Distribute By: HASH(48小时出货量) Location Nodes: ALL DATANODES Options: orientation=row, compression=no postgres=# select "48小时出货量" from test; 48小时出货量 -------------- (0 rows)2、双引号可以使得对象名保持大写,Oracle默认对象名大写,DWS默认小写,如果有双引号DWS查询时也需要双引号+大写postgres=# create table test(ID int, GRADE int, "SCORE" int)distribute by hash(ID); CREATE TABLE postgres=# \d+ test; Table "public.test" Column | Type | Modifiers | Storage | Stats target | Description --------+---------+-----------+---------+--------------+------------- id | integer | | plain | | grade | integer | | plain | | SCORE | integer | | plain | | Has OIDs: no Distribute By: HASH(id) Location Nodes: ALL DATANODES Options: orientation=row, compression=no postgres=# select id,GRADE ,"SCORE" from test; id | grade | SCORE ----+-------+------- (0 rows)3、DECODE/CASE WHEN表达式的不同结果需要类型一致postgres=# select to_char(日期,'yyyy-mm-dd') 日期,DECODE(sign("时段"-10),-1,'0'||"时段","时段") 时段 from APEX_ACTIVE_USER_H; ERROR: CASE types numeric and text cannot be matched LINE 1: ...日期,'yyyy-mm-dd') 日期,DECODE(sign("时段"-10),-1,'0'||"时段... ^ CONTEXT: referenced column: 时段 postgres=# select to_char(日期,'yyyy-mm-dd') 日期,DECODE(sign("时段"-10),-1,'0'||"时段","时段"::text) 时段 from APEX_ACTIVE_USER_H; 日期 | 时段 ------+------ (0 rows) postgres=# select to_char(日期,'yyyy-mm-dd') 日期,DECODE(sign("时段"-10),-1,('0'||"时段")::numeric,"时段") 时段 from APEX_ACTIVE_USER_H; 日期 | 时段 ------+------ (0 rows) postgres=# \d+ APEX_ACTIVE_USER_H Table "public.apex_active_user_h" Column | Type | Modifiers | Storage | Stats target | Description ----------+--------------------------------+-----------+----------+--------------+------------- id | numeric | not null | main | | 日期 | timestamp(0) without time zone | | plain | | 时段 | numeric | | main | | 渗透类型 | character varying(100) | | extended | | 活跃人数 | numeric | | main | | Indexes: "apex_active_user_h_pkey" PRIMARY KEY, btree (id) TABLESPACE pg_default Has OIDs: no Distribute By: HASH(id) Location Nodes: ALL DATANODES Options: orientation=row, compression=no4、针对date类型的trunc函数需要使用date_trunc替代,因为性能问题不建议使用自定义trunc函数PS:date_trunc('YEAR/QUARTER/MONTH/WEAK/DAY',date),第二个入参必须是时间类型,如果为字符类型必须先转换为时间类型postgres=# \df date_trunc List of functions Schema | Name | Result data type | Argument data types | Type | fencedmode | propackage ------------+------------+-----------------------------+-----------------------------------+--------+------------+------------ pg_catalog | date_trunc | interval | text, interval | normal | f | f pg_catalog | date_trunc | timestamp without time zone | text, timestamp without time zone | normal | f | f pg_catalog | date_trunc | timestamp with time zone | text, timestamp with time zone | normal | f | f (3 rows)5、function如果直接select null,返回类型为text6、匿名块的设计可能存在多分支多语句,不同语句其返回字段的类型可能不同,此时需要加强制类型转换确保不同SQL返回字段类型相同PS:上层报表的字段数量是一定的,所以返回结果集字段的数量不会有变化7、pivot可通过decode/case when语句进行改写,decode更简洁,推荐使用。可视情况使用group by / group by rollup-- pivot行转列 使用sum + group by [rollup] 输出分组列名不存在的行即可 select * from ( select "时段", "订单数量" from APEX_ORDER_ANALYSIS_HB_HOUR where "下单日期" =to_date('2021-04-05','yyyy-mm-dd')) pivot (sum("订单数量") for "时段" in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23)); select "0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23" from( select 时段, sum(decode(时段,0 ,订单数量)) as "0", sum(decode(时段,1 ,订单数量)) as "1", sum(decode(时段,2 ,订单数量)) as "2", sum(decode(时段,3 ,订单数量)) as "3", sum(decode(时段,4 ,订单数量)) as "4", sum(decode(时段,5 ,订单数量)) as "5", sum(decode(时段,6 ,订单数量)) as "6", sum(decode(时段,7 ,订单数量)) as "7", sum(decode(时段,8 ,订单数量)) as "8", sum(decode(时段,9 ,订单数量)) as "9", sum(decode(时段,10,订单数量)) as "10", sum(decode(时段,11,订单数量)) as "11", sum(decode(时段,12,订单数量)) as "12", sum(decode(时段,13,订单数量)) as "13", sum(decode(时段,14,订单数量)) as "14", sum(decode(时段,15,订单数量)) as "15", sum(decode(时段,16,订单数量)) as "16", sum(decode(时段,17,订单数量)) as "17", sum(decode(时段,18,订单数量)) as "18", sum(decode(时段,19,订单数量)) as "19", sum(decode(时段,20,订单数量)) as "20", sum(decode(时段,21,订单数量)) as "21", sum(decode(时段,22,订单数量)) as "22", sum(decode(时段,22,订单数量)) as "23" from APEX_ORDER_ANALYSIS_HB_HOUR where 下单日期 =to_date('2021-04-05','yyyy-mm-dd') group by rollup(时段) )where 时段 is null; select "0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23" from( select total, sum("0")as "0", sum("1")as "1", sum("2")as "2", sum("3")as "3", sum("4")as "4",sum("5")as "5",sum("6")as "6", sum("7")as "7", sum("8")as "8", sum("9")as "9", sum("10")as "10", sum("11")as "11",sum("12")as "12", sum("13")as "13", sum("14")as "14",sum("15")as "15",sum("16")as "16",sum("17")as "17",sum("18")as "18", sum("19")as "19",sum("20")as "20",sum("21")as "21",sum("22")as "22",sum("23")as "23" from( select 1 as total,时段, sum(decode(时段,0 ,订单数量)) as "0", sum(decode(时段,1 ,订单数量)) as "1", sum(decode(时段,2 ,订单数量)) as "2", sum(decode(时段,3 ,订单数量)) as "3", sum(decode(时段,4 ,订单数量)) as "4", sum(decode(时段,5 ,订单数量)) as "5", sum(decode(时段,6 ,订单数量)) as "6", sum(decode(时段,7 ,订单数量)) as "7", sum(decode(时段,8 ,订单数量)) as "8", sum(decode(时段,9 ,订单数量)) as "9", sum(decode(时段,10,订单数量)) as "10", sum(decode(时段,11,订单数量)) as "11", sum(decode(时段,12,订单数量)) as "12", sum(decode(时段,13,订单数量)) as "13", sum(decode(时段,14,订单数量)) as "14", sum(decode(时段,15,订单数量)) as "15", sum(decode(时段,16,订单数量)) as "16", sum(decode(时段,17,订单数量)) as "17", sum(decode(时段,18,订单数量)) as "18", sum(decode(时段,19,订单数量)) as "19", sum(decode(时段,20,订单数量)) as "20", sum(decode(时段,21,订单数量)) as "21", sum(decode(时段,22,订单数量)) as "22", sum(decode(时段,22,订单数量)) as "23" from APEX_ORDER_ANALYSIS_HB_HOUR where 下单日期 =to_date('2021-04-05','yyyy-mm-dd') group by 时段 )group by total);8、unpivot可通过unnest实现--Oracle select * from ( select 商品销售额, 预收运费金额, 运费优惠券抵扣金额, 商品销售额+预收运费金额-运费优惠券抵扣金额 应收金额, 微信支付金额, 支付宝支付金额, 余额支付金额, 其他支付金额,一手币支付金额 from ( select round(sum(商品销售额),2) as 商品销售额 ,round(sum(case when 支付方式 != 9 and 是否包邮 = 0 then 预收运费金额 else 0 end)-sum(部分退款补扣运费),2) as 预收运费金额 ,round(sum(运费优惠券抵扣金额),2) as 运费优惠券抵扣金额 ,round(sum(微信支付金额),2) as 微信支付金额 ,round(sum(支付宝支付金额),2) as 支付宝支付金额 ,round(sum(余额支付金额),2) as 余额支付金额 ,round(sum(其他支付金额)-sum(case when 支付方式 = 9 and 是否包邮 = 0 then 预收运费金额 else 0 end),2) as 其他支付金额 ,round(sum(一手币支付金额),2) 一手币支付金额 from APEX_CW_SALE_ORDER_W@SLAVE12C_6 where 订单日期 between to_date('2021-04-05','yyyy-mm-dd') and to_date('2021-04-08,'yyyy-mm-dd') ) a ) a unpivot (指标名称 for 指标值 in (商品销售额, 预收运费金额, 运费优惠券抵扣金额, 应收金额, 微信支付金额, 支付宝支付金额, 余额支付金额, 其他支付金额,一手币支付金额)) ; --DWS select unnest(ARRAY['商品销售额', '预收运费金额', '运费优惠券抵扣金额','应收金额','微信支付金额','支付宝支付金额','余额支付金额','其他支付金额','一手币支付金额']) AS 指标名称, unnest(ARRAY[商品销售额,预收运费金额,运费优惠券抵扣金额,应收金额,微信支付金额,支付宝支付金额,余额支付金额,其他支付金额,一手币支付金额]) AS 指标值 from( select 商品销售额, 预收运费金额, 运费优惠券抵扣金额, 商品销售额+预收运费金额-运费优惠券抵扣金额 应收金额, 微信支付金额, 支付宝支付金额, 余额支付金额, 其他支付金额,一手币支付金额 from ( select round(sum(商品销售额),2) as 商品销售额 ,round(sum(case when 支付方式 != 9 and 是否包邮 = 0 then 预收运费金额 else 0 end)-sum(部分退款补扣运费),2) as 预收运费金额 ,round(sum(运费优惠券抵扣金额),2) as 运费优惠券抵扣金额 ,round(sum(微信支付金额),2) as 微信支付金额 ,round(sum(支付宝支付金额),2) as 支付宝支付金额 ,round(sum(余额支付金额),2) as 余额支付金额 ,round(sum(其他支付金额)-sum(case when 支付方式 = 9 and 是否包邮 = 0 then 预收运费金额 else 0 end),2) as 其他支付金额 ,round(sum(一手币支付金额),2) 一手币支付金额 from APEX_CW_SALE_ORDER_W where 订单日期 between to_date('2021-04-05','yyyy-mm-dd') and to_date('2021-04-08','yyyy-mm-dd') ));9、Oracle自增主键可使用function+trigger的形式替代(update:考虑性能影响,DWS建议使用sequence+primary key)-- Oracle create sequence MY_SUPPLY_CG_KEEP_M_SEQ minvalue 1 maxvalue 9999999999999999999999999999 start with 49421 increment by 1 cache 20; CREATE OR REPLACE TRIGGER "MY_SUPPLY_CG_KEEP_M_TRIG" before insert on "SUPPLY_CG_KEEP_M" for each row begin if :new."ID" is null then select "MY_SUPPLY_CG_KEEP_M_SEQ".nextval into :new."ID" from sys.dual; end if; end; / --DWS create sequence MY_SUPPLY_CG_KEEP_M_SEQ --创建序列 minvalue 1 maxvalue 9223372036854775807 --注意Oracle与DWS序列的最大值范围不同,需要修改 start with 2757641 increment by 1 cache 20;--DWS仅支持cache关键字,详见DWS产品文档 CREATE OR REPLACE FUNCTION MY_SUPPLY_CG_KEEP_M_TRIG_FUNC() RETURNS trigger AS $BODY$ --创建函数 BEGIN NEW.ID := nextval('MY_SUPPLY_CG_KEEP_M_SEQ'); RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql'; CREATE TRIGGER MY_SUPPLY_CG_KEEP_M_TRIG --创建触发器 BEFORE INSERT ON SUPPLY_CG_KEEP_M FOR EACH ROW WHEN (NEW.ID IS NULL) EXECUTE PROCEDURE MY_SUPPLY_CG_KEEP_M_TRIG_FUNC(); ALTER SEQUENCE MY_SUPPLY_CG_KEEP_M_SEQ OWNED BY SUPPLY_CG_KEEP_M.ID; --添加关联10、in  nvl() 修改为 = nvl()11、Navitcat在执行大结果集语句时性能较差,建议使用Data Studio12、array的初始化在DWS的新老版本上有差异,老版本需要使用valname = array[];的形式进行初始化,新版本可以使用valname=valname();形式进行初始化13、case when表达式不同分支返回的类型可能不一致,转换存储过程后如果类型不一致需要对输出列做类型强转
  • [系统培训] 数仓GaussDB(DWS)教程培训汇总
    数仓GaussDB(DWS)教程培训汇总,欢迎大家一起交流探索,共同学习~分类主题链接产品文档数仓GaussDB(DWS)产品主页https://www.huaweicloud.com/product/dws.html数仓GaussDB(DWS)帮助文档https://support.huaweicloud.com/dws/index.html数仓GaussDB(DWS)生态地图_工具类https://bbs.huaweicloud.com/forum/thread-103637-1-1.html精品博文【博文汇总】GaussDB(DWS)博文汇总1https://bbs.huaweicloud.com/forum/thread-84739-1-1.html【博文汇总】GaussDB(DWS)博文汇总2https://bbs.huaweicloud.com/forum/thread-113509-1-1.html【8大场景系列】玩转数仓运维,做个不秃头的DBA https://bbs.huaweicloud.com/forum/thread-118222-1-1.html【干货合集】数仓性能调优必读,带你进阶为性能调优高手https://bbs.huaweicloud.com/forum/thread-107669-1-1.html维护宝典这一篇就够了,全方位带你了解集群类问题!!!https://bbs.huaweicloud.com/forum/thread-114402-1-1.html【维护宝典汇总】GaussDB(DWS)维护宝典汇总贴1https://bbs.huaweicloud.com/forum/thread-85548-1-1.html【维护宝典汇总】GaussDB(DWS)维护宝典汇总贴2https://bbs.huaweicloud.com/forum/thread-98530-1-1.html项目实践【项目实践汇总】GaussDB(DWS)项目实践汇总贴https://bbs.huaweicloud.com/forum/thread-114093-1-1.html课程培训【DevRun直播汇总】GaussDB(DWS)黑科技直播汇总https://bbs.huaweicloud.com/forum/thread-91944-1-1.html【培训视频汇总】GaussDB(DWS) 培训视频汇总,https://bbs.huaweicloud.com/forum/thread-93315-1-1.html最新活动【最新活动】DWS活动火热进行中,互动好礼送不停https://bbs.huaweicloud.com/forum/thread-113500-1-1.html更多信息数仓GaussDB(DWS)微信公众号,和您分享最新最全的PB级数仓黑科技(扫码添加)数仓GaussDB(DWS)下助手微信,加入专家群聊,大神直聊(扫码加入)【推荐阅读】【最新活动汇总】DWS活动火热进行中,互动好礼送不停(持续更新中)  HOT  【博文汇总】GaussDB(DWS)博文汇总1,欢迎大家交流探讨~(持续更新中)【维护宝典汇总】GaussDB(DWS)维护宝典汇总贴1,欢迎大家交流探讨(持续更新中)【项目实践汇总】GaussDB(DWS)项目实践汇总贴,欢迎大家交流探讨(持续更新中)【DevRun直播汇总】GaussDB(DWS)黑科技直播汇总,欢迎大家交流学习(持续更新中)【培训视频汇总】GaussDB(DWS) 培训视频汇总,欢迎大家交流学习(持续更新中) 扫码关注我哦,我在这里↓↓↓ 
  • [热门活动] 【火热互动中】DevRun直播带您解锁数仓“索引”的正确打开姿势,邀您瓜分万元好礼!!!
    【直播主题和时间】       数仓“索引”的正确打开姿势     2021年4月15日20:00-21:00【活动介绍】      本期DevRun开发者沙龙直播活动,我们邀请了华为云数仓GaussDB(DWS)资深存储引擎专家虫虫,携手内核研发工程师小小酥带来数仓“索引“的正确打开姿势,来为大家揭开分布式数仓索引的神秘面纱,实践原理相结合,让您摆脱还停留在只会SQL简单调优处境的尴尬,利用好索引这把武器,结合存储提供的多种调优手段,玩转数仓GaussDB(DWS)!本场直播不仅课程精彩,参与论坛&直播互动、报名观看直播,移动电源、蓝牙音箱、折叠背包、PVC袋多重好礼等你来拿,更有机会抽取价值3500元的DWS免费试用机会哦!!!活动即刻开启,凡在本主题帖中留言、参与直播或论坛互动的用户均可参与抽奖哦~点击观看直播>>https://bbs.huaweicloud.com/live/DevRun_live/202104152000.html,直播互动3轮抽奖等着你,快来围观论坛互动赢好礼>>https://bbs.huaweicloud.com/forum/thread-119517-1-1.html,超多好礼等你来拿,更有机会抽取价值3500元的DWS免费试用机会,不容错过!!!点此报名直播>>点此报名,直播不迷路(直播过程中3轮抽奖,不容错过哦~)【推荐阅读】【最新活动汇总】DWS活动火热进行中,互动好礼送不停(持续更新中)  HOT  【博文汇总】GaussDB(DWS)博文汇总1,欢迎大家交流探讨~(持续更新中)【维护宝典汇总】GaussDB(DWS)维护宝典汇总贴1,欢迎大家交流探讨(持续更新中)【项目实践汇总】GaussDB(DWS)项目实践汇总贴,欢迎大家交流探讨(持续更新中)【DevRun直播汇总】GaussDB(DWS)黑科技直播汇总,欢迎大家交流学习(持续更新中)【培训视频汇总】GaussDB(DWS) 培训视频汇总,欢迎大家交流学习(持续更新中)扫码关注我哦,我在这里↓↓↓
  • [开发应用] 微软的powerBI 是否可以直接对接DWS数据库?
    微软的powerBI 是否可以直接对接DWS数据库?
  • [生态空间] 华为云GaussDB(DWS)实时数仓:实时数据与历史数据关联分析
       随着互联网和物联网的快速发展,实时数据分析应用的业务需求量日益增长,例如实时推荐、实时风控、实时监测、精准营销等,数据实时处理能力成为企业提升竞争力的一大因素。华为GaussDB(DWS)实时数仓提供即开即用、可扩展且完全托管的分析型数据仓库服务,支撑高并发高性能实时数据分析。4月8日在华为云TechWave技术峰会上,GaussDB(DWS)技术专家李海丰详谈实时数仓黑科技。        GaussDB(DWS) 实时数据分析技术架构基于企业级内核,采用统一SQL引擎,多引擎协同,实现数据体系内自闭环,从而达到一份数据多个引擎调用,高效多维度分析。依据流数据和时序数据特征打造出从优化器、执行器到存储的全系列、高性能、可扩展的实时数仓,提供四大技术创新:1.    CEP引擎告别T+1模式改变传统数据先入库再查询的分析模式,CEP引擎提供流计算能力:数据先计算分析,并实时反馈计算结果,计算结果可以继续进行下一步计算或者保存,大大降低了数据处理时延。2.    1 = N:GaussDB(DWS) 实时数仓= Flink/Spark Streaming + Druid + InfluxDB……国内首创在同一套系统内实现流和时序数据的处理和预聚合操作,减少数据跨系统间迁移,降低冗余存储和加载时间,最大化的利用系统缓存,提高处理效率。3. 预置丰富时序、流处理函数,一切皆SQL 采用最简洁高效的数据开发语言SQL,并预置丰富的时序和流处理函数,通过SQL即可完成复杂流式计算,可实现亿级数据,秒级聚合,极大简化应用开发。4. 高达40:1的压缩比,极大节约存储成本  通过自适应压缩算法,充分利用行列混合存储+时序数据专用压缩算法优势,实现低时延查询和高效存储。  技术专家李海丰还分享了实时智能监控平台的实践,传统数据仓库单节点入口性能和散列度存在瓶颈,GaussDB(DWS)实时数仓单节点入库性能超过10w/s,支持千万级散列度计算,彻底解决时序数据和流数据“装不进”和“算不动”的问题。  目前GaussDB(DWS)实时数仓已经正式发布公测。华为云GaussDB(DWS)实时数仓仍将不断迭代优化,为企业用户提供更强大的实时数据分析能力。【推荐阅读】【最新活动汇总】DWS活动火热进行中,超多互动好礼送不停(持续更新中)  HOT 【博文汇总】GaussDB(DWS)博文汇总1,欢迎大家交流探讨~(持续更新中)【维护宝典汇总】GaussDB(DWS)维护宝典汇总贴1,欢迎大家交流探讨(持续更新中)【项目实践汇总】GaussDB(DWS)项目实践汇总贴,欢迎大家交流探讨(持续更新中)【DevRun直播汇总】GaussDB(DWS)黑科技直播汇总,欢迎大家交流学习(持续更新中)【培训视频汇总】GaussDB(DWS) 培训视频汇总,欢迎大家交流学习(持续更新中)扫码关注我哦,我在这里↓↓↓
  • [生态空间] 华为云助力招商银行零售客户“体验升级” ——招商银行云化数仓探索之路
    招商银行定位为“金融科技银行”,作为银行业数字化转型的代表和先行者,在持续金融创新之路上坚定不移的探索前行。招行数据仓库架构师曾民在华为云TechWave全球技术峰会上分享了招商银行云化数仓探索之路早在1998年,招行就开始引入数据仓库的理念,使用SYBASE搭建数据处理平台,成为国内最早一批开展企业级数据仓库建设的银行。2002年基于DB2构建数据仓库平台,再到2013年重构TD仓库。招行基本上建成涵盖客户服务、产品销售、风险管理、绩效管理、监管审计等领域的完整的数据应用平台。2020年招行正式启动数据使能平台建设,并提出了“人人用数,人人都是数据分析师”的数据发展战略,一体机数据仓库使用模式遇到了瓶颈:数据仓库平台存储和算力无法匹配应用数据量高速增长。随着云计算技术的蓬勃发展,云化数据仓库可通过计算存储和网络的资源池化管理,按需弹性部署;云分布式架构以其灵活和高可用优势,成为招商银行数据使能平台首选架构。面向未来,新一代数据仓库平台是怎么样的?在不断思考中,招商银行开启了新一代云数据仓库的选型。      打破重建无疑是极其痛苦的。新一代云数据仓库的考察包括数据平台的数据处理能力、性能、高可用性、扩展性、易用性、通用性、自主可控性等维度。基准测试基于TPC-DS 1000X标准测试套件,包括4大项、11个子任务;场景测试基于“分行手机银行行为分析”业务,包括6960个数据库对象,2470个批处理脚本,数据量超过30TB。随后,数据研发部启动了更严苛运维测试,毕竟数据平台除了性能指标以外,更重要的是要能稳定运行。结合招行实际运维需要,数据中心从安全功能、性能容量、管理功能、部署能力、维护能力、拓展能力这六个维度设计了若干测试用例,涉及7大项,98个子任务。测试评估结果,华为云数仓GaussDB(DWS)完全满足招行标准。      华为云数仓GaussDB(DWS) “大”、“快”、“稳”的技术特征符合招商银行对核心数仓的能力要求。尤其是“大”:基于MPP的全对称分布式架构,横向可扩展至2048节点大集群,支持EB级数据量,突破传统数仓扩展的天花板!      招商银行2020年4月正式启动原数据仓库平台向华为云GaussDB(DWS)迁移项目。招行信息技术部、数据中心、架构办等多方部门通力合作,华为数据仓库研发专家、云技术专家以及资深服务技术团队全程鼎力支持,联合成立数仓迁移实施团队,为招行核心数仓平台迁移保驾护航。2020年7月完成基础设施部署并开始应用迁移;2021年1月完成首批11个零售应用切换,并全部完成投产,所有应用均平稳运行,原数仓平台相关应用已关停。      基于华为云GaussDB(DWS)构筑全新一代云上数仓,招商银行实现对零售客户体验的实时监测和数字化呈现,更大的算力支撑使得跑批作业速度较之前得到大幅提升,数据分析师们得以更快更深更广地挖掘客户体验数据价值,全面升级零售客户业务体验。      招行云化数仓的探索还在继续,2021年6月预计完成一半应用迁移,2022年6月预计完成全部应用迁移和投产。华为云数仓GaussDB(DWS)也将会继续助力招商银行的数字化转型之路,未来可期。【推荐阅读】【最新活动汇总】DWS活动火热进行中,超多互动好礼送不停(持续更新中)  HOT 【博文汇总】GaussDB(DWS)博文汇总1,欢迎大家交流探讨~(持续更新中)【维护宝典汇总】GaussDB(DWS)维护宝典汇总贴1,欢迎大家交流探讨(持续更新中)【项目实践汇总】GaussDB(DWS)项目实践汇总贴,欢迎大家交流探讨(持续更新中)【DevRun直播汇总】GaussDB(DWS)黑科技直播汇总,欢迎大家交流学习(持续更新中)【培训视频汇总】GaussDB(DWS) 培训视频汇总,欢迎大家交流学习(持续更新中)扫码关注我哦,我在这里↓↓↓
  • [实践系列] GaussDB(DWS)记录数据表操纵日志--系统日志提取方案
    一、 背景概述        客户要求获取数据库表数据操纵的实时日志信息,包括对数据表的增删改操作,并且保留SQL语句中的参数值,对于该需求我们考虑了以下两个方案,一个使用逻辑解码,通过反解xlog的方式生成逻辑日志;另一种方案通过参数调整系统日志记录内容,使其记录表数据操作信息,再将这客户所需部分信息提取出来另行保存。因逻辑解码属于poc特性,不建议现网使用,选择满足客户需求且风险更小的系统日志提取方案。二、 系统日志概述        集群运行时CN、DN、GTM、CM以及集群安装部署时产生的日志统称为系统日志。如果集群在运行时发生故障,可以通过这些系统日志即使定位故障发生的原因,根据日志内容指定恢复集群的方法。用户可以根据自己的需要,通过修改实例数据目录下的postgresl.conf文件中特定的参数来控制日志的输出,从而更好的了解数据库的运行状态。CN、DN日志每一行内容默认格式:        日期+时间+时区+用户名称+数据库名称+会话ID+日志级别+日志内容log_statement参数说明:        log_statement参数配置日志中记录哪些SQL语句,默认值为none,不记录任何SQL语句,配置为ddl记录数据定义语句,mod记录数据定义语句和数据操作语句,all记录所有语句,针对需求我们需要将此参数设置为all。三、 实施方案1.   修改log_statement参数使日志中记录所有语句gs_guc reload -Z coordinator -N all -I all -c “log_statement=all”2.   提取表更新信息使用grep过滤日志中数据操纵语句,参考命令如下cat postgresql.log | grep -v postgres | grep -E -i ": insert|: update|: delete" | grep -v -i ": select " | grep -v '\$' cat postgresql.log | grep -v postgres | grep -E -i -A 1 ": insert|: update|: delete" | grep '\$' | grep -v -i ": select "3.   自动化读取脚本编写策略        CN日志文件到达指定大小会重新生成新的文件,当一份CN日志生成时,从日志文件中获取表数据操作信息,并写入到指定文件中,进行转存处理。因系统日志文件名中包含时间信息,可以根据系统获取的时间获取对应时间的文件列表,日志文件命名规则postgresql-%Y-%m-%d_%H%M%S.log#获取当前时间精确到小时(2小时),和日志文件名同格式date=`date "+%Y-%m-%d_%H"` date1=`date -d "1 hour ago" "+%Y-%m-%d_%H"`使用两个参数获取当前两小时内的文件列表fileList=`ls /var/log/Bigdata/mpp/omm/pg_log/cn_*| grep -E "$date|$date1"`将文件列表转存为数组,当文件列表更新时,说明上一份日志已经打印完成,使用cat从文件列表的倒数第二份文件中读取日志信息。cat /var/log/Bigdata/mpp/omm/pg_log/cn_*/${arrylist[$fileNums-2]} | grep -v postgres | grep -E -i ": insert|: update|: delete" | grep -v -i ": select " | grep -v '\$' > /srv/BigData/mppdb/data1/log/${arrylist[$fileNums-2]}.log cat /var/log/Bigdata/mpp/omm/pg_log/cn_*/${arrylist[$fileNums-2]} | grep -v postgres | grep -E -i -A 1 ": insert|: update|: delete" | grep '\$' | grep -v -i ": select " >> /srv/BigData/mppdb/data1/log/${arrylist[$fileNums-2]}.log完整实现脚本如下#log_extraction.sh #!/bin/bash #get all filename in specified path source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile #获取当前时间精确到小时(2小时),和日志文件名相同 date_tmp=`date "+%Y-%m-%d_%H"` date1_tmp=`date -d "1 hour ago" "+%Y-%m-%d_%H"` #获取当前两小时文件数量 countNums=`ls /var/log/Bigdata/mpp/omm/pg_log/cn_* | grep -E "$date_tmp|$date1_tmp" |wc -l` while true do date=`date "+%Y-%m-%d_%H"` date1=`date -d "1 hour ago" "+%Y-%m-%d_%H"` #读取两小时文件列表 fileList=`ls /var/log/Bigdata/mpp/omm/pg_log/cn_*| grep -E "$date|$date1"` fileNums=`ls /var/log/Bigdata/mpp/omm/pg_log/cn_* | grep -E "$date|$date1" |wc -l` #当文件数新增1时 if [ $((10#$fileNums)) -eq $((10#$countNums+1)) ] then #将文件列表转存为数组 set i=0 for file in $fileList do arrylist[i]=$file i=$[$i+1] done #根据过滤条件提取刚生成的日志文件 cat /var/log/Bigdata/mpp/omm/pg_log/cn_*/${arrylist[$fileNums-2]} | grep -v postgres | grep -E -i ": insert|: update|: delete" | grep -v -i ": select " | grep -v '\$' > /srv/BigData/mppdb/data1/log/${arrylist[$fileNums-2]}.log cat /var/log/Bigdata/mpp/omm/pg_log/cn_*/${arrylist[$fileNums-2]} | grep -v postgres | grep -E -i -A 1 ": insert|: update|: delete" | grep '\$' | grep -v -i ": select " >> /srv/BigData/mppdb/data1/log/${arrylist[$fileNums-2]}.log #将文件按时间排序 sort -k2nr /srv/BigData/mppdb/data1/log/${arrylist[$fileNums-2]}.log > /srv/BigData/mppdb/data1/log/recored_${arrylist[$fileNums-2]} rm /srv/BigData/mppdb/data1/log/${arrylist[$fileNums-2]}.log fi #更新外部参数 countNums=$fileNums sleep 10 done
  • HDC.Cloud2021|华为云GaussDB让开发者们不再加班修复数据
     众所周知,智能时代的来临正是因为开发者们用一行行代码铸就了千行百业向上、向前的阶梯。他们大到从2G至5G的突破,小到每个技术的由点到面的攻克,每个技术点的突破都会成为行业里最新的利器,比如在数据库领域,DBA们苦Cassandra“数据不一致”久矣: “一致性级别设为local quorum,查询某个分区键的条数,每次查询,条数都不一样。” “按这个分区键的token修复,直接瞬间修复结束。但是再查,还是每次查询条数不一致。” “之前遇到墓碑丢失的问题,单个token查询结果不一致,修复也解决不了”…..如今,强一致的华为云数据库GaussDB(for Cassandra)来了,DBA和开发者们再也不用加班修复数据了。 GaussDB(for Cassandra)是一款基于华为自主研发的存算分离架构的分布式云数据库。它是一个强一致性系统,架构基于华为内部强大且广泛使用的自研分布式存储系统DFV,充分发挥了云开源的弹性伸缩、资源共享的优势,它高度兼容Cassandra协议,拥有超强写入性能,同时具有分钟级节点扩容、数据强一致等优势,性能更强,数据更可靠,扩容更敏捷。整体性能是开源自建2~3倍。开源Cassandra为何不能实现数据强一致?  众所周知,开源Cassandra使用CAP模型中的 AP 放弃了强一致是个既定事实。拿开源Cassandra一致性读场景来说,假如你在图书馆的某一排书架上想借阅一本书,假设书架上书本只有新旧之分,本来你想借阅新入馆的书本,但规则是就近取书,这意味着你拿到的可能不是最新的书本;如果读一致性要求为QUORUM(即读取任一数据中心中quorum数量的节点的结果,返回合并后timestamp最新的结果),则内核会自动触发读修复,然后返回给客户端,也就是图书管理员帮你对比新旧之后取到了最新的书本,假如此时有副本所在节点出现坏盘,且在一定的周期内没有完成数据修复,那么在业务查询时,查到的数据会不准确。GaussDB(for Cassandra)如何实现数据强一致?  GaussDB(for Cassandra)则采用存算分离架构来攻克数据不一致的难关,数据的副本一致性由DFV存储平台来保证,对计算节点来说数据单副本、数据强一致,查询命令下发后,协调节点直接从数据节点取数据即可完成。另外支持N-1个节点故障容忍,在系统故障重构或备份恢复时,GaussDB(for Cassandra)能提供10倍于开源Cassandra的性能。GaussDB(for Cassandra)有哪些使用价值?1、在工业制造&气象业,支持PB级数据量,实时精准预测天气 随着科技进步,采集的气象数据指数增长,GaussDB(for Cassandra)可以应对降雨量、湿度、温度等PB级的数据量,支持高并发写入读取;还可以为气象算法、天气预报做到实时在线精准分析;进行离线数据分析时,可以实现分析时长缩短60%。2、在互联网领域,支持用户画像、推荐系统,打造更好的用户体验平台  GaussDB(for Cassandra)具备高并发写入性能和高可扩展性,可保障业务的高可用和稳定性。例如:存放用户画像数据场景,可完美解决数据量大、数据结构Scheme频繁变更等场景;推荐系统中,可分析用户最近的浏览数据,然后推荐相关资源。3、支持实时数据分析、离线分析,离线分析时长缩短60%,效率大幅提升 GaussDB(for Cassandra)提供Stream功能,能对数据的变更做实时在线分析,还可以实现秒级的实时响应,这都是开源Cassandra所不具备的能力。比如某店铺有新用户注册了会员,系统自动向该会员推送商品优惠活动。此外,由于离线分析时长缩短60%,也为商家争取了更多的决策时间。Stream功能支撑实时分析原理图       华为云GaussDB(for Cassandra)正是依托于存算分离架构,才保证了查询准确率、规避了数据不一致修复数据造成的人力成本,才使得GaussDB(for Cassandra)在制造业、物流、医疗保健、房地产、能源生产、农业等领域非常受欢迎,因此,DBA们无需忧心数据修复、数据丢失等问题只需探索专业领域里的星辰大海。        作为华为ICT基础设施业务面向全球开发者的年度盛会,华为开发者大会2021(Cloud)将于2021年4月24日-26日在深圳举行。本届大会以#每一个开发者都了不起#为主题,将汇聚业界大咖、华为科学家、顶级技术专家、天才少年和众多开发者,共同探讨和分享云、计算、人工智能等最新ICT技术在行业的深度创新和应用。智能时代,每一个开发者都在创造一往无前的奔腾时代。世界有你,了不起!
  • [实践系列] 数据仓库服务(DWS)事件管理记录为空的问题解决方案
    问题现象:用户在创建、扩容、删除dws集群时,在事件管理的菜单目录上查询不到操作的事件记录排查思路:1.检查serviceCM =》consoleframework服务配置 =》silvan配置信息 =》region关联service 里面有没有配置当前局点的eventservice服务,并且检查lb地址以及端口是否为31417。consoleframework服务配置2.登录部署dws服务的cdk集群的master节点机器,执行 curl -kv lb域名:31417 检查网络防火墙端口是否畅通,若curl不通则需要打通cdk到lvs 31417的防火墙端口。3.检查serviceCM =》consoleframework服务配置 =》stage配置信息 =》服务配置 里面搜索dws服务,点击进入后检查url mapping里面透传文件中的targetService是否为eventservice。4.如若前三点都排查过正常,则需要登录event容器中查看event日志文件报错信息,再定位原因。
  • [运维管理] 【Gaussdb 8.1.0】【数据倾斜】通过数据目录定位倾斜表问题
    【功能模块】【操作步骤&问题现象】发现有数据倾斜后,想通过数据目录查找到倾斜比较大的表,如果是分区表,在数据目录下,每个分区对应一个文件,并且文件名不一样,这种如何汇总统计一个分区表的总大小?【截图信息】【日志信息】(可选,上传日志内容或者附件)
总条数:2749 到第 页
上滑加载中