文章目录

  • 前言
  • 一、HUGE表的基本原理
    • 1.HUGE表的存储结构
    • 2.HUGE表类型
    • 3.HUGE辅助表
  • 二、HUGE表的创建
    • 1.创建HUGE表空间
    • 2.创建HUGE表

前言

随着大数据时代的到来,在数据库应用方面以海量数据查询为主的分析型需求大量出现。为了满足这一需求,达梦数据库实现了Huge File System(检查 HFS)存储机制,是一种针对海量数据进行分析的高效、简单的以列方式进行存储的存储机制。在HFS存储机制的基础上,达梦引入了列存储表的概念,简称HUGE表。


一、HUGE表的基本原理

1.HUGE表的存储结构

HUGE表的存储并不是创建在普通表空间和数据文件上,而是必须建立在其特有的HTS(HUGE TABLESPACE,即HUGE表空间)表空间上。这种HTS表空间区别于普通表空间,不是以段、簇、页的形式管理的,而是以一个文件系统的形式来管理的。创建一个HTS表空间,实际上是创建一个对应的文件目录。当HUGE表中插入数据后,系统会在生成的空目录下创建以“模式-表-列”目录结构来存储的数据文件。

对于每一个数据文件,其内部存储是按照区来进行管理的,区是文件内部数据管理的最小单位,也是唯一的单位。在创建表时可以设置一个区中可以存储单列数据的行数,一旦设置后就不能再修改

2.HUGE表类型

HUGE表分为非事务型 HUGE表和事务型HUGE表两种类型。


3.HUGE辅助表

每个HUGE表都会有一个相应的AUX辅助表来管理其数据,辅助表是系统自动生成的。可以通过查看AUX辅助表来查看HUGE表数据的基本信息。主要包括以下四个辅助表:

·AUX辅助表(主辅助表)

AUX辅助表是在创建HUGE表时系统自动创建的,用来管理以及辅助系统用户操作HUGE表文件中存储的数据。表名为“HUGE表名AUX”,如果该HUGE表为分区表,则辅助表名为“子表名AUX”。
一条记录对应文件中的一个数据区,包括下面15列:
1.COLID:表示当前这条记录对应的区所在的列的列ID号;
2.SEC_ID:表示当前这个记录对应的区的区ID号,每一个区都有一个ID号,并且唯一;
3.FILE_ID:表示这个区的数据所在的文件号;
4.OFFSET:表示这个区的数据在文件中的偏移位置,4K对齐;
5.COUNT:表示这个区中存储的数据总数(有可能包括被删除的数据);
6.ACOUNT:表示这个区中存储的实际数据行数;
7.N_LEN:表示这个区中存储的数据在文件中的长度,4K对齐的;
8.N_NULL:表示这个区中的数据中包括的NULL值的行数;
9.N_DIST:表示这个区中所有数据互不相同的行数;
10.CPR_FLAG:表示这个区是否压缩;
11.ENC_FLAG:表示这个区是否加密;
12.CHKSUM:用来较验的,该功能暂未启用;
13.MAX_VAL:表示这个区中的最大值,精确值;
14.MIN_VAL:表示这个区中的最小值,精确值;
15.SUM_VAL:表示这个区中所有值的和,精确值。
前面7列是用来控制数据存取的,根据这些信息就可以知道这个区的具体存储位置、长度及基本信息。后面8列都是用来对这个区进行统计分析的。其中,COLID和SEC_ID的组合键为辅助表的聚集关键字。

·事务型辅助表
为了辅助HUGE表的事务处理系统使用以下三个辅助表:

二、HUGE表的创建

1.创建HUGE表空间

如果不使用默认的表空间(HAMIN),则必须要先创建一个HUGE TABLESPACE(HTS),创建HTS表空间语法如下:

CREATE HUGE TABLESPACE HTS_NAME PATH '/opt/dmdbms/data/DAMENG/htsspace';

2.创建HUGE表

在创建HUGE表时,根据WITH|WITHOUT DELTA区分创建非事务型HUGE表还是事务型HUGE表。指定WITH DELTA,创建事务型HUGE表;指定WITHOUT DELTA,则创建非事务型HUGE表,缺省为WITHOUT DELTA。

创建事务型HUGE表T1

CREATE HUGE TABLE T1 (A INT, B INT) STORAGE(WITH DELTA) tablespace hts_name;


另外,在创建表HUGE表时,可以指定表的存储属性,存储属性包括如下几个方面:

  1. 区大小(一个区的数据行数)
    区大小可以通过设置表的存储属性来指定,区的大小必须是2的多少次方,如果不是则向上对齐。取值范围:1024行~1024*1024行。默认值为65536行。例如,创建HUGE表test,指定区的大小为2048,其它默认。
    CREATE HUGE TABLE test(name VARCHAR, sno INT) STORAGE(SECTION (2048));
    例如,创建HUGE表test,所有列都采用默认值。
    CREATE HUGE TABLE test(name VARCHAR, sno INT);

  2. 是否记录区统计信息,即在插入时是否记下其最大值最小值
    关于这一点有一个原则,如果这个列经常用作查询条件,并且数据不是很均匀,或者基本是有序的,那么做统计信息是非常有用的,反之则可以不做统计。缺省情况下,为记录区统计信息。如果想不记录,可通过设置STAT NONE实现。例如,创建HUGE表test,通过列存储属性指定统计信息属性(不记录区统计信息)。
    CREATE HUGE TABLE test(name VARCHAR STORAGE (STAT NONE), sno INT);
    又如,创建HUGE表test,通过表存储属性指定统计信息属性(不记录区统计信息)。
    CREATE HUGE TABLE test(name VARCHAR, sno INT) STORAGE (STAT NONE);

  3. 所属的表空间
    创建HUGE表,需要通过存储属性指定其所在的表空间,不指定则存储于默认表空间HMAIN中。HUGE表指定的表空间只能是HTS表空间,例如HTS_NAME为已指定HTS表空间。也可以在创建语句中通过tablespace选项来指定表空间CREATE HUGE TABLE T2 (A INT, B INT) STORAGE(WITH DELTA) tablespace hts_name;

  4. 文件大小
    创建HUGE表时还可以指定单个文件的大小,通过表的存储属性来指定,取值范围为16M~1024*1024M。不指定则默认为64M。文件大小必须是2的多少次方,如果不是则向上对齐。
    CREATE HUGE TABLE test(name VARCHAR, sno INT) STORAGE (filesize(64));


DM数据库 HUGE TABLE简析相关推荐

  1. php mysql 命令行模式_MySQL_MYSQL导入导出sql文件简析,一.MYSQL的命令行模式的设置- phpStudy...

    MYSQL导入导出sql文件简析 一.MYSQL的命令行模式的设置 桌面->我的电脑->属性->环境变量->新建-> PATH=":path\mysql\bin ...

  2. DM数据库——模式、表、索引管理基础(超详细版)

    DM数据库--模式.表.索引管理基础(超详细版) 一.管理模式对象的空间 1.DM8对普通表和索引提供的参数 2.DM8对HUGE表提供的参数 3.空间限制 4.查看占用的空间 二.管理表 1.设计表 ...

  3. DM数据库布局和存储管理

    DM数据库布局和存储管理 一.管理表空间 1.创建表空间 2.删除表空间 3.修改表空间 3.1修改表空间名 3.2修改表空间状态 3.3修改表空间数据缓冲区 3.4表空间文件的失效检查与恢复 3.4 ...

  4. Mysql锁机制及原理简析

    Mysql锁机制及原理简析 一.前言 1.什么是锁? 锁是计算机协调多个进程或线程并发访问某一资源的机制. 锁保证数据并发访问的一致性.有效性: 锁冲突也是影响数据库并发访问性能的一个重要因素. 锁是 ...

  5. Android Jetpack组件App Startup简析

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  6. java jdbc 教程_java JDBC系列教程之JDBC类的简析与JDBC的基础操作

    什么是JDBC? 概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使 ...

  7. mysql job_MySQL数据传输中dtle 之 job 实现简析-爱可生

    原标题:MySQL数据传输中dtle 之 job 实现简析-爱可生 作者:吕海龙 爱可生 DTLE 团队成员,负责 DTLE 开发 ,日常问题处理以及相关问题的排查. 本文来源:原创投稿 *爱可生开源 ...

  8. Hibernate框架整合DM数据库

    Hibernate整合DM数据库 本次的项目的目录结构如下 一.建库的SQL语句 CREATE TABLE "SYSDBA"."DM_BRAND" ( &quo ...

  9. C语言DCI(OCI)方式连接DM数据库

    C语言DCI(OCI)方式连接DM数据库 一.背景 近期用户使用DCI的方式连接达梦数据库出现中文乱码的问题,所以决定写一个测试Demo. 因为使用DCI的方式连接,适配中心https://eco.d ...

最新文章

  1. ValueError: cannot convert to ‘int64‘-dtype NumPy array with missing values. Specify an appropriate
  2. maya骨骼显示_干货 | 如何删除maya中绑定好的骨骼,只留下一个干净的模型
  3. 新功能:阿里云负载均衡SLB支持HTTPS虚拟主机功能(SNI)
  4. Linux学习笔记 Day 4~5
  5. UVA - 11806 Cheerleaders(组合数学+容斥原理)
  6. 对话短文本语义匹配-冠军代码
  7. 【UVa】Wavio Sequence(dp)
  8. CodeForces - 1610B Kalindrome Array
  9. GB28181协议——布防和报警订阅
  10. python自动化办公——python操作Excel、Word、PDF集合大全
  11. c语言自学基础知识视频,C语言 基础课堂视频教程
  12. 一文彻底理解卡诺图化简算法
  13. 全国计算机将文件属性隐藏,一键玩转隐藏属性文件
  14. ipv6的127位掩码如何表示_子网掩码是什么
  15. 【Python】阿里云对象存储OSS图床上传图片
  16. JavaScript操作DOM对象 Day05
  17. matlab水下机器人,水下机器人路径控制与仿真
  18. matlab狐狸与野兔数学模型,数学建模狐狸野兔问题.doc
  19. OSChina 周五乱弹 —— 子承父业?这几位CTO这么说
  20. Caliburn.Micro中的Screen和Conductor

热门文章

  1. pytest告警信息的处理方法
  2. 自然语言处理NLP之分词、词性标注(POS)、组块分析(Chunking)、命名实体识别(Named Entity Recognition,简称NER)
  3. OSChina 周六乱弹 —— 三口气印度史(3.5)
  4. VMWare 15虚拟机下载和安装说明兼容WIN10
  5. java.sql.SQLException: Incorrect Integer value:‘****‘ for column ‘id‘ at row 1 解决方案
  6. 如何为谷歌浏览器启用暗模式
  7. 谜语(发送给你的爱人吧)
  8. 2019.9.11 小米笔试算法岗编程题 两个动归
  9. 2020年四川省大型舞台艺术创作申报材料流程及申请奖励补助
  10. win10 你没有足够的权限执行此操作。