行列混合存储引擎

109 阅读2分钟
  • 行列混合存储引擎

    openGauss支持行存储和列存储两种存储模型,用户可以根据应用场景,建表的时候选择行存储还是列存储表。

    一般情况下,OLAP类业务场景(范围统计类查询和批量导入操作频繁,更新、删除、点查和点插操作不频繁,表的字段比较多,即大宽表,查询中涉及到的列不是很多)下,适合列存储,OLTP类业务场景(点查、点插、删除、更新频繁,范围统计类查询和批量导入操作不频繁,表的字段个数比较少,查询大部分字段)下,适合行存储。

    图2所示,行列混合存储引擎可以同时为用户提供更优的数据压缩比(列存)、更好的索引性能(列存)、更好的点更新和点查询(行存)性能。

    图 2 行列混存引擎

    当前列存储引擎有以下约束:

    • DDL仅支持CREATE/DROP/TRUNCATE TABLE的功能。

      兼容分区的DDL管理功能(如:ADD/DROP/MERGE PARTITION,EXCHANGE功能)。

      支持CREATE TABLE LIKE语法。

      支持ALTER TABLE的部分语法。

      其他功能都不支持。

    • DML支持UPDATE/COPY/DELETE。

    • 不支持触发器,不支持主外键。

    • 支持Psort index、B-tree index和GIN index,具体约束参见《SQL参考》中“SQL语法 > CREATE INDEX”章节。

  • 列存下的数据压缩

    对于非活跃的早期数据可以通过压缩来减少空间占用,降低采购和运维成本。

    openGauss列存储压缩支持Delta Value Encoding、Dictionary、RLE 、LZ4、ZLIB等压缩算法,且能够根据数据特征自适应的选择压缩算法,平均压缩比7:1。压缩数据可直接访问,对业务透明,极大缩短历史数据访问的准备时间。