DM8HUGE表使用小技巧

HUGE表就是列式存储表,存储在特定的HUGE表空间中。普通的表空间,数据是通过段、簇、页来管理的,并且以固定大小(4K、8K、16K、32K)的页面为管理单位;而HUGE 表空间是通过HFS 存储机制来管理的,它相当于一个文件系统。创建一个HUGE 表并插入数据时,数据库会在指定的HTS 表空间目录下创建一系列的目录及文件。

下图展示了相同的表数据在行存储表与列存储表中的不同存储方式。

行存储图                                列存储图

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

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

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

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

④允许建立二级索引;

⑤支持以 ALTERTABLE 的方式添加或者删除PK 和UNIQUE 约束。

HUGE表分类

非事务型 HUGE 表

非事务型HUGE 表的增、删、改是直接对HUGE 表进行写操作,不写UNDO 日志,直接操纵文件,速度快,并发性能不高,但也因此导致不支持事务。当非事务型HUGE 表在操作过程中出现系统崩溃或者断电等问题时,因为修改时采取的是直接写的策略,所以有可能会出现数据不一致的问题。

事务型HUGE 表

事务型HUGE 表,通过增加RAUX、DAUX和UAUX 行辅助表,减少了事务型HUGE 表增、删、改操作的IO,提高效率,同时提高并行性能。事务型HUGE 表支持UNDO 日志,实现了事务特性。

HUGE表创建

创建事务型的HUGE表,数据库默认会创建

HUGE表指定普通表空间存储报错

HUGE表未指定HUGE表空间,默认是HMAIN表空间。

需要注意的是,当指定创建事务型HUGE表时,指定HUGE表镜像文件方案的选项LOGNONE|LOG LAST|LOG ALL失效。

创建非事务型的HUGE表

需要将参数HUGE_WITH_DELTA修改为0,否则不支持创建非事务型HUGE表。

成功创建HUGE表后会生成一个目录,目录名为SCH+长度为9 的ID 号组成的字符串。

查询HUGE表

查询单列时,数据库性能有明显的提升。

使用HUGE表时应注意存在以下一些限制

1.建HUGE表时仅支持定义NULL、NOTNULL、UNIQUE约束以及PRIMARYKEY,后两种约束也可以通过ALTERTABLE的方式添加,但这两种约束不检查唯一性;

2.HUGE不允许建立聚簇索引,允许建立二级索引,不支持建位图索引,其中UNIQUE索引不检查唯一性;

3.不支持SPACELIMIT(空间限制);

4.不支持建立全文索引;

5.不支持使用自定义类型;

6.不支持引用约束;

7.不支持IDENTITY自增列;

8.不支持大字段列;

9.不支持建触发器;

10.不支持游标的修改操作;

11.PK和UNIQUE约束不检查唯一性,对应的索引都为虚索引;UNIQUE索引也不检查唯一性,为实索引,索引标记中不包含唯一性标记,即和普通二级索引相同;

12.不允许对分区子表设置SECTION和WITH/WITHOUTDELTA;

13.当事务型HUGE表进行了较多增删改操作时,应对其进行数据重整操作,以提高性能。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值