数据仓库服务 GAUSSDB(DWS)-实时数仓简介:行存、列存、HStore表对比

时间:2024-12-10 15:22:52

行存、列存、HStore表对比

表2 行存、列存、HStore表对比

表类型

行存表

列存表

HStore表

数据存储方式

以元组为单位,将每一条数据的所有属性值存储到临近的空间里。

以CU(Compress Unit)为单位,将单个属性的所有值存储到临近的空间里。

数据主要以CU形式存储在列存主表上,对于被更新的列、小批量插入的数据将被序列化后存储到新设计的Delta表上。

数据写入

行存压缩暂未商用,数据按原始状态存储,磁盘空间占用较大。

按列存储时,由于属性值类型相同具有天然的压缩优势。数据写入时能极大节省IO资源与磁盘空间占用。

批量插入的数据直接写入CU,具有与列存一致的压缩优势。

被更新的列、小批量插入的数据会序列化后压缩。同时定期merge到主表CU。

数据更新

数据按行更新,没有CU锁问题,并发更新(update/upsert/delete等)性能好。

即使更新单条数据,也要获取整个CU的锁,基本无法支持并发更新(update/upsert/delete等)。

彻底解决列存更新的CU锁问题,并发更新(update/upsert/delete等)的性能达到行存的60%以上。

数据读取

按行读取,即使只需访问某一列的数据,也需要将一整行的数据取出。查询性能较差。

按列读取时只需访问该列的CU,再加上CU的压缩优势导致需要占用的IO资源更少,读取性能很好。

对于列存主表的数据按列读取,对于被更新的列、小批量插入的数据会反序列化后取出,数据merge到主表后具有与列存一致的数据读取优势。

优点

并发更新性能好。

查询性能好,磁盘占用空间少。

并发更新性能好,数据MERGE后具有与列存一致的查询性能优势与压缩优势。

缺点

占用磁盘空间多,查询性能差。

基本无法支持并发更新。

需要后台常驻线程对HStore表进行merge清理操作。先merge到CU主表再进行清理,与SQL语法中的Merge无关。

适用场景

  1. 更新删除操作频繁的TP事务场景。
  2. 点查询(基于索引的、返回数据量小的简单查询)。
  1. 查询分析为主的AP场景。
  2. 数据量大,存入后的更新删除操作少。
  1. 实时并发入库场景。
  2. 需要支持高并发的更新入库操作以及高性能的查询效率。
support.huaweicloud.com/HyDevg-910-dws/dws_15_00002.html