达梦数据库列存表的使用

在达梦数据库中,表的类型有很多种。传统的普通表,堆表,他们都是以行的方式来进行存储的,行存储是以记录为单位进行存储的,数据页面中存储的是完整的若干条记录。然而随着大数据的发展,有大量以查询为主的分析型需求诞生。因此达梦引入了HUGE表的概念。在HUGE表中,数据是以列为单位进行存储的,每一个列的所有行数据都存储在一起。这样便可以加快某一个列的数据查询速度,同时因为列数据的类型一致,可以获得更大的压缩效率。

01 规划HTS表空间

HUGE表放在专门的HTS表空间中。创建一个 HTS,其实就是创建一个空的文件目录。目录中的表,会以模式-表-列层层目录的方式来存放。示意图如下:
达梦数据库列存表的使用_第1张图片

默认HUGE表存放在自带的HMAIN表空间中。手工创建一个FXZ表空间:

create HUGE TABLESPACE FXZ PATH 'C:\dmdbms\data\DAMENG\FXZ';

注意:普通表空间在规划时要指定数据文件的路径,而HTS表空间则是指定一个目录。
规划好数据库会帮我们创建此目录,但是因为还未插入数据库,目录当前为空。

02 创建HUGE表

有了HTS表空间,规划一个HUGE表,操作表的语句和普通表都一样,如下:

create HUGE TABLE FXZ (ID INT,NAME VARCHAR2(20)) TABLESPACE FXZ;
INSERT INTO FXZ VALUES (1,'达梦数据库');
INSERT INTO FXZ VALUES (2,'Oracle');
commit;

在创建表并插入数据之后,我们就可以在文件系统内查询到表的存储结构
达梦数据库列存表的使用_第2张图片
从这里我们可以看到,完整结构由三级目录构成:表空间的HTEST目录,对应模式的SCH150994945模式和对应表的TAB1298目录。在表目录下,每一列的数据会存放到单独的dta文件中。

03 HUGE表使用总结

  1. HUGE表与普通行表一样,可以进行增、删、改操作方式一样。
  2. HUGE表的删除与更新操作的效率会比行表低一些;
  3. 并发操作性能也会比行表差一些。这一点我们可以从结构里面看到出,假如我们要在数据库中插入一行数据库,会对每一个列对应的dta文件都进行修改;
  4. HUGE表不宜做频繁的删除及更新操作;
  5. HUGE表比较适合做分析型表的存储;

你可能感兴趣的:(达梦数据库)