DWS性能优化
云数据仓库 GaussDB(DWS) 入门 云数据仓库 GaussDB(DWS) 入门 新一代、全场景数据仓库,一站式分析,性能、容量无限扩展,守护高价值数据、创享高价值分析,企业数字化转型坚实伙伴 新一代、全场景数据仓库,一站式分析,性能、容量无限扩展,守护高价值数据、创享高价值分析,企业数字化转型坚实伙伴
数据库加密密钥(可选) 在创建GaussDB(DWS)集群时,如果开启“加密数据库”的功能,需使用KMS(密钥管理服务)的密钥加解密数据库。密钥按照数据加密服务密钥的计费规则进行计费。 计费模式 GaussDB(DWS) 提供两种计费模式供您选择:包年/包月、按需计费。两种方式供您灵活选择,使用越久越便宜。
执行计划等。 3)GDS工具 它是GaussDB(DWS)提供的数据服务工具,通过和外表机制的配合,实现数据的高速导入导出。 GDS工具包需要安装在数据源文件所在的服务器上,数据源文件所在的服务器称为数据服务器,也称为GDS服务器。 4)DSC SQL语法迁移工具 DSC(Database
云数据仓库 GaussDB(DWS) 资源 云数据仓库 GaussDB(DWS) 资源 新一代、全场景数据仓库,一站式分析,性能、容量无限扩展,守护高价值数据、创享高价值分析,企业数字化转型坚实伙伴 新一代、全场景数据仓库,一站式分析,性能、容量无限扩展,守护高价值数据、创享高价值分析,企业数字化转型坚实伙伴
数据仓库服务 GaussDB(DWS)备份恢复 GaussDB(DWS)提供了多层次、多类型的备份/恢复方案,无惧误删,让您的数据更安全。 技术特点: 支持多种介质 支持备份集群数据库到磁盘、OBS、爱数、NBU等多种存储方式。 支持全量+增量备份 支持全量物理备份,差异增量,累积增量等多种类型备份。
式查询分析。 跨数据中心协同分析 随着数据量的不断增加,在单数据中心存储计算能力有限情况下,不可能把所有数据都统一汇总到单个数据中心。而在进行数据挖掘、碰撞分析时,又需要涉及更多更全面的数据,此时,一个统计查询业务就可能涉及到多个数据中心。 GaussDB(DWS)支持直接跨库访
BS源数据导入数据仓库,完成数据的简易查询。 立即体验 使用GaussDB(DWS)导入Hive数据,实现对大数据的融合分析 指导用户创建数据仓库集群GaussDB(DWS),并将Hive数据导入数据仓库,实现跨集群大数据的融合分析。 立即体验 使用GaussDB(DWS)实现零售业经营状况的多维度查询分析
PB级数据规模。 分布式存储 GaussDB(DWS)采用水平分表的方式,将数据表格的元组按照一定的分布策略分散存储到多个节点。查询的时候可以通过查询条件过滤不必要的数据,快速定位到数据存储位置,从而极大提升数据库性能。 在水平分表的基础上,GaussDB(DWS)支持数据分区(
储过程、数据强一致性保证 安全可靠 DWS支持数据透明加密,同时支持与数据库安全服务DBSS集成,保证云上数据安全。同时DWS支持自动数据全量、增量备份,提升数据可靠性 建议搭配使用 数据接入服务 DIS 云数据迁移 CDM 数据湖治理中心 DGC 数据湖分析 整合数据资源,构建
DWS.DCS设计云系统是一个高度集成且协同化的研发管理系统,通过平台的建设可为用户单位提供精准定位连接内部研发所需的图形硬件支撑资源(工作站/图形服务器)、三维应用工具软件,用户无论身处何地,都能轻松访问平台,进行高质量的三维设计业务开展产品功能:戴西DWS.DCS设计云系统是
Server等数据库性能优化问题,如数据库连接查询慢,网站程序卡顿,服务器CPU负载高无响应,SQL语句执行效率慢,用户端访问卡慢的性能问题。曾荣获华为云精英服务商,八戒TOP服务商等荣誉。,技术团队长期服务于国内金融,电商,交通等关键行业,服务客户5000+,数据库优化成功案例2W+
戴西DWS数字化研发平台是一种综合性数字化研发解决方案,由戴西软件结合15年经验自主研发,面向于工业制造业各企业提供集设计、仿真、数据、试验、流程、许可、知识、文档管理、协同研发流程等一体化的可定制化数字化方案服务。产品功能:戴西DWS数字化研发平台主要功能涵盖统一门户、统一用户
培训与认证具备华为GaussDB OLAP数据库二次开发和管理能力的高级工程师华为认证培训华为云数据仓库高级工程师培训培养具有分布式数据库集群开发和运维能力的高级工程师,以及对数据库领域相关人员进行技能提升。课程内容:深入讲解GaussDB DWS数据仓库架构、数据库设计与管理、数据迁移、数据库的运维与调优
解决方案以混合架构为基础,在充分利用传统数据平台建设经验的基础上结合大数据技术,可以为企业打造一站式的数据采集及接入、数据整合及分析、数据应用及服务,助力数字化转型。3、数据库迁移:中电金信作为国内大数据和数仓建设的专业厂商,依托在大数据研发上的技术功底及数仓领域的交付经验,打磨
提供华为云GaussDB数据库信创全生命周期技术服务支持,包括: GaussDB POC服务。 GaussDB年度运维技术支持。 GaussDB容灾规划及实施服务。 GaussDB备份与恢复规划与实施服务。 数据迁移服务(其他数据)运维、专家支持服务(开发指导、性能调优)等服务,服务介绍如下:一、GaussDB
提供华为云GaussDB数据库信创全生命周期技术服务支持,包括: GaussDB POC服务。 GaussDB年度运维技术支持。 GaussDB容灾规划及实施服务。 GaussDB备份与恢复规划与实施服务。 数据迁移服务(其他数据)运维、专家支持服务(开发指导、性能调优)等服务,服务介绍如下:一、GaussDB
支持处理 DWG, DWS, DWT, DXT, PDF 等图纸格式。保持矢量特征
将工厂底层的数据进行抽取,进行转化(存储)并加载(传输)到上层应用系统。该方案对于我们通过对制造设施的数字化来提高未来的制造收益是至关重要的。从底层采集原始数据;将复杂的生产环境中产生的数据进行处理并标准化;对数据进行分类归档;将数据转换成上层应用平台(例如:DWS、EMS、ME
GaussDB(DWS)安全管理 GaussDB(DWS)安全管理 DWS可靠保护数据库中存储的数据,确保数据安全、完整、可用。 DWS可靠保护数据库中存储的数据,确保数据安全、完整、可用。 管理控制台 帮助文档 数据库安全 数据库系统存储着各类重要、敏感的数据,同时作为多用户的
用户云上快速创建GaussDB(DWS)数据仓库集群,并将OBS源数据导入数据仓库,完成数据的简易查询。 GaussDB(DWS)热门视频 看视频轻松了解和使用DWS 数据仓库服务产品介绍 04:38 数据仓库服务快速入门 03:29 DWS助力消费者BG大数据平台云化 05:30 数据仓库服务集群管理
更多精选文章推荐 什么是数据仓库服务GaussDB(DWS) 什么是DWS的IoT数仓 DWS有哪些连接工具和数据迁移工具 DWS数据库监控DMS介绍 GaussDB(DWS)的SQL on Anywhere Gauss(DWS)数据库加解密 GaussDB(DWS)常用SQL GaussDB(DWS)安全管理
Flink将MySQL数据导入DWS集群 MySQL 使用华为云DLI服务的Flink作业,将MySQL数据实时同步到GaussDB(DWS)。 操作简单。 使用CDM迁移数据到GaussDB(DWS) 数据库、NoSQL、文件系统、大数据平台 CDM提供同构/异构数据源之间批量数据迁移的功能
如何调用GuassDB(DWS) API接口示例 精选文章推荐 DWS产品介绍_DWS产品优势_DWS功能 云服务器是什么? 对象存储OBS产品介绍 学习区块链技术 数据仓库服务迁移类型有哪些? 数据仓库服务_SQL on Anywhere GaussDB(DWS)安全管理 DWS如何保障数据库安全?
快速创建DWS集群并导入数据 对象存储OBS产品介绍 选择合适的分布列 数据仓库服务迁移类型有哪些? 数据仓库服务_SQL on Anywhere GaussDB(DWS)安全管理 DWS如何保障数据库安全? 调整局部聚簇键 分析正在执行的SQL 用户管理优秀实践 怎样选择弹性云服务器?
GaussDB(DWS)工具 GaussDB(DWS)工具 Gauss(DWS)是一种基于华为云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。Gauss(DWS)提供包括连接工具、命令行工具、数据迁移工具等在内的多种工具用于连接数据库、迁移数据。 G
访问外部数据源数据的操作步骤。 本例以SQL作业访问RDS数据库表为例,介绍DLI服务提交SQL作业访问外部数据源数据的操作步骤。 使用DLI提交SQL作业查询RDS MySQL数据 常用的Spark SQL作业的语法 基础的Spark SQL语法:数据库相关语法、创建OBS表相
3副本冗余 3副本冗余 数据持久性高达99.9999999% 数据持久性高达99.9999999% 数据加密 数据加密 系统盘和数据盘均支持数据加密,保护数据安全 系统盘和数据盘均支持数据加密,保护数据安全 实时写入新数据 时序数据的写入是实时的,采集的数据反应客观信息,数据是随着时间推进不断产生,不存在旧数据更新场景。
DWS性能优化
问题现象
在DWS实际业务场景中因I/O高、I/O瓶颈导致的性能问题较多,其中应用业务设计不合理导致的问题占大多数。本文从应用业务优化角度,以常见触发I/O慢的业务SQL场景为例,指导如何通过优化业务去提升I/O效率和降低I/O。
确定I/O瓶颈&识别高I/O的语句
- 通过以下内容掌握SQL级I/O问题分析的基础知识。
- PGXC_THREAD_WAIT_STATUS视图功能。
- EXPLAIN功能,需了解并熟悉Scan算子、A-time、A-rows、E- rows,详细内容参见:SQL执行计划。
- 通过pgxc_thread_wait_status视图查看并确定I/O瓶颈。全部状态信息请参见PG_THREAD_WAIT_STATUS。
1
SELECT wait_status,wait_event,count(*) AS cnt FROM pgxc_thread_wait_status WHERE wait_status <> 'wait cmd' AND wait_status <> 'synchronize quit' AND wait_status <> 'none' GROUP BY 1,2 ORDER BY 3 DESC limit 50;
I/O瓶颈时常见的主要状态如下表所示。
表1 I/O常见状态 Wait status
Wait event
wait io:等待I/O完成。
- BufFileRead:从临时文件中读取数据到指定buffer。
- BufFileWrite:向临时文件中写入指定buffer中的内容。
- DataFileRead:同步读取表数据文件。
- DataFileWrite:向表数据文件写入内容。
- ......
acquire lwlock:等待获取轻量级锁。
WALWriteLock:用于避免并发WAL写盘。
wait wal sync:等待特定LSN的wal log完成到备机的同步。
NA
wait data sync:等待完成数据页到备机的同步。
NA
Material | Material - write file:当前是Material算子,write file表示Material算子正在将数据写入磁盘。
NA
- 获取高I/O消耗的SQL。
先通过OS命令识别消耗高的线程,然后结合DWS的线程号信息找到消耗高的业务SQL,获取工具和操作方法请下载iowatcher。
场景1:列存小CU膨胀
某业务SQL查询出390871条数据需43248ms,分析计划主要耗时在Cstore Scan。
Cstore Scan的详细信息中,每个DN扫描出2w左右的数据,但是扫描了有数据的CU(CUSome)155079个,没有数据的CU(CUNone)156375个,说明当前小CU、未命中数据的CU极多,即CU膨胀严重。
触发因素:对列存表(尤其是分区表)进行高频小批量导入会造成CU膨胀。
处理方法
- 列存表的数据入库方式修改为攒批入库,单分区单批次入库数据量需大于DN个数*6W。
- 如果因业务原因无法攒批入库,则需定期VACUUM FULL此类高频小批量导入的列存表。
- 当小CU膨胀很快时,频繁VACUUM FULL也会消耗大量I/O,甚至加剧整个系统的I/O瓶颈,此场景建议修改列存表为行存表(CU长期膨胀严重的情况下,列存的存储空间优势和顺序扫描性能优势将不复存在)。
场景2:脏数据&数据清理
某业务SQL总执行时间2.519s,其中Scan占了2.516s,同时该表的扫描最终只扫描到0条符合条件数据,过滤了20480条数据,即总共扫描了20480+0条数据却消耗了2s+,扫描时间与扫描数据量严重不符,此现象可判断为由于脏数据多从而影响扫描和I/O效率。
查看表脏页率为99%,VACUUM FULL后性能优化到100ms左右。
触发因素:表频繁执行UPDATE/DELETE导致脏数据过多,且长时间未VACUUM FULL清理。
处理方法
- 对频繁UPDATE/DELETE产生脏数据的表,定期VACUUM FULL,因大表的VACUUM FULL也会消耗大量I/O,因此需要在业务低峰时执行,避免加剧业务高峰期I/O压力。
- 当脏数据产生很快,频繁VACUUM FULL也会消耗大量I/O,甚至加剧整个系统的I/O瓶颈,这时需要考虑脏数据的产生是否合理。针对频繁DELETE的场景,可以考虑如下方案:
- 全量DELETE修改为TRUNCATE或者使用临时表替代。
- 定期DELETE某时间段数据,使用分区表并使用TRUNCATE或DROP分区替代。
场景3:表存储倾斜
例如表Scan的A-time中,max time DN执行耗时6554ms,min time DN耗时0s,DN之间扫描差异超过10倍以上,这种集合Scan的详细信息,基本可以确定为表存储倾斜导致。
通过table_distribution发现所有数据倾斜到了dn_6009单个DN,修改分布列使得表存储分布均匀后,max dn time和min dn time基本维持在相同水平400ms左右,Scan时间从6554ms优化到431ms。
触发因素:分布式场景,表分布列选择不合理会导致存储倾斜,同时导致DN间压力失衡,单DN I/O压力大,整体I/O效率下降。
解决办法:修改表的分布列使表的存储分布均匀,分布列选择原则参见选择分布列。
场景4:无索引、有索引不走
某一次点查询,Seq Scan扫描需要3767ms,因涉及从4096000条数据中获取8240条数据,符合索引扫描的场景(海量数据中寻找少量数据),在对过滤条件列增加索引后,计划依然是Seq Scan而没有走Index Scan。
对目标表ANALYZE后,计划能够自动选择索引,性能从3s+优化到2ms+,极大降低I/O消耗。
常见场景:行存大表的查询场景,从大量数据中访问极少数据,没走索引扫描而是走顺序扫描,导致I/O效率低,不走索引常见有两种情况:
- 过滤条件列上没建索引。
- 有索引但是计划没选索引扫描。
触发因素:
- 常用过滤条件列没有建索引。
- 表中数据因执行DML操作后产生数据变化未及时ANALYZE,导致优化器无法选择索引扫描计划,ANALYZE介绍参见ANALYZE 。
处理方式:
- 对行存表常用过滤列增加索引,索引基本设计原则:
- 索引列选择distinct值多,且常用于过滤条件,过滤条件多时可以考虑建组合索引,组合索引中distinct值多的列排在前面,索引个数不宜超过3个。
- 大量数据带索引导入会产生大量I/O,如果该表涉及大量数据导入,需严格控制索引个数,建议导入前先将索引删除,导入完成后再重新建索引。
- 对频繁做DML操作的表,业务中加入及时ANALYZE,主要场景:
- 表数据从无到有。
- 表频繁进行INSERT/UPDATE/DELETE。
- 表数据即插即用,需要立即访问且只访问刚插入的数据。
场景5:无分区、有分区不剪枝
例如某业务表进场使用createtime时间列作为过滤条件获取特定时间数据,对该表设计为分区表后没有走分区剪枝(Selected Partitions数量多),Scan花了701785ms,I/O效率极低。
在增加分区键createtime作为过滤条件后,Partitioned scan走分区剪枝(Selected Partitions数量极少),性能从700s优化到10s,I/O效率极大提升。
常见场景:按照时间存储数据的大表,查询特征大多为访问当天或者某几天的数据,这种情况应该通过分区键进行分区剪枝(只扫描对应少量分区)来极大提升I/O效率,不走分区剪枝常见的情况有:
- 未设计成分区表。
- 设计了分区没使用分区键做过滤条件。
- 分区键做过滤条件时,对列值有函数转换。
触发因素:未合理使用分区表和分区剪枝功能,导致扫描效率低。
处理方式:
- 对按照时间特征存储和访问的大表设计成分区表。
- 分区键一般选离散度高、常用于查询过滤条件中的时间类型的字段。
- 分区间隔一般参考高频的查询所使用的间隔,需要注意的是针对列存表,分区间隔过小(例如按小时)可能会导致小文件过多的问题,一般建议最小间隔为按天。
场景6:行存表求count值
某行存大表频繁全表count(指不带过滤条件或者过滤条件过滤很少数据的count),其中Scan花费43s,持续占用大量I/O,此类作业并发起来后,整体系统I/O持续100%,触发I/O瓶颈,导致整体性能慢。
对比相同数据量的列存表(A-rows均为40960000),列存的Scan只花费14ms,I/O占用极低。
触发因素:行存表因其存储方式的原因,全表scan的效率较低,频繁的对大表全表扫描,导致I/O持续占用。
解决办法:
- 业务侧审视频繁全表count的必要性,降低全表count的频率和并发度。
- 如果业务类型符合列存表,则将行存表修改为列存表,提高I/O效率。
场景7:行存表求max值
计算某行存表某列的max值,花费了26772ms,此类作业并发起后,整体系统I/O持续100%,触发I/O瓶颈,导致整体性能慢。
针对max列增加索引后,语句耗时从26s优化到32ms,极大减少I/O消耗。
触发因素:行存表max值逐个scan符合条件的值来计算max,当scan的数据量很大时,会持续消耗I/O。
解决办法:给max列增加索引,凭借btree索引数据有序存储的特征,加速扫描过程,降低I/O消耗。
场景8:大量数据带索引导入
某业务场景数据往DWS同步时,延迟严重,集群整体I/O压力大。
后台查看等待视图有大量wait wal sync和WALWriteLock状态,均为xlog同步状态。
触发因素:大量数据带索引(一般超过3个)导入(insert/copy/merge into)会产生大量xlog,导致主备同步慢,备机长期Catchup,整体I/O利用率飙高。历史案例参考:实例长期处于catchup问题分析。
解决方案:
- 严格控制每张表的索引个数,建议3个以内。
- 大量数据导入前先将索引删除,导入完成后再重新建索引。
场景9:行存大表首次查询
某业务场景出现备DN持续catchup,I/O压力大,观察某个SQL等待视图在wait wal sync。
排查业务发现某查询语句执行时间较长,执行kill命令后恢复。
触发因素:行存表大量数据入库后,首次查询触发page hint产生大量X LOG ,触发主备同步慢及大量I/O消耗。
解决措施:
- 对该类一次性访问大量新数据的场景,修改行存表为列存表。
- 可关闭wal_log_hints和enable_crc_check参数(不推荐该方式,因故障期间有数据丢失风险)。
场景10:小文件多IOPS高
某业务执行过程中,整个集群IOPS飙高,另外当出现集群故障后,长期Building不成功,IOPS飙高,相关表信息如下:
SELECT relname,reloptions,partcount FROM pg_class c INNER JOIN ( SELECT parentid,count(*) AS partcount FROM pg_partition GROUP BY parentid ) s ON c.oid = s.parentid ORDER BY partcount DESC;
触发因素:某业务库大量列存多分区(3000+)的表,导致小文件巨多(单DN文件2000w+),访问效率低,故障恢复Building极慢,同时Building也消耗大量IOPS,反向影响业务性能。
解决办法:
- 整改列存分区间隔,减少分区个数来降低文件个数。
- 列存表修改为行存表,行存的存储特征决定其文件个数不会像列存般膨胀严重。
小结
通过前面的场景总结得出,提升I/O使用效率可分为两个维度,即提升I/O的存储效率和计算效率(又称访问效率)。
- 提升存储效率包括整合小CU、减少脏数据、消除存储倾斜等。
- 提升计算效率包括分区剪枝、索引扫描等,可根据实际业务场景灵活处理。
DWS性能优化常见问题
更多常见问题 >>-
新一代、全场景数据仓库,一站式分析,性能、容量无限扩展。守护高价值数据、创享高价值分析,企业数字化转型坚实伙伴。 DWS可靠保护数据库中存储的数据,确保数据安全、完整、可用。
-
数据仓库服务(Data Warehouse Service,简称DWS)是一种基于公有云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。DWS是基于华为融合数据仓库GaussDB产品的云原生服务,兼容标准ANSI SQL 99和SQL 2003,同时兼容PostgreSQL/Oracle数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。
-
数据仓库DWS将OBS上存储的结构化数据映射为外部表,从而利用数据库SQL引擎的能力对OBS上的数据进行分析。在数据分散的情况下, 通过跨集群协同分析, 支撑周期性业务分析, 无需做全量数据搬移和转化, 提升分析效率
-
数据仓库服务是一种基于公有云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务
-
GaussDB(DWS)提供了资源管理功能,用户可以根据自身业务将资源按需划分成不同的资源池,不同资源池之间资源互相隔离。再通过关联数据库用户将其关联至不同的资源池,用户SQL查询时将根据“用户-资源池”的关联关系将查询转至资源池中执行。通过指定资源池上可并行运行的查询数、单查询内存上限以及资源池可使用的内存和CPU资源,从而实现对不同业务之间的资源限制和隔离,满足数据库混合负载需求,保证执行查询时有充足的系统资源,确保查询性能。
-
GaussDB(DWS)的概念和用途简述。
更多相关专题
更多精彩内容
域名注册服务机构许可:黔D3-20230001 代理域名注册服务机构:新网、西数