注册
列存表在达梦数据库中的使用
专栏/金的探索记录/ 文章详情 /

列存表在达梦数据库中的使用

2021/01/18 2316 0 0
摘要 列存表在达梦数据库中的使用

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

本文演示环境:DM Database Server x64 V7.1.6.48-Build(2018.03.01-89507)ENT

规划 HTS 表空间

HUGE 表在数据库中的存储,并不是在普通的表空间和数据文件上,而是会存放在专门的 HTS 表空间中。创建一个 HTS,其实就是创建一个空的文件目录。目录中的表,会以模式-表-列层层目录的方式来存放。示意图如下:

1.png

默认情况下,HUGE 表会存放在数据库自带的 HMAIN 表空间中。我们也可以手动规划一个 HTS 表空间名叫 HTEST,具体语句如下:

CREATE HUGE TABLESPACE HTEST PATH '/dm7/HTEST'

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

创建 HUGE 表

有了 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')

在创建表并插入数据之后,我们就可以在文件系统内查询到表的存储结构。

2.png

从这里我们可以看到,完整结构由三级目录构成:表空间的 HTEST 目录,对应模式的 SCH150994945 模式和对应表的 TAB1279 目录。在表目录下,每一列的数据会存放到单独的 dta 文件中。

HUGE 表使用说明

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

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服