GBase 8s列存存储功能说明 在海量数据统计、多维分析类业务场景中传统行存储往往存在扫描量大、IO 消耗高的性能瓶颈。GBasegbase database 提供 INMEMORY 列存存储能力通过列式数据组织形式显著提升聚合、分组、排序等分析类查询效率。下文为官方完整列存存储使用文档涵盖建表语法、属性修改、查询规则、参数配置、系统表等全部核心内容供开发与运维人员查阅使用。列存存储列存定义--创建t1表表属性指定为列存 CREATE TABLE t1( a int, b int, c int) INMEMORY; --创建t2表表属性指定为列存c指定为非列存 CREATE TABLE t2( a int, b int,c int) INMEMORY INMEMORY(a,b) NO INMEMORY(c); --创建t3表表属性指定为非列存a,b指定为列存 CREATE TABLE t3( a int, b int,c int) NO INMEMORY INMEMORY(a,b) ; --创建t4表不指定表的列存属性c指定为非列存,a,b指定为列存 CREATE TABLE t4( a int, b int,c int) INMEMORY(a,b) NO INMEMORY(c);修改列存属性--修改t1表为非列存表 ALTER TABLE t1 NO INMEMORY; --修改t2表a字段为非列存 ALTER TABLE t2 NO INMEMORY(a); --修改t3表a,b为非列存c为列存 ALTER TABLE t3 INMEMORY(c) NO INMEMORY(a,b);列存表强制同步ALTER TABLE table_name FORCE INMEMORY;列存查询支持场景带聚合函数的查询 带包含order by group by olap函数聚合函数等至少一种分析算子的查询 如SELECT c4, COUNT(c1), AVG(c7) FROM t1 WHERE c10 2025-01-01 08:00:00 GROUP BY c4;参数 / HINT 强制查询 参数 INMEMORY_QRY 配置为2如 onmode -wf INMEMORY_QRY 2 使用 INMEMORY HINT如 SELECT /* INMEMORY */ * FROM 表名; 查询界面无法知道语句是否执行了INMEMORY查询可以通过查看执行计划中的Query Statistics如果为memqry则为列存查询。QUERY: (OPTIMIZATION TIMESTAMP: 11-18-2025 17:30:15) ------ select sum(c1) from t1 ? Estimated Cost: 2 Estimated # of Rows Returned: 1 ? 1) gbasedbt.t1: SEQUENTIAL SCAN ? ? Query statistics: ----------------- ? Table map : ---------------------------- Internal name Table name ---------------------------- ? type rows_prod est_rows time est_cost ------------------------------------------------- memqry 1 0 00:00.00 0相关参数配置列存相关的配置参数位于$GBASEDBTDIR/etc/onconfig.servername(servername为实例名后缀)配置方式参考如下INMEMORY0 关闭列存功能1 为默认值打开列存功能1.修改配置文件重启数据库服务INMEMORY_QRY0 数据库不进行列存查询1 只有符合要求且存在olap分析算子order by/group by/olap函数/聚合函数的查询语句进行列存查询2 强制进行列存查询1.修改配置文件重启数据库服务2.动态设置onmode -wf INMEMORY_QRY1INMEM_MEM_LIMITINMEMORY的内存大小限制1.修改配置文件重启数据库服务2.set environment inmemory memlimit 4G;INMEM_TEMPDBSINMEMORY的临时磁盘空间大小限制1.修改配置文件重启数据库服务2.set environment inmemory tempdbs 50G;INMEM_THREADS列存线程数1.修改配置文件重启数据库服务INMEM_TEMPDBS_PATH配置临时空间目录默认值修改为 $GBASEDBTDIR/tmp1.修改配置文件重启数据库服务可以使用以下命令查询当前INMEMORY内存和磁盘使用情况info?inmemory;系统表sysmaster库下新增系统表sysinmemory用于保存表的列存相关属性。列类型解释databasechar(128)数据库ownernchar(32)所属者tabnamenvarchar(128,0)表名tabidserial表IDobjnamenvarchar(128,0)对象名objtypechar(1)对象列存类型objtype为”T”表示该行记录为列存若为”C”则表示列存表中开启列存功能列的信息。objpartninteger表的物理存储位置objcolnosmallint列存列的列号objcoltypesmallint列存列类型objcolleninteger列存列长度本文完整收录 GBase INMEMORY 列存存储原生文档内容覆盖建表、属性变更、查询校验、参数调优、系统表查询全流程操作。大家在报表、离线分析等 OLAP 场景开发时可直接参考文中 SQL 语法与参数配置若实操中遇到列存未生效、内存资源不足、执行计划无 memqry 标识等问题欢迎在社区留言交流后续会持续更新相关排错经验与优化案例。