对比分析数仓中行列存的特性

对比,分析,行列,特性 · 浏览次数 : 82

小编点评

**行存与列存对比** | 特征 | 行存 | 列存 | |---|---|---| | 表格设置 | ROW | COLUMN | | 数据存储方式 | 行式 | 列式 | | 数据访问方式 | 逐列访问 | 逐行访问 | | 性能 | 较快 | 较慢 | | 数据压缩 | 高 | 低 | | 更新/删除操作 | 更方便 | 更复杂 | | 表级检查约束 | 不支持 | 支持 | | 线程锁问题 | 容易引发 | 避免引发 | | 导入数据 | 批量插入 | 单行插入 | | 分区表 | 支持 | 支持 | | 行存与列存join | 支持 | 支持 |

正文

摘要:行存表示了一种数据的存储方式,是最传统的一种存储方式。

本文分享自华为云社区《【玩转PB级数仓GaussDB(DWS)】行列存对比的一些事》,作者:sevenjiang。

行存表示了一种数据的存储方式,是最传统的一种存储方式。对于GaussDB(DWS)来说可以认为其表示存储引擎的基础实现,在其之上逐步构筑了列存和hdfs之类的存储特性。如下简单介绍下行列存使用的一些对比。

集群设置介绍:

参数default_orientation控制建表不指定存储方式的默认行为。

通过如下建表显式设置可以指定行列存储:

ORIENTATION

指定表数据的存储方式,即行存方式、列存方式,该参数设置成功后就不再支持修改。

取值范围:

• ROW,表示表的数据将以行式存储。

行存储适合于OLTP业务,此类型的表上交互事务比较多,一次交互会涉及表中的多个列,用行存查询效率较高。

• COLUMN,表示表的数据将以列式存储。

列存储适合于数据仓库业务,此类型的表上会做大量的汇聚计算,且涉及的列操作较少

适用场景:

列储存优势:

  • 列的数据特征比较相似,适合压缩,压缩比很高;
  • 表列的个数比较多,但是访问的列个数比较少, 列存可以大大减少不必要的IO读, 提高性能;
  • 基于列批量数据的运算,CPU的cache命中率比较高,性能比较好;
  • 列存储引擎更适合OLAP大数据统计分析的场景。

列储存劣势:

  • 列存表(delta表但默认并没有启用)不适合小量 insert 及update操作

行存储优势:

  • 点查询(返回记录少,基于索引的简单查询);
  • 增、删、改操作较多的场景;
  • 主要使用整张表的内容,而不是单独某几个列,并且所关注的内容不需要通过任何聚集运算,推荐使用行式存储。

对比现状:

  • 类型支持范围不同;
  • 不支持表达式索引,索引失效;
  • 行存默认btree索引,列存默认psort,主健是813版本支持的,老版本不支持;
  • 老版本列存复制表不支持更新,813版本支持 ;
  • 表级的check约束列存不支持 ;
  • cu锁的问题,并发更新会报错 ;
  • 没有并发更新,但是开启delta表,更新/delete概率出错;
  • 小CU的问题突出,引发空间膨胀,性能问题等 ;
  • exchange要求表的with中option一致;

列存导入实现方式:

  1. 列存表推荐使用批量插入(INSERT INTO SELECT/COPY),单行记录插入会造成空间浪费,访问效率下降;
  2. 导入数据按列缓存,默认每60000行(通过max_batchrow修改)或者1G的大小生成CU;
  3. 生成CU时,根据数据类型,默认low压缩级别(通过compression修改),进行压缩。
  4. 先写入CUDesc,再写入CU,同时将CU插入到数据复制队列。最后写入VCU;
  5. CU文件是追加写(APPEND ONLY)。
  6. 分区表注意:
  • 每一个分区是一个独立的列存表;
  • vector batch的进入,单条数据进入bulkload_row;
  • 下盘、读取的处理;
  • 内存自适应。

存在行列存join情况:

行存列存JOIN 转换的执行计划不符合预期,可以通过 set enable_force_vector_engine = on; 进行下优化:

enable_force_vector_engine

参数说明:对于支持向量化的执行器算子,如果其子节点是非向量化的算子,通过设置此参数为on,强制生成向量化的执行计划。

当打开enable_force_vector_engine开关时,无论是行存表、列存表或者是行列混存,如果plantree中不包含不支持向量化的场景,则强制走向量化执行引擎。

参数类型:USERSET

取值范围:布尔型

默认值:off

手工基础行转列操作,如果表有业务执行,需要进行加锁或者事务中执行,视图和索引进行单独处理:

create table schema.row_table1 (like schema.table1 including all EXCLUDING RELOPTIONS EXCLUDING INDEXES) WITH (ORIENTATION=column;
insert into schema.row_table1 select * from schema.table1;
ALTER TABLE schema.row_table1 ADD CONSTRAINT row_table1_pk PRIMARY KEY (xxx_id);
alter table rename schema.table1 to col_table1;
alter table rename schema.row_table1 to table1;

 

点击关注,第一时间了解华为云新鲜技术~

与对比分析数仓中行列存的特性相似的内容:

对比分析数仓中行列存的特性

摘要:行存表示了一种数据的存储方式,是最传统的一种存储方式。 本文分享自华为云社区《【玩转PB级数仓GaussDB(DWS)】行列存对比的一些事》,作者:sevenjiang。 行存表示了一种数据的存储方式,是最传统的一种存储方式。对于GaussDB(DWS)来说可以认为其表示存储引擎的基础实现,在

解读数仓中的数据对象及相关关系

摘要:为实现不同的功能,GaussDB(DWS)提供了不同的数据对象类型,包括索引、行存表、列存表及其辅助表等。这些数据对象在特定的条件下实现不同的功能,为数据库的快速高效提供了保证,本文对部分数据对象进行介绍。 本文分享自华为云社区《GaussDB(DWS)之数据对象及相互关系总结》,作者:我的橘

详解数仓中sequence的应用场景及优化

摘要:本文简单介绍sequence的使用场景及如何修改sequence的cache值提高性能。 本文分享自华为云社区《GaussDB(DWS)关于sequence的那些事》,作者:Arrow0lf 。 什么是sequence sequence,也称作序列,是用来产生唯一整数的数据库对象。序列的值按照

基于SpringBoot实现操作GaussDB(DWS)的项目实战

摘要:本文就使用springboot结合mybatis plus在项目中实现对GaussDB(DWS)的增删改查操作。 本文分享自华为云社区《基于SpringBoot实现操作GaussDB(DWS)的项目实战【玩转PB级数仓GaussDB(DWS)】》,作者:清雨小竹。 GaussDB(DWS) 数

数仓实践丨主动预防-DWS关键工具安装确认

摘要:gdb确认是否安装,所带来的该工具用户数据库实例触发core问题后集群状态反复异常,对此问题及时分析根因并及时进行规避。 本文分享自华为云社区《主动预防-DWS关键工具安装确认》,作者:上官寒雨。 【关键工具确认】 1、gdb确认是否安装(该工具用户数据库实例触发core问题后集群状态反复异常

带你认识数仓的增量备份核心设计

摘要:增量备份是重要的常规备份策略,正确快速识别增量变化文件的相关信息对增量备份至关重要。 本文分享自华为云社区《其疾如风,GaussDB(DWS)增量备份核心设计》,作者: 我的橘子呢 。 1、认识增量备份 GaussDB(DWS)数仓的备份恢复工具Roach支持集群级增量备份。全量备份会将源数据

数仓安全测试之SSRF漏洞

摘要:SSRF (Server-Side Request Forgery,服务器端请求伪造)是指由攻击者构造请求,然后利用服务器的漏洞以服务端的身份向内网发送请求对内网发起攻击。 本文分享自华为云社区《GaussDB(DWS)安全测试之SSRF漏洞》,作者: ACBD。 1. 什么是SSRF漏洞 S

掌握把“烂”SQL牢牢关进笼子里的密钥

摘要:本文通过5个部分内容帮助开发者快速了解GaussDB(DWS) 资源管理机制,让数仓过载烦恼不再,把“烂”SQL牢牢关进笼子里。 本文分享自华为云社区《直播回顾 | 掌握把“烂”SQL牢牢关进笼子里的密钥》,作者: 华为云社区精选 。 混合负载场景下,怎样避免“烂”语句对数据库系统的冲击?如何

华为云MRS支持lakeformation能力,打造一站式湖仓,释放数据价值

摘要:对云端用户而言,业务价值发现是最重要的,华为MRS支持LakeFormation后,成功降低了数据应用的成本,帮助客户落地“存”与“算”的管理,加快推进了数智融合进程,更大程度地释放业务数据价值。 本文分享自华为云社区《华为云MRS支持lakeformation能力,打造一站式湖仓,释放数据价

现代数据平台要实现自助用数,要解决的三个问题

摘要:华为云FusionInsight MRS HetuEngine持续提升自助用数分析平台的可服务、易运维能力,基于AI技术持续提升对数据分析平台的智能化赋能水平,引领现代数据分析平台向专业化、智能化、易运维、高性能方向演进。 本文分享自华为云社区《现代数据平台要实现自助用数还要解决的三大问题》,