-
【摘要】 GaussDB(DWS)数据库智能监控运维服务体系提供了查询粒度得详细信息,本文介绍了采集得原始数据,并介绍了查询监控页面和相关得openAPI接口。原始采集项采集说明采集字段类 型含义db_namevarchar数据库名称inst_namevarchar实例名称pidvarchar线程id(会话id,session id)query_idvarchar语句执行使用的内部query_idquery_bandvarchar用于标示作业类型,可通过guc参数query_band进行设置,默认为空字符串job_namevarchar这个值是从query_band的字段中取出来的,位置0job_instvarchar这个值是从query_band的字段中取出来的,位置1user_namevarchar连接到后端的用户名application_namevarchar连接到后端的应用名client_addresstext连接到后端的客户端的ip地址,如果此字段是null,它表明通过服务器机器上unix套接字连接客户端或者这是内部进程,如autovacuumclient_hostnametext客户端的主机名,这个字段是通过client_addr的反向dns查找得到。这个字段只有在启动log_hostname且使用ip连接时才非空client_porttext客户端用于与后端通讯的tcp端口号,如果使用unix套接字,则为-1waitingboolean如果后台当前正等待锁则为truestart_timebigint语句执行的开始时间block_timebigint语句执行前的阻塞时间 (单位ms)durationbigint语句已经执行的时间 (单位ms)estimate_total_timebigint语句执行预估总时间 (单位ms)estimate_left_timebigint语句执行预估剩余时间 (单位ms)enqueuevarchar工作负载管理资源状态resource_poolvarchar用户使用的资源池control_groupvarchar语句所使用的cgroupmin_peak_memoryint4语句在所有dn上的最小内存峰值 (单位mb)max_peak_memoryint4语句在所有dn上的最大内存峰值 (单位mb)average_peak_memoryint4语句执行过程中的内存使用平均值 (单位mb)memory_skew_percentint4语句在各dn间的内存使用倾斜率estimate_memoryint4语句预估使用内存 (单位mb)spill_infovarchar语句在所有dn上的下盘信息min_spill_sizeint4若发生下盘,所有dn上下盘的最小数据量 (单位mb) 默认为0max_spill_sizeint4若发生下盘,所有dn上下盘的最大数据量 (单位mb) 默认为0average_spill_sizeint4若发生下盘,所有dn上下盘的平均数据量 (单位mb) 默认为0spill_skew_percentint4若发生下盘,dn间下盘倾斜率min_dn_timebigint语句在所有dn上的最小执行时间 (单位ms)max_dn_timebigint语句在所有dn上的最大执行时间 (单位ms)average_dn_timebigint语句在所有dn上的平均执行时间 (单位ms)dntime_skew_percentint4语句在各dn间的执行时间倾斜率min_cpu_timebigint语句在所有dn上的最小cpu时间 (单位ms)max_cpu_timebigint语句在所有dn上的最大cpu时间 (单位ms)total_cpu_timebigint语句在所有dn上的cpu总时间 (单位ms)cpu_skew_percentint4语句在各dn间的cpu时间倾斜率warningtext主要显示如下几类告警信息以及sql自诊断调优相关告警average_peak_iopsint4语句在所有dn上的每秒平均io峰值(列存单位是次/s,行存单位是万次/s)iops_skew_percentint4语句在dn间的io倾斜率max_peak_iopsint4语句在所有dn上的每秒最大io峰值(列存单位是次/s,行存单位是万次/s)min_peak_iopsint4语句在所有dn上的每秒最小io峰值(列存单位是次/s,行存单位是万次/s)querytext查询语句query_plantext查询计划query_statustext当前查询语句的实时运行状态 (active idle idle in transaction idle in transaction(aborted) fastpath function call disabled)wlm_statustext当前查询语句在资源池上的运行状态 (pending running finished aborted active unknown)wlm_attribtext语句的属性 (ordinary simple complicated internal)lanevarchar快慢车道 (fast or slow)页面呈现概览页面聚合指标说明聚合指标名称指标说明计算方式运行处于运行中查询的数量state = ‘active’ state = ‘fastpath function call’ 为了保证数据一致性,这里还需要减掉阻塞和延迟的查询数量。阻塞处于阻塞中查询的数量state = ‘active’ and waiting = ‘t’取消后端在事务中,但事务中有语句执行失败state = ‘idle in transaction (aborted)’延迟查询正在排队等待执行state = ‘active’ and enqueue is not NULL快慢车道处于快车道中的查询和处于慢车道中的查询数量lane = ‘fast’ lane = ‘slow’查询详情查询详情条目说明指标名称指标描述基本信息该查询的基本信息:用户名,数据库,开始时间,预估执行时间等等调优警告该语句触发的内核调优告警,没有的话返回空实时资源消耗展示SQL执行过程中,CPU,内存,I/O下盘量指标的变化趋势(该页面仅实时查询下钻显示)历史资源消耗展示SQL执行过程中,CPU,内存,I/O下盘量指标的变化趋势查询语句该查询所执行的SQL语句查询计划该查询的语句的查询计划openAPI (华为云未上线)/v1/{project_id}/dms/clusters/{cluster_id}/query{ "queries": [ { "query": "select count(*) \r\nfrom store_sales\r\n ,household_demographics \r\n ,time_dim, store\r\nwhere ss_sold_time_sk = time_dim.t_time_sk \r\n and ss_hdemo_sk = household_demographics.hd_demo_sk \r\n and ss_store_sk = s_store_sk\r\n and time_dim.t_hour = 8\r\n and time_dim.t_minute >= 30\r\n and household_demographics.hd_dep_count = 5\r\n and store.s_store_name = 'ese'\r\norder by count(*)\r\nlimit 100;", "max_cpu_time": 0, "min_cpu_time": 0, "total_cpu_time": 0, "cpu_skew": 0, "max_peak_mem": 11, "min_peak_mem": 11, "avg_peak_mem": 11, "mem_skew": 0, "max_spill_size": 0, "min_spill_size": 0, "avg_spill_size": 0, "spill_skew": 0, "max_peak_iops": 0, "min_peak_iops": 0, "avg_peak_iops": 0, "iops_skew": 0, "db_name": "test", "application": "gsql", "query_id": "79657418412457882" }, { "query": "WITH web_v1 as (\r\nselect\r\n ws_item_sk item_sk, d_date,\r\n sum(sum(ws_sales_price))\r\n over (partition by ws_item_sk order by d_date rows between unbounded preceding and current row) cume_sales\r\nfrom web_sales\r\n ,date_dim\r\nwhere ws_sold_date_sk=d_date_sk\r\n and d_month_seq between 1212 and 1212+11\r\n and ws_item_sk is not NULL\r\ngroup by ws_item_sk, d_date),\r\nstore_v1 as (\r\nselect\r\n ss_item_sk item_sk, d_date,\r\n sum(sum(ss_sales_price))\r\n over (partition by ss_item_sk order by d_date rows between unbounded preceding and current row) cume_sales\r\nfrom store_sales\r\n ,date_dim\r\nwhere ss_sold_date_sk=d_date_sk\r\n and d_month_seq between 1212 and 1212+11\r\n and ss_item_sk is not NULL\r\ngroup by ss_item_sk, d_date)\r\n select *\r\nfrom (select item_sk\r\n ,d_date\r\n ,web_sales\r\n ,store_sales\r\n ,max(web_sales)\r\n over (partition by item_sk order by d_date rows between unbounded preceding and current row) web_cumulative\r\n ,max(store_sales)\r\n over (partition by item_sk order by d_date rows between unbounded preceding and current row) store_cumulative\r\n from (select case when web.item_sk is not null then web.item_sk else store.item_sk end item_sk\r\n ,case when web.d_date is not null then web.d_date else store.d_date end d_date\r\n ,web.cume_sales web_sales\r\n ,store.cume_sales store_sales\r\n from web_v1 web full outer join store_v1 store on (web.item_sk = store.item_sk\r\n and web.d_date = store.d_date)\r\n )x )y\r\nwhere web_cumulative > store_cumulative\r\norder by item_sk\r\n ,d_date\r\nlimit 100;", "max_cpu_time": 487, "min_cpu_time": 1, "total_cpu_time": 1435, "cpu_skew": 50, "max_peak_mem": 37, "min_peak_mem": 21, "avg_peak_mem": 28, "mem_skew": 24, "max_spill_size": 0, "min_spill_size": 0, "avg_spill_size": 0, "spill_skew": 0, "max_peak_iops": 0, "min_peak_iops": 0, "avg_peak_iops": 0, "iops_skew": 0, "db_name": "test", "application": "gsql", "query_id": "79657418412457869" } ], "timestamp": 1616679496270, "cluster_id": "9c11a33a-64e6-40c1-93bd-01b2255b2228" }想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~转载来自:https://bbs.huaweicloud.com/blogs/266744
-
1 获取并安装巡检工具1.1 安装说明1、此方法适用于所有的线上版本(HCS\HCSO\HC等)。2、2020.9.30 发布版本,将工具已经集成到了产品的镜像中,新安装环境可以进入沙箱内的/opt/dws/opstool/ 目录下,因此可以不需要安装,进入沙箱中/opt/dws/opstool/目录,直接执行gs_check命令即可;升级上来的集群,因为不会重新安装镜像,所以沙箱内的/opt/dws/opstool/目录无巡检工具,需要自己安装。3、2021.6.30 发布版本,由于新特性支持更新插件包,升级到此版本后会自动将巡检工具部署到沙箱内的/opt/dws/opstool/ 目录下,因此可以不需要安装,进入沙箱中/opt/dws/opstool/目录,直接执行gs_check命令即可。1.2 准备巡检工具线上DWS自带gs_check巡检工具目前因为root互信等原因无法执行巡检,需要手动上传特定版本的gs_check到obs,然后在集群里面下载安装之后进行巡检。将如下巡检工具上传至目标集群相同region的obs桶,并赋予匿名用户读取权限,并获取到下载链接。具体上传obs步骤可参考产品手册:《上传数据到OBS:https://support.huaweicloud.com/intl/zh-cn/devg-dws/dws_04_0057.html》1.3 安装巡检工具登陆进dws集群第一个cn节点,root用户执行wget下载巡检工具、解压、并赋予Ruby用户权限:cd /var/chroot/DWS/data1wget https://akctong.obs.cn-east-3.myhuaweicloud.com/8.1.0.101-inspect-e629bad.tar.gzmkdir checktar -xvf 8.1.0.101-inspect-e629bad.tar.gz -C checkchown -R Ruby:Ruby check/使用Ruby用户进入沙箱,通过gs_ssh 命令将check目录分发到所有节点。XXX为当前节点的主机名。su - Rubyssh hostnamecd /DWS/data1gs_ssh -c "scp -r Ruby@XXX:/DWS/data1/check /DWS/data1/"1.4 准备Ruby用户密码提前解密查好目标集群Ruby用户的密码。(8.1.1.xxx-inspect-xxxxx.tar.gz 版本已经不需要输入Ruby密码)2 执行巡检2.1 日常巡检使用Ruby用户登陆第一个cn节点在沙箱内执行日常巡检cd /DWS/data1/check./gs_check -e inspect2.2 扩容前巡检使用Ruby用户登陆第一个cn节点在沙箱内执行扩容前巡检cd /DWS/data1/check./gs_check -i CheckCollector./gs_check -e expand2.1 升级前巡检使用Ruby用户登陆第一个cn节点在沙箱内执行升级前巡检cd /DWS/data1/check./gs_check -e upgrade每个巡检会在回显中生成类似/var/chroot/DWS/data1/check/inspection/output/CheckReport_202103156286720005.tar.gz的文件,即巡检结果。想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料~
-
背景介绍• 随着业务的发展,RDS的负载在逐渐增长,同时还会有新的RDS到DWS的表级同步链路需求• 随着链路数量的增加,RDS上的资源在数据同步上消耗越来越大• 为了提高系统的可靠性,建议采用增加中间库方案来优化数据复制链路方案一:通过主库实现表级同步方案解释:• 表级同步的全量同步和增量同步都是从RDS生产库上获取数据• 同步的全量阶段,对源端RDS生产库上有一定压力,可在业务低峰期实施优势:• 无需额外的RDS实例和DRS链路,成本较低• 生产库有HA机制,如果主库挂了,备库承接同步任务的源端角色,保证了同步链路的可靠性• 执行online ddl时,数据同步没有时延劣势:• 全量阶段或者同步任务较多时,对生产库有一定压力方案二:通过备库全量主库增量实现表级同步方案解释:• 表级同步的全量同步从生产备库实例,增量同步从RDS生产库主实例获取数据优势:• 无需额外的RDS实例和DRS链路,成本较低执行online ddl时,数据同步没有时延劣势:• 对于生产主库的可靠性有影响方案三:通过中间库实现表级同步方案解释:• 创建一个RDS中间库,利用DRS的在线迁移能力,一次性从RDS生产库获取全量数据,并实时从RDS生产库同步增量数据• 所有到DWS的表级同步任务,都从RDS中间库实施全量+增量同步优势:• 所有表级同步任务都从RDS中间库抽取数据,对RDS生产库没有任何影响• 满足一定条件,从RDS生产库到DWS的无时延• DRS在线迁移阶段有限流能力,所以全量迁移阶段对RDS生产库影响较小劣势:• 增加了一个DRS在线迁移任务和一个RDS中间库(主备),成本增加• 如果在RDS生产库上做online DDL会导致RDS中间库的时延较大方案四:通过只读节点实现表级同步方案解释:• 在RDS生产库上创建一个只读实例,在RDS生产库只读实例上打开log_slave_update参数• 所有到DWS的表级同步任务,都从RDS生产库只读上实施全量+增量同步优势:• 所有表级同步任务都从RDS生产库只读上抽取数据,对RDS生产库没有任何影响劣势:• 增加了一个RDS生产库只读(单机),成本增加• 只读节点挂掉,需要修复只读节点,并重试任务,影响表级同步链路的可靠性• 需要在只读节点上后台修改log_slave_update参数,属于非标操作• 如果在RDS生产库上做online DDL会导致RDS生产库只读的时延较大
-
【摘要】 GaussDB(DWS)自身提供pgxc_get_table_skewness来查询倾斜情况,但实际实践过程中,该视图存在性能问题,而且本身的倾斜率计算有问题,实践过程中,该函数获取的倾斜率在不高的情况下,存在倾斜情况。本文基于项目实践提供一个快速获取整库或整schema的表倾斜率与空间大小获取方法。GaussDB(DWS)是MPP并行架构,若表的数据存在倾斜情况,会引起一系列性能问题,影响用户体验,严重时可能会引起系统故障。因此能快速获取倾斜的表并整改是GaussDB(DWS)运维管理人员比较关注的事情。需求描述 GaussDB(DWS)自身提供pgxc_get_table_skewness视图来查询倾斜情况,但实际实践过程中,该视图存在性能问题,且该视图的倾斜率计算有问题。实践过程中,该视图获取的某个表的倾斜率在不高的情况下(例如0.03),但实际上该表是存在倾斜情况的。同时在很多时候我们需要获取一个schema下所有表的倾斜率,以排查倾斜问题,pgxc_get_table_skewness在产品文档中也描述是一个性能较差的视图。因此项目实践过程中急需一个性能好且能表达倾斜情况的函数或视图。设计思路 GaussDB(DWS)有获取每个DN的空间大小函数table_distribution,通过该函数,我们能快速获取每个DN的大小,同时可以根据每个DN的大小,来获取表的倾斜情况:skewness = (max(dnsize) - avg(dnsize))*100/max(dnsize)该倾斜率公式计算表的最大DN空间大小与平均DN空间大小的占比,能准确反映倾斜率,乘100为表现百分比。实现过程 根据倾斜公式,我们得出以下SQL,该SQL能快速获取schema所有表的倾斜情况,下面以public为例:select schemaname,tablename,sum(dnsize)/1024^3 dnsize_gb,(max(dnsize) - avg(dnsize))*100/nullif(max(dnsize),0) skewness_factor from ( select schemaname ,tablename ,(regexp_split_to_array(tbl_dis,'[\,\(\)]+'))[4]::bigint as vprocname ,(regexp_split_to_array(tbl_dis,'[\,\(\)]+'))[5]::bigint as dnsize from ( select nspname as schemaname ,relname as tablename ,table_distribution(nspname,relname)::text as tbl_dis from pg_class a inner join pg_namespace b on a.relnamespace = b.oid and a.relkind = 'r' and b.oid not in (100) ) ) where schemaname= 'public' group by 1,2 order by 3 desc; 结果样例如下,通过例子,可以看出来,test13这个表2GB,且发生严重的倾斜97%,同时store_sales1一个70GB的大表也存在倾斜情况58%与GaussDB(DWS)的pgxc_get_table_skewness视图结果比对 使用GaussDB(DWS) 的系统视图pgxc_get_table_skewness,比较难看出来store_sales1存在倾斜情况。此处我们使用的是系统视图pgxc_get_table_skewness获取select * from PGXC_GET_TABLE_SKEWNESS where schemaname = 'public' and tablename in ('store_sales1','test13');从结果上看,skewratio字段,test13表能看出来存在严重倾斜情况,而store_sales1的skewratio值只有0.031,看不出来存在倾斜情况。但事实上该表是存在一定倾斜的我们通过table_skewness看每个DN的数据分布验证,发现store_sales1的确存在一定倾斜。总结:GaussDB(DWS)的倾斜率获取视图pgxc_get_table_skewness的结果,虽能反映严重倾斜的表,但存在倾斜的大表则比较难看出来。同时该函数存在一定的性能问题,较多表的情况下基本执行不出来。本文提供的倾斜率获取办法能比较准确反映表的倾斜情况且能叫快速获取整schema所有的表的倾斜率方法;该方法在测试过程中,数据量越大,表越多,执行的时间会越慢,测试一个schema约3800张表,共40TB左右的数据,在5分钟左右获取所有表的空间大小与倾斜率。但本文提供的方法只能对单个schema操作,对整个数据库获取表空间大小与倾斜率,实测无法执行成功。若对时效性不要求的话,可以每天固定一个时间,已跑批的形式,获取一个库的所有表清单,使用table_distribution函数,一次一个表地获取表的空间信息,使用多并发执行,这样的方式能在一定时间内将所有表的空间情况执行完成。例如:对整库有10万张表的情况,可以使用100个并发同时执行 insert into table_size_info select * from table_distribution('schema.table'); 这样的方式将10万张表的DN空间信息获取完成,然后使用本文的公式汇总获取每个表的倾斜率与空间总大小。想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料~转载来自:https://bbs.huaweicloud.com/blogs/266743
-
摘要:GaussDB(DWS)的容灾方案是一个双集群同步的架构,即两套独立集群定期同步数据以达到容灾的目的。目前数据同步的方式是通过roach(GaussDB(DWS)备份、恢复工具)定期做增量备份和恢复同步。本文通过介绍双集群的架构、log结构、典型问题分析来介绍双集群容灾的问题分析方法。双集群原理GaussDB(DWS) 的容灾方案是一个双集群同步的架构,即两套独立集群定期同步数据以达到容灾的目的。目前数据同步的方式是通过roach(GaussDB(DWS)备份、恢复工具)定期做增量备份和恢复同步。双集群框架是一个复杂的分布式系统,在出现问题时,如何快速准确的定位问题及恢复服务是一个非常紧迫的问题,这个问题在云上会更突出。本文通过介绍双集群的架构、log结构、分析步骤来介绍双集群容灾的问题分析方法。首先介绍一下双集群的部署方案原理,从部署架构和重要参数两个方面先介绍一下背景知识,便于更好理解问题分析的方法。架构简介1. 逻辑架构示例下图是一个同构的双集群部署示意图,主备集群都是3c3d, 主集群的主结点部署双集群框架脚本,定期进行备份操作,备集群的主结点定期恢复备份集。基础数据需要进行一全量备份,之后增量备份。2. 部署架构下图是接上图的部署架构,涉及双集群同步脚本(SyncDataToStby.py), 备份程序(GaussRoach.py, gs_roach)三个二进制文件备份侧调用关系:SyncDataToStby.py -> GaussRoach.py -> gs_roach恢复侧调用关系:SyncDataToStby.py -> GaussRoach.py -> gs_roach了解调用关系和咱们分析问题有直接的关系。SyncDataToStby.py 是整个双集群的调用起始,控制着双集群的正常运行,正常情况下是长驻内存的进程,如果异常退出后,后台会有crontab的来重新拉起双集群脚本: crontab -> SyncDataToStby.py -> GaussRoach.py -> gs_roach主要参数简介参数名作用备注username执行双集群脚本的OS用户,设置成GaussDB(DWS)集群相同的OS用户primary-env主集群的环境变量文件standby-env备集群的环境变量文件full-backup-exec-time-interval全量备份的间隔时间,当前默认N/A,只进行一次全量备份,分钟为单位。backup-exec-time-interval备份间隔时间,增量备份的间隔时间,分钟为单位。primary-host-ip主集群主结点的ipcompression-level=1compression-type=2压缩算法primary-media-destinationprimary-metadata-destination主集群的备份目录restore-interval恢复的时间间隔,分钟为单位restore-host-ip备集群的主结点iprestore-media-destinationrestore-metadata-destination备集群备份目录问题定位众所周知,系统的各种log是我们了解运行机制,了解问题现场的有力工具,同样双集群的问题分析也依赖于log的分析,首先认识一下双集群对应的日志:log 目录结构由上节的逻辑图及部署图,每个二进制对应的log文件如下图所示,对应二进制的信息查找对应的log。如上图,双集群的日志也是存放到$GAUSSLOG这个目录,并且有自己独立的目录 roach, 由这个目录同样是备份/恢复的对应的log路径。我们按调用关系从上到下的角度来介绍1. frame目录 存放 SyncDataToStby.py 生成的log,涉及到双集群调度,备份集清理,状态显示,配置文件及命令行参数解析的功能。2. controller目录 存放 GaussRoach.py 生成的log,涉及到备份、恢复准备工作一些操作,备份、恢复参数解析,备份集群的处理,错误处理等3. agent目录 存放 gs_roach工具 生成的log,涉及到gs_roach 连接gaussdb/gtm/cm发起备份/恢复,生成备份集/恢复备份集等操作。 gs_roach工具功能:在备份侧完成将cn/dn/gtm/cm的数据文件按顺序打包成备份文件的功能,并生成备份集元信息文件; 恢复侧根据元信息文件将备份集文件解压到对应cn/dn/gtm/cm的数据目录中。 定位步骤1. 确定问题在备份侧还是恢复侧,查找双集群主结点上Sync日志,确定出错的模块2. 确定出错的层次,由于双集群执行过程是一个上下层调用及时序关系的方式,具体顺序参考:crontab -> SyncDataToStby.py -> GaussRoach.py -> gs_roach3. 在各个模块都有较详细的日志描述过程,具体问题具体分析,大体有如下几个方面1)配置出错,用户、环境变量文件2)备份集群路径权限问题3)由于集群状态非Normal导致备份失败4)结点故障及备份集损坏导致恢复失败4. 后续文章会按模块及错误类型来详细描述问题定位步骤小结GaussDB(DWS)的双集群容灾功能是一个独立的复杂的分布式系统,涉及到三层工具的使用,因此在问题定位时会造成一些困惑。定位的方法需要先去理解架构,运行机制,然后根据时序关系去对应结点分析日志。后续会从各个模块的角度介绍一些典型的问题及修复方法。 想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~转载来自:https://bbs.huaweicloud.com/blogs/264523
-
一、多租户的背景及意义多租户为满足客户混合负载处理需求而生,通过提供两层用户机制,分层资源隔离,满足客户对计算和存储资源的自主控制需求。两级用户分别关联不同的资源池和存储空间,实现多租户下资源分组管理。二、GaussDB(DWS)的多租户目前GaussDB(DWS)的多租户能够进行隔离的资源包括:CPU资源、内存资源、IO资源、存储资源。GaussDB的多租户通过绑定资源池来实现,具体原理如下图所示:借助上图说明多租户的管控方式,见往下三、四、五章节。三、控制组设置通过设置控制组可以进行以下几方面的资源隔离:(1)设置CPU核数和控制组CPU份额,进行CPU资源管理;(2)设置异常规则来对异常作业进行终止或降级;1、class控制组 创建名称为“class_a”的子Class控制组,CPU资源配额分别为Class的40%。 gs_cgroup -c -S class_a -s 402、workload控制组 创建子Class控制组“class_a”下名称为“workload_a1”的Workload控制组,CPU资源配额分别为“class_a”控制组的20%。 gs_cgroup -c -S class_a -G workload_a1 -g 203、异常规则 设置“class_a”下属“workload_a1”的作业阻塞到1200秒或执行2400秒时执行终止动作。 gs_cgroup -S class_a -G workload_a1 -E "blocktime=1200,elapsedtime=2400" -a支持的控制组异常规则:异常阈值类型说明取值范围(0表示取消设置)支持的异常操作blocktime作业的阻塞时间,单位秒。包括全局并发排队以及局部并发排队的总时间。0~UINT_MAXabortelapsedtime作业的已被执行时间,单位秒。从开始执行到当前所消耗的时间。0~UINT_MAXabortallcputime作业在所有DN上执行时所耗费的CPU总时间,单位秒。0~UINT_MAXabort,penaltycpuskewpercent作业在DN上执行时的CPU时间的倾斜率,依赖于qualificationtime的设置。0~100abort,penaltyqualificationtime检查作业执行cpu倾斜率的间隔时间,单位秒,需同cpuskewpercent一起设置。0~UINT_MAXnonespillsize作业在DN上下盘的数据量,单位MB。0~UINT_MAXabortbroadcastsize作业在DN上算子大表广播数据量,单位MB。0~UINT_MAXabort 四、资源池设置通过设置资源池属性可以进行以下几方面的资源隔离:(1)通过设置mem_percent、memory_limit进行内存资源管理;(2)通过设置io_limits、io_priority进行IO管控;(3)通过设置active_statements、max_dop进行并发管控;(4)可以设置指定的控制组,进行CPU和异常规则的管理;(5)设置资源池异常规则;1、组资源池创建名称为“resource_pool_a”的组资源池关联到了“class_a”控制组。 CREATE RESOURCE POOL resource_pool_a WITH (control_group='class_a');2、业务资源池(1)创建名称为“resource_pool_a1”的业务资源池关联到了“workload_a1”控制组 CREATE RESOURCE POOL resource_pool_a1 WITH (control_group='class_a:workload_a1');(2)更新一个资源池,其控制组指定为"DefaultClass"组下属的"High" Timeshare Workload控制组。 ALTER RESOURCE POOL pool1 WITH (CONTROL_GROUP="High");(3)修改资源池“resource_pool_a1”的内存比例为可用内存大小的20%,即设置MEM_PERCEN的取值为20。 ALTER RESOURCE POOL resource_pool_a1 WITH (MEM_PERCENT=20);3、可设置的资源池属性属性属性值说明mem_percent0最大占用内存百分比。0代表不限制。control_groupDefaultClass:Medium资源池关联的控制组。active_statements-1资源池允许的最大并发数。-1和0代表不限制。max_dop-1资源池允许的简单作业最大并发数。-1和0代表不限制memory_limitdefault使用该资源池的作业估算内存上限。default表示最大为资源池内存一半,unlimited表示不限制。io_limits0每秒触发IO的次数上限。行存单位是万次/s,列存是次/s。0表示不控制。io_priorityNoneIO利用率高达90%时,重消耗IO作业进行IO资源管控时关联的优先级等级。None表示不控制。4、可设置的资源池异常规则异常阈值类型说明取值范围(0表示取消设置)支持的异常操作mem_limit作业在单实例上使用内存上限。32MB~max_dynamic_memoryabort 五、用户设置通过设置用户属性进行存储空间管控:1、创建组用户关联组资源池 CREATE USER tenant_a RESOURCE POOL 'resource_pool_a' PASSWORD 'Gauss_234';2、创建业务用户关联业务资源池 CREATE USER tenant_a1 RESOURCE POOL 'resource_pool_a1' USER GROUP 'tenant_a' PASSWORD 'Gauss_234';3、通过设置用户属性(PERM SPACE、TEMP SPACE、SPILL SPACE)可以进行存储空间管控:(1)修改用户“tenant_space_test”永久表空间限额不受限制。 ALTER USER tenant_space_test PERM SPACE 'unlimited';(2)修改用户“tenant_space_test”临时表空间限额为100G。 ALTER USER tenant_space_test TEMP SPACE '100G';(3)修改用户“tenant_space_test”算子落盘空间限额为200G。 ALTER USER tenant_space_test SPILL SPACE '200G';六、总结上文主要介绍了多租户技术的架构和使用方法,通过租户关联控制组和资源池,多租户的设置有效隔离了CPU资源、内存资源、IO资源和存储资源,提供了有力的混合负载管理能力。想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技~转载来自:https://bbs.huaweicloud.com/blogs/255880
-
【摘要】 数据加密是防止未授权访问和防护数据泄露的有效技术。介绍了密码算法的基本原理和GaussDB(DWS)数仓的加密函数,包括哈希函数gs_hash,对称密码算法gs_encrypt/gs_decrypt。举例说明了加密函数的使用场景。数据加密作为有效防止未授权访问和防护数据泄露的技术,在各种信息系统中广泛使用。作为信息系统的核心,GaussDB(DWS)数仓也提供数据加密功能,包括透明加密和使用SQL函数加密。透明加密在你应该知道的数仓安全——透明加密一文中已有介绍。本文讨论SQL函数加密。技术背景密码学中密码算法可以分为三类:哈希函数、对称密码算法和非对称密码算法。哈希函数哈希函数又称为摘要算法,对于数据data,Hash函数会生成固定长度的数据,即Hash(data)=result。这个过程是不可逆的,即Hash函数不存在反函数,无法由result得到data。在不应保存明文场景,比如口令(password)属于敏感信息,系统管理员用户也不应该知道用户的明文口令,就应该使用哈希算法,存储口令的单向哈希值。实际使用中会加入盐值和迭代次数,避免相同口令生成相同的哈希值,以防止彩虹表攻击。对称密码算法对称密码算法使用相同的密钥来加密和解密数据。对称密码算法分为分组密码算法和流密码算法。分组密码算法将明文分成固定长度的分组,用密钥对每个分组加密。由于分组长度固定,当明文长度不是分组长度的整数倍时,会对明文做填充处理。由于填充的存在,分组密码算法得到的密文长度会大于明文长度。流密码算法将明文逐比特与密钥流运算。流密码算法不需要填充,得到的密文长度等于明文长度。非对称密码算法非对称密码算法,又称为公钥密码算法。算法使用两个密钥:公钥和私钥。公钥向所有人公开,私钥保密。非对称密码算法应用于密钥协商、数字签名、数字证书等领域。技术实现GaussDB(DWS)主要提供了哈希函数和对称密码算法。哈希函数支持sha256, sha384, sha512和国密sm3。对称密码算法支持aes128, aes192, aes256和国密sm4。哈希函数md5(string)将string使用MD5加密,并以16进制数作为返回值。MD5的安全性较低,不建议使用。gs_hash(hashstr, hashmethod)以hashmethod算法对hashstr字符串进行信息摘要,返回信息摘要字符串。支持的hashmethod:sha256, sha384, sha512, sm3。testdb=# SELECT gs_hash('GaussDB(DWS)', 'sha256'); gs_hash ------------------------------------------------------------------ cc2d1b97c6adfba44bbce7386516f63f16fc6e6a10bd938861d3aba501ac8aab (1 row)对称密码算法gs_encrypt(encryptstr, keystr, cryptotype, cryptomode, hashmethod)采用cryptotype和cryptomode组成的加密算法以及hashmethod指定的HMAC算法,以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。支持的cryptotype:aes128, aes192, aes256, sm4。支持的cryptomode:cbc。支持的hashmethod:sha256, sha384, sha512, sm3。testdb=# SELECT gs_encrypt('GaussDB(DWS)', '1234', 'aes128', 'cbc', 'sha256'); gs_encrypt -------------------------------------------------------------------------------------------------------------------------- AAAAAAAAAADlzZYiNQK1uB+p1gza4Lu3Moj3HdP4E1uJmqfDYBaXDLMt7RZoE0YVx9h2dMRYBQ5fhFNqqM49sUkeS72o8kX5vWRQvfW3fuocGyp+b+lX9A== (1 row)gs_decrypt(decryptstr, keystr,cryptotype, cryptomode, hashmethod)采用cryptotype和cryptomode组成的加密算法以及hashmethod指定的HMAC算法,以keystr为密钥对decryptstr字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。testdb=# SELECT gs_decrypt('AAAAAAAAAADlzZYiNQK1uB+p1gza4Lu3Moj3HdP4E1uJmqfDYBaXDLMt7RZoE0YVx9h2dMRYBQ5fhFNqqM49sUkeS72o8kX5vWRQvfW3fuocGyp+b+lX9A==', '1234', 'aes128', 'cbc', 'sha256'); gs_decrypt -------------- GaussDB(DWS) (1 row)效果分析有个student表,有id,name和score三个属性。name可以使用哈希函数加密保存,score可以使用对称密码算法保存。testdb=# create table student (id int, name text, score text); CREATE TABLE testdb=# insert into student values (1, gs_hash('alice', 'sha256'), gs_encrypt('95', '12345', 'aes128', 'cbc', 'sha256')); INSERT 0 1 testdb=# insert into student values (2, gs_hash('bob', 'sha256'), gs_encrypt('92', '12345', 'aes128', 'cbc', 'sha256')); INSERT 0 1 testdb=# insert into student values (3, gs_hash('peter', 'sha256'), gs_encrypt('98', '12345', 'aes128', 'cbc', 'sha256')); INSERT 0 1没有密钥的用户即使拥有了select权限也无法看到name和score这两列加密数据。testdb=# select * from student; id | name | score ----+------------------------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------- 1 | 2bd806c97f0e00af1a1fc3328fa763a9269723c8db8fac4f93af71db186d6e90 | AAAAAAAAAAB26RmKZdGciLdOM1Z0sjsHg6Qh1b8taF3cY5KDVm+faJK5AT9tjufkr3Wogj3tIpFfiIEb6+miGqPHWcmKnFsArAMoBG9pPDawGs1Qze7xGg== 2 | 81b637d8fcd2c6da6359e6963113a1170de795e4b725b84d1e0b4cfd9ec58ce9 | AAAAAAAAAAB26RmKZdGciLdOM1Z0sjsHZOHH7URkyme6r8Hfh1k0UsVbgbREjFMkgB52w+7GtUGqGgUik07ghajSD9PMIDLd/49wBCVROm2/HSOw6jzbxA== 3 | 026ad9b14a7453b7488daa0c6acbc258b1506f52c441c7c465474c1a564394ff | AAAAAAAAAAB26RmKZdGciLdOM1Z0sjsHwv6p/OAfDUyVULAqpaHIrYJYMcqLmQSj3K/REyavfMoKB7hgUpEPXfHRutWur37bru68jjt5XcBHFBjZeMgowA== (3 rows)拥有密钥的用户可以通过解密查看到加密数据。testdb=# select id, gs_decrypt(score, '12345', 'aes128', 'cbc', 'sha256') from student; id | gs_decrypt ----+------------ 1 | 95 2 | 92 3 | 98 (3 rows)总结数据加密是防止未授权访问和防护数据泄露的有效技术。介绍了密码算法的基本原理和GaussDB(DWS)数仓的加密函数,包括哈希函数gs_hash,对称密码算法gs_encrypt/gs_decrypt。举例说明了加密函数的使用场景。想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技~转载来自:https://bbs.huaweicloud.com/blogs/251514
-
【操作步骤&问题现象】GaussDB A 8.0.0.1是否存在获取中文首字母的函数?生僻字的情况怎么处理?oracle 通过F_NLSSORT实现,GaussDB A怎么实现?
-
前期试用了DWS 总体来讲,很容易上手,操作了官网:交通卡口通行车辆分析 实践,分分钟搞定,执行效率还是非常高的,虽然只有3节点,8亿多的数据处理的还是很速度,sql on hadoop 很方便,还在不断摸索实践中,官网文档,论坛精华帖,学到了很多东西,为华为云点赞,祝愿更多的企业用上DWS数仓
-
1. 确保自己拥有CMDB、DBM权限。2. 上传标准欧拉镜像:镜像地址:http://wiki.inhuawei.com/pages/viewpage.action?pageId=89009308注:注意所用欧拉镜像版本,当前DBM平台支持的为欧拉2.8以下python2的版本; 如果是python3版本可能会有问题,建议咨询平台同事确定。1). 使用op_svc_mgmt账号登录obs2).创建桶(已存在跳过) 注:不建议桶名为dws,后续上传gsql工具也会创建dws桶3). 上传——结束。 3. 创建私有镜像及DBM数据库所需ECS1). 登录console平台;2). 镜像服务;3). 创建私有云镜像;4). 选择之前上传的欧拉镜像文件;5).选择架构、系统盘大小、名称(没有标准,可以区分就好);6). 点击创建,创建成功后如下图所示;——结束4. DBM数据库所需ECS1). 弹性云服务器(ECS);2). 根据部署指导手册和局点情况选择cpu架构、规格;3). 根据部署指导手册,镜像没有特殊要求,选择系统盘和数据盘,一套dbm数据库需要主备两台机器;4). 选择网络,manage_vpc15). 填写名字和密码,没有特殊规定,自己设计区分好、记录好;6). 创建;7). 创建成功后如下所示,切记一套dbm数据库是主备两台机器;——结束5. ECS绑定浮动ip1). 选择虚拟私有云2). 选择之前创建ecs时的网络manage_vpc1;3). 点击子网标签下的子网名称; 4). 虚拟ip点击申请虚拟ip地址,自动分配即可 5). 申请完虚拟ip后,绑定之前创建的dbm数据库主备机器;绑定完成可以检查一下; 注:一套主备绑定一个ip,即一个数据库对应一个ip;——结束 6. 对创建的ECS安装agent1). 普罗网页运维服务,进入CloudAutoDeploy-SDK,选择部署管理>>运维平台初始部署 >>Agent部署 2). 下载模板、填写自己创建的dbm ecs机器的信息,可参考下图 root_key 和 user_key 是创建ecs时的密码3). 成功如下图所示——结束7. 挂树1). 进入CMDB、先进行主机位置信息订正;2). 完成订正后,进入服务管理,将机器挂到CLOUDDB/EI-DB/下对应分支上,如下所示;——结束 8. 手动分区,配置yum源1). 到创建的ecs机器上执行该脚本 (见附件) sh auto_disk_mysqldb.sh 2). 配置yum源[base]name=EulerOS-2.0SP8 basebaseurl=http://mirrors.internal.huaweigovcloud.com/Euler2.8/enabled=1gpgcheck=0gpgkey=http://mirrors.internal.huaweigovcloud.com/Euler2.8/[cloudmiddware]name=cloud middle softwarebaseurl=http://mirrors.internal.huaweigovcloud.com/CloudMiddleWare/enabled=1gpgcheck=0——结束 9. DBM已有主机上线方式创建进入CloudDBMgmt页面,选择数据库实例创建,选择部署的区域,对应的数据库类型;选择已有主机,填写相关信息,创建。 若创建失败,请咨询平台负责人,咨询前可以先排查一下自己镜像版本。——结束
-
【功能模块】【操作步骤&问题现象】在data studio上执行脚本出错[0][SQLErrorCode:6321]ERROR: Failed to send command to Datanodes dn_6753_6754[13367148]Line Number:12这种错误是什么原因导致的?【截图信息】【日志信息】(可选,上传日志内容或者附件)
-
请问目前gaussdb支持行存压缩吗?
-
数据发生倾斜后,gaussdb能够自动修复吗?
-
1技术概述1.1 价值及主要内容 随着信息技术的发展,人类进入大数据时代,数据量呈现爆炸式的增长,金融领域数据承载核心业务,即便遭遇各种软硬件错误或灾难,也需要具备找回和快速恢复业务能力,因此备份恢复能力成为数仓的最关键能力之一。华为的GaussDB(DWS)支持了物理细粒度备份恢复能力。用户可自定义备份整集群或部分数据库元素,并进行灵活的单、多表恢复,有效缩减备份数据所需的时间窗口和存储空间,同时聚焦于用户业务场景的关键表的备份恢复。 物理细粒度备份恢复目前主要支持的2大场景:一、从细粒度化的集群级全量备份集中恢复单/多表;二、备份指定的schema全量数据,并可从该备份集中恢复单/多表;2技术方案原理2.1 NBU备份恢复方案 Roach为GaussDB(DWS)数据库备份工具,支持多种备份恢复类型及方案。对于Roach通用架构,每个集群节点都有Roach agent进程负责本节点的数据备份。第一个节点额外有一个Roach master进程负责分布式集群备份。Roach提供非侵入式的备份到NBU方案,物理细粒度备份恢复同样基于此框架,因此首先对此进行介绍说明。Roach client插件部署至NBU Media Server机器中,用于接收Roach agent发送的备份数据,并转发至NBU 服务器中。 NBU集群部署模式如下:图1 NBU集群部署模式 非侵入式NBU备份方案架构:图2 NBU非侵入式部署方案 如上图所示(3节点GaussDB(DWS)集群为例),NBU备份数据流向为:Roach agent将压缩数据向Roach client分片传输;Roach agent调用NBU客户端XBSA接口,请求NBU备份;NBU client将此请求转发至NBU Master Server;NBU master服务器负责分配存储到哪个NBU media服务器;Roach client将调用xbsa接口将备份数据传输至NBU Media Server;Media Server将备份数据存储至挂载的磁带机或磁盘上2.2 细粒度元信息生成方案 为了能够从备份集中细粒度地恢复单表或多表,首先需要获取所有数据库下schema、表的元信息DDL,将其持久化并备份到介质。需要说明的是,由于元信息DDL导出时间较长,设计中采用DDL导出备份与数据备份并行的方式,以提升性能:Roach获取DDL的设计思路如下所示——图3 物理细粒度备份恢复获取元数据方案 备份过程中,为支持细粒度恢复,通过表名映射到元信息,进而找到所有关联表的物理文件、事务信息,需要获取并备份一个映射map,map按数据库元素层次逐层获取,主要包括:Agent --> Instance –> Database –> Schema ->Table –> Related Relations 实际的执行中,将为每个物理节点、实例,并行进行映射元信息查询和存储,设计逻辑如下:图4 细粒度备份恢复文件映射MAP获取 2.3 数据备份生产-消费者模型 GaussDB(DWS)的细粒度化全量备份实现于Roach备份工具。Roach集群级全量备份,通过与GaussDB(DWS)Kernel交互,在pg_start_backup()执行后依次备份行存数据文件、WAL文件,执行pg_stop_backup()后备份列存数据文件。这一系列备份流程在完整的事务保证下,确保数据落磁盘,并被有序地备份到NBU管理的介质路径下。 细粒度数据备份的过程,首先依靠2.2中从系统表查询得到的MAP整理待备份物理文件列表,具体到每个库、schema、table,逐层递进,最终得到一张表所依赖的所有关联文件最小集合,创建的备份块最小逻辑粒度为schema,同一个schema下的表,会连续地向同一个逻辑块写,物理上按segment配置(通常为4G)进行切割。具体的备份数据写入介质,依靠如下生产-消费者模型,实例下的数据文件被数据写线程(生产者)按块读取,压缩后写入buffer中,发送数据线程(消费者)则从buffer中获取数据块,调用XBSA标准的API接口,流式地将数据写入到介质层,由NBU Master分配Media Server,最终落盘;数据追加写的过程中,若超过段文件segement size上限,则会切割备份文件,从而形成file_0.rch,file_1.rch等备份压缩文件。该生产-消费者模型如下图所示:图5 物理细粒度数据备份到介质生产者-消费者模型2.4 细粒度恢复多表方案 当前支持从集群级全量备份集、或schema级别备份集中做多表细粒度恢复,这两种主要场景核心技术思想一致,场景支持情况如下:支持单次从集群级全量备份集中恢复单表或多表,恢复表的名称列表写入一个配置文件,配置文件名由恢复参数—table-list指定;集群级全量备份集恢复单/多表,指定待恢复的表可跨多个schema;恢复时可指定恢复到原表或新表,新表可与原表在不同schema,但需要在同一个database,表名可为新表名;指定的恢复目标schema可以存在,也可以不存在,恢复时新建出来,恢复的新表由—restore-target-list指定的文件配置,若希望全部恢复到原表名,则—table-list和—restore-target-list可指定同一配置文件;若恢复时指定的恢复目标表存在(原表名或新表名),那么恢复可指定—clean参数先drop cascade级联删除该表(视图、索引、权限等一并删除)再恢复,不带该参数,则需要用户手动确认后drop,再进行恢复,这主要是为了应对备份和恢复时前表名相同,但表定义不同的场景。细粒度是在线恢复,不清理数据也不停集群,恢复完成后表可直接使用,无build等额外时间消耗。 下图展示了恢复时的主要方案设计:图6 细粒度在线恢复单/多表逻辑图 恢复时的步骤简述如下:Step1:接收各节点的各实例对应的工作进程Roach Agent数据请求后,Roach Client与NBU介质建连,开始List检索并获取文件,发给Roach Client;Step2:Roach Client与各节点的Roach Agent,通过TCP连接转发待恢复数据,包含元数据和实例数据,实例获取后存入buffer;Step3:Roach读入待恢复的表信息列表,构造恢复落盘文件的filter过滤器,只恢复目标表备份文件;Step4:根据恢复回来的DDL,解析到待恢复表元信息,并根据元信息,将中间临时tmp表、恢复最终目标表创建出来;Step5:根据新建tmp表,创建元信息map,并与原备份表的map信息一一映射,过滤文件落盘;Step6:将备份的数据文件relfilenode交换到新建的tmp表relfilenode;Step7:查询tmp表的数据,插入数据到最终目标表。3细粒度备份恢复技术应用实测3.1 测试环境3.2 细粒度恢复用例的执行 这里给出部分典型场景的用例执行情况:Schema级别备份,恢复单/多表 验证点:指定schema备份成功;从schema备份集中恢复多表至目标table;数据构造执行Schema级别备份: python $GPHOME/script/GaussRoach.py -t backup --master-port 9500 --media-destination nbu_policy --media-type NBU --metadata-destination $GAUSSHOME/roachbackup/metadata --physical-fine-grained --schemaname public --dbname test_tpch1 --parallel-process 3 --nbu-on-remote --nbu-media-list /home/omm/media.list --client-port 9200从该Schema 备份集中指定恢复customer(列存表)、public.nation(行存表)至liding11.customer11、liding22.nation22执行恢复指定多表: python $GPHOME/script/GaussRoach.py -t restore --master-port 9500 --media-destination nbu_policy --media-type NBU --metadata-destination $GAUSSHOME/roachbackup/metadata --physical-fine-grained --backup-key 20201226_101715 --dbname test_tpch1 --table-list /home/omm/table.list --parallel-process 3 --restore-target-list /home/omm/target.list --clean --nbu-on-remote --nbu-media-list /home/omm/media.list --client-port 9200数据校验4技术总结 本文主要从技术价值、应用场景、技术原理、技术实测展示几个维度对GaussDB(DWS)物理细粒度备份恢复技术进行了剖析,可以看到物理细粒度备份恢复是对于已有全量数据备份恢复的一个有效的增强,客户可以以更灵活地方式规划自己的冷热数据,选择更小的逻辑粒度进行备份或恢复,节省宝贵的备份存储空间和cpu资源的同时,也更少地对在线业务带来冲击。在恢复层面,不同于旧有的集群级全量恢复需要停集群和清理数据,细粒度在线恢复不影响任何在线业务,也不会因恢复前清理集群带来可能的数据损失风险,因此该技术拥有较为广阔的前景和深远的意义。转载来自:华为云数仓GaussDB(DWS)
-
6月20日-25日,2021 ACM SIGMOD 在西安举行。22日,华为GaussDB内核首席架构师任阳将受邀参会并分享华为新一代自研分布式数据库GaussDB的最新探索和研究成果,展示GaussDB相关论文入选SIGMOD等国际顶级学术会议的成果。数据库创新从来不是一蹴而就,而是千锤百炼后的厚积薄发,是百尺竿头更进一步,国产数据库的崛起和发展如此,华为云GaussDB也是如此。围绕AI-Native课题研究,今年华为云GaussDB相关论文被入选SIGMOD国际顶级会议,其研究论文《Learned Cardinality Estimation for Similarity Queries》提出使用DNN进行基数预测,为了解决DNN训练问题,创新地提出了模型分割和数据分割解决方法,同时在此基础上提出了使用该方法进行连接操作结果集预测。该方法在BMS、GloVe300、ImageNetde等数据集上取得了很好的效果。作为数据库领域公认的最具学术影响力地位的国际性学术会议,SIGMOD与ICDE、VLDB并称为国际数据库三大顶级会议。华为云GaussDB基于AI-Native理念,近年在SIGMOD、VLDB等会议上发表了数篇论文,如《Interactively Discovering and Ranking Desired Tuples without Writing SQL Queries》,《Query Performance Prediction for Concurrent Queries using Graph Embedding》,《QTune: A Query-Aware Database Tuning System with Deep Reinforcement Learning》以及《An End-to-End Learning-based Cost Estimator》等,分别就数据库优化器相关问题提出了AI技术解决方案,在RBO、CBO基础之上提出了基于AI技术的AI优化器,简称为AIBO(AI Based Optimizer),使得数据库中从数据分布估计、代价估计、执行计划选择等各个阶段均使用AI技术,在该领域取得了很好的突破。华为历来重视与高校、合作伙伴共建良好生态关系,积极促进数据库领域开源、开放、融合、创新发展。在同清华大学数据库组的合作中,华为进一步围绕AI-Native理念,在GaussDB的开源版本openGauss社区中,使用AI技术对数据库的众多模块进行了重构,例如使用MCTS方式代替数据库优化器中基于规则的逻辑重写,使用Tree-LSTM代替原始的基于直方图的代价估计,使用深度强化学习方式代替原始的Greedy/Genetic算法。同时为了提升数据库自治能力,先后提出使用Extreme Value Theory进行数据库异常检测,使用LSTM+KNN的方式进行系统异常诊断,使用Tree-LSTM方式进行SQL诊断,使用深度强化学习及RNN的方式进行系统自调优,物化视图推荐及索引推荐,使用GNN的方式进行系统性能预测。相关技术陆续在实际生产系统中使用,例如索引推荐功能,在客户负载性能提升的基础上,消除了83%的索引冗余,索引空间磁盘占用率降低70%。此外,华为在同清华以及CCF数据库专委会的合作中,陆续产生众多的科研成果,先后在SIGMOD、VLDB、ICDE上发表论文36篇,CCF-华为数据库创新研究计划总共资助20项数据库相关研究课题,成果覆盖数据库多模、云数据库、数据库全密态处理、图数据库等,极大的活跃了openGauss开源社区以及国内数据库研究发展。6月22日,在本次SIGMOD 2021大会上,华为GaussDB内核首席架构师任阳将会带来《华为自研分布式数据库》主题分享,内容覆盖华为自研分布式数据库的发展和使用现状,以及GaussDB极致性能、混合负载、高安全等特性,更多精彩,敬请关注!嘉宾简介:2014年9月至2019年10月,担任分布式分析型数据库架构师与系统组组长,完成华为公司自研超大规模并行数据仓库产品设计与实现,完成GaussDB(DWS)数据仓库在工商银行的规模商用。之后担任华为GaussDB自研分布式数据库首席架构师及内核系统组组长,在性能、混合负载能力、容灾能力、安全能力以及易运维能力方面构筑数据库内核核心竞争力。议题简介:本议题将会介绍华为自研分布式数据库的发展和使用状况,并围绕高性能、高可用、混合负载、安全以及易运维五大特性进行技术介绍,向大家全方位展示GaussDB分布式数据库。当前GaussDB分布式数据库及其开源版本openGauss相继在国内头部银行客户上线并规模使用。 点击链接预约直播:https://live.bilibili.com/21945422
上滑加载中
推荐直播
-
华为云码道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华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签