国产数据库DM7列存储测试(2)- 列存表介绍

DM7传统的行存表存储结构如图所示:

bb

可以看出,在DM7中存储的层次结构如下:

1. 系统由一个或多个表空间组成;

2. 每个表空间由一个或多个数据文件组成;

3. 每个数据文件由一个或多个簇组成;

4. 段是簇的上级逻辑单元,一个段可以跨多个数据文件;

5. 簇由磁盘上连续的块组成,一个簇总是在一个数据文件中;

6. 块是数据库中最小的分配单元,也是数据库中使用的最小的IO单元。

 

Oracle的表空间à数据文件ààà  是不是很像呢 J

二、DM7列存储表

       列存储表是相对普通的行存储表而言的,它们主要的不同在于列存储表的每一个列都是存储在一起的,而不是以记录为单位存储,所有行的同一列存储在一起。

       DM7 列存储表分为VERTICAL表和HFS表。HFS(全称Huge File System)是达梦数据库实现的针对海量数据进行分析的一种高效、简单的列存储表。表面上看与VERTICAL表相似,但是,在底层存储结构上却存在很大的不同。

      

三、下面我们先看一下Vertical表:

       VERTICAL表在具体存储实现方式上就是每一个列的数据存储在一个段中,并且每一个列分成若干个区,区是由物理上的簇构成,大小可以通过创建表时在语句中指定。每一个区对应一个区描述项,用来管这个区中的数据,可以通过区描述项找到这个区的具体位置;区描述项中还可以记录区内数据的最大值与最小值,在进行带条件扫描时,可以借助此信息减少不必要的IO操作。 为尽可能提高列数据存储的连续性,区描述页单独存放在另一个数据段中。

bb       

                                                                                         VERTICAL结构示意图

 

 

VERTICAL表的存储方式有以下几个优点:

1 同一个列的数据都是连续存储的,可以加快某一个列的数据查询速度;

2 连续存储的列数据,具有更大的压缩单元和数据相似性,可以获得远优于行存储的压缩效率;

3 条件扫描借助数据区过滤,可以进一步减少IO,提高扫描效率。

VERTICAL表存在上面几个优点,当然它也有它的缺点:

1 VERTICAL封锁粒度较大,且不支持多版本并发控制;

2 VERTICAL表的插入、删除与更新操作处理都不及行存储表方便;

3 VERTICAL表不支持建立除NULLNOT NULLUNIQUE外的任何约束,也不允许建立二级索引,仅可以在建表的时候指定主键。

总之,VERTICAL表主要针对海量数据的扫描分析,并不适用于常规的联机事务处理。

四、HFS

       HFS表是建立在自己特有的表空间HTS(全称HUGE TABLESPACE)上的。HTS表空间的相关信息存储在动态视图V$huge_tablespace中。HUGE表空间ID取值范围为0~32767 ID由系统自动分配,ID不能重复使用,即使删除掉已有HUGE表空间,也无法重复使用已用ID号,也就是说创建32768HUGE表空间后,则无法再创建HUGE表空间。 这个表空间与普通的表空间不同。普通的表空间,数据是通过段、簇、页来管理的,并且以固定大小(4K8K16K32K)的页面为管理单位;而HTS相当于一个简单的文件系统,创建一个HTS,其实就是创建一个空的目录(系统中有一个默认HTS,目录名为HMAIN)。

       在创建一个HFS表之后,数据库会在指定的HTS表空间目录下创建一系列的目录及文件,文件系统结构图如下:

bb

HFS结构示意图


对于HFS表可以指定如下参数: 区大小(一个区的数据行数)。 区大小可以通过设置表的存储属性来指定,区的大小必须是2的多少次方,如果不是则向上对齐。取值范围:1024行~1024*1024行。默认值为65536行。

HFS表的存储方式有以下几个优点:

1 同一个列的数据都是连续存储的,可以加快某一个列的数据查询速度;

2 连续存储的列数据,具有更大的压缩单元和数据相似性,可以获得远优于行存储的压缩效率,压缩的单位是区;

3 条件扫描借助数据区的统计信息进行精确过滤,可以进一步减少IO,提高扫描效率;

4 HFS表进行修改时,不写日志,不通过BUFFER缓存,直接操纵文件,速度快;

5 允许建立二级索引;

6 支持以ALTER TABLE的方式添加或者删除PKUNIQUE约束。

 HFS表存在上面几个优点,当然它也有它的缺点:

1 HFS表操作时封锁粒度较大,且不支持多版本并发控制;

2 HFS表的插入、删除与更新操作处理都不能进行回滚;

3 HFS表不支持建立除NULLNOT NULLUNIQUE外的任何约束,仅可以在建表的时候指定主键;

4 HFS表不支持事务,没有事务的特性;

       

fj.png数据文件-簇-页之间的关系.jpg

fj.pngVERTICAL结构示意图.jpg

fj.pngHFS存储结构.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7220098/viewspace-764125/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7220098/viewspace-764125/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值