在达梦数据库中,表的类型有很多种。传统的普通表,堆表,他们都是以行的方式来进行存储的,行存储是以记录为单位进行存储的,数据页面中存储的是完整的若干条记录。然而随着大数据的发展,有大量以查询为主的分析型需求诞生。因此达梦引入了 HUGE 表的概念。在 HUGE 表中,数据是以列为单位进行存储的,每一个列的所有行数据都存储在一起。 这样便可以加快某一个列的数据查询速度,同时因为列数据的类型一致,可以获得更大的压缩效率。本文就将带大家认识和了解 HUGE 表。
本文演示环境:DM Database Server x64 V7.1.6.48-Build(2018.03.01-89507)ENT
HUGE 表在数据库中的存储,并不是在普通的表空间和数据文件上,而是会存放在专门的 HTS 表空间中。创建一个 HTS,其实就是创建一个空的文件目录。目录中的表,会以模式-表-列层层目录的方式来存放。示意图如下:
默认情况下,HUGE 表会存放在数据库自带的 HMAIN 表空间中。我们也可以手动规划一个 HTS 表空间名叫 HTEST,具体语句如下:
CREATE HUGE TABLESPACE HTEST PATH '/dm7/HTEST'
注意这里和普通表空间的区别,普通表空间在规划时要指定数据文件的路径,而HTS表空间则是指定一个目录。规划好数据库会帮我们创建此目录,但是因为还未插入数据库,目录当前为空。
有了 HTS 表空间,我们可以尝试在HTEST中规划一个 HUGE 表,相关语句如下:
CREATE HUGE TABLE HTABLE(ID INT,name VARCHAR(20)) TABLESPACE HTEST
语句和一般的建表语句类似,同样,我们也可以用普通的 SQL来对表数据进行操作。
INSERT INTO HTABLE VALUES(1,'Owen')
INSERT INTO HTABLE VALUES(2,'Dameng')
在创建表并插入数据之后,我们就可以在文件系统内查询到表的存储结构。
从这里我们可以看到,完整结构由三级目录构成:表空间的 HTEST 目录,对应模式的 SCH150994945 模式和对应表的 TAB1279 目录。在表目录下,每一列的数据会存放到单独的 dta 文件中。
HUGE 表与普通行表一样,可以进行增、删、改操作,操作方式也是一样的。但 HUGE 表的删除与更新操作的效率会比行表低一些,并发操作性能也会比行表差一些。这一点我们可以从结构里面看到出,假如我们要在数据库中插入一行数据库,会对每一个列对应的 dta 文件都进行修改,因此在 HUGE 中不宜做频繁的删除及更新操作。总之,HUGE 表比较适合做分析型表的存储。
文章
阅读量
获赞