数据仓库服务 GAUSSDB(DWS)-DWS中单表查询性能与哪些因素有关?
DWS中单表查询性能与哪些因素有关?
DWS采用Shared-nothing架构,数据是被分布式存储,因此分布键设计、单表存储数据量、分区数量都会影响单表的整体查询性能。
- 分布键设计
DWS默认会选择主键的第一列作为分布键。如果同时设置主键和分布键,则主键必须包含分布键。分布键决定了数据在各个分区之间的分布情况,如果分布键很好地分布在各个分区中,则可以使查询性能变得更好。
分布列选择不当,在数据导入后有可能出现数据分布倾斜,进而导致某些磁盘的使用明显高于其他磁盘,极端情况下会导致集群只读。合理的选择分布键,对表查询的性能至关重要。此外,合适的分布键还可以使数据的索引更快地创建和维护。
- 单表存储数据量
单表存储的数据量越大,查询性能就越差。当表中的数据量很大时,则需要考虑将数据进行分区存储。普通表若要转成分区表,需要新建分区表,然后把普通表中的数据导入到新建的分区表中。因此在初始设计表时,请根据业务提前规划是否使用分区表。
对表进行分区,一般需要遵循以下原则:
- 使用具有明显区间性的字段进行分区,比如日期、区域等字段。
- 分区名称应当体现分区的数据特征。比如关键字+区间特征。
- 将分区上边界的分区值定义为MAXVALUE,以防止可能出现的数据溢出。
- 分区数量
利用分区,可以将表和索引划分为一些更小、更易管理的单元。大幅减少搜索空间,从而提升访问性能。
使用分区数量会影响查询的性能。如果分区数量太小,则可能会使查询性能下降。
DWS支持范围分区(Range Partitioning)和列表分区(List Partitioning)功能,即根据表的一列或者多列,将要插入表的记录分为若干个范围(这些范围在不同的分区里没有重叠),然后为每个范围创建一个分区,用来存储相应的数据。其中,列表分区(List Partitioning)仅8.1.3及以上集群版本支持。
因此,在设计 数据仓库 时,需要考虑这些因素并进行实验来确定最佳设计方案。
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- 数据库监控DMS_数据库智能运维_了解Auto Pilot_DMS_DWS节点监控
- GaussDB(DWS)服务_什么是IoT数仓_如何使用IoT数仓
- 如何进行日志采集和转储_日志平台_日志接入_日志转储