DM数据库 HUGE TABLE简析
文章目录
- 前言
- 一、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表时,可以指定表的存储属性,存储属性包括如下几个方面:
区大小(一个区的数据行数)
区大小可以通过设置表的存储属性来指定,区的大小必须是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);
是否记录区统计信息,即在插入时是否记下其最大值最小值
关于这一点有一个原则,如果这个列经常用作查询条件,并且数据不是很均匀,或者基本是有序的,那么做统计信息是非常有用的,反之则可以不做统计。缺省情况下,为记录区统计信息。如果想不记录,可通过设置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);
所属的表空间
创建HUGE表,需要通过存储属性指定其所在的表空间,不指定则存储于默认表空间HMAIN中。HUGE表指定的表空间只能是HTS表空间,例如HTS_NAME为已指定HTS表空间。也可以在创建语句中通过tablespace选项来指定表空间CREATE HUGE TABLE T2 (A INT, B INT) STORAGE(WITH DELTA) tablespace hts_name;
文件大小
创建HUGE表时还可以指定单个文件的大小,通过表的存储属性来指定,取值范围为16M~1024*1024M。不指定则默认为64M。文件大小必须是2的多少次方,如果不是则向上对齐。
CREATE HUGE TABLE test(name VARCHAR, sno INT) STORAGE (filesize(64));
DM数据库 HUGE TABLE简析相关推荐
- php mysql 命令行模式_MySQL_MYSQL导入导出sql文件简析,一.MYSQL的命令行模式的设置- phpStudy...
MYSQL导入导出sql文件简析 一.MYSQL的命令行模式的设置 桌面->我的电脑->属性->环境变量->新建-> PATH=":path\mysql\bin ...
- DM数据库——模式、表、索引管理基础(超详细版)
DM数据库--模式.表.索引管理基础(超详细版) 一.管理模式对象的空间 1.DM8对普通表和索引提供的参数 2.DM8对HUGE表提供的参数 3.空间限制 4.查看占用的空间 二.管理表 1.设计表 ...
- DM数据库布局和存储管理
DM数据库布局和存储管理 一.管理表空间 1.创建表空间 2.删除表空间 3.修改表空间 3.1修改表空间名 3.2修改表空间状态 3.3修改表空间数据缓冲区 3.4表空间文件的失效检查与恢复 3.4 ...
- Mysql锁机制及原理简析
Mysql锁机制及原理简析 一.前言 1.什么是锁? 锁是计算机协调多个进程或线程并发访问某一资源的机制. 锁保证数据并发访问的一致性.有效性: 锁冲突也是影响数据库并发访问性能的一个重要因素. 锁是 ...
- Android Jetpack组件App Startup简析
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- java jdbc 教程_java JDBC系列教程之JDBC类的简析与JDBC的基础操作
什么是JDBC? 概念:JAVA Database Connectivity Javas数据库连接,Java语言操作数据库接口,然后由各个数据库厂商去实现这个接口,提供数据库驱动java包,我们可以使 ...
- mysql job_MySQL数据传输中dtle 之 job 实现简析-爱可生
原标题:MySQL数据传输中dtle 之 job 实现简析-爱可生 作者:吕海龙 爱可生 DTLE 团队成员,负责 DTLE 开发 ,日常问题处理以及相关问题的排查. 本文来源:原创投稿 *爱可生开源 ...
- Hibernate框架整合DM数据库
Hibernate整合DM数据库 本次的项目的目录结构如下 一.建库的SQL语句 CREATE TABLE "SYSDBA"."DM_BRAND" ( &quo ...
- C语言DCI(OCI)方式连接DM数据库
C语言DCI(OCI)方式连接DM数据库 一.背景 近期用户使用DCI的方式连接达梦数据库出现中文乱码的问题,所以决定写一个测试Demo. 因为使用DCI的方式连接,适配中心https://eco.d ...
最新文章
- ValueError: cannot convert to ‘int64‘-dtype NumPy array with missing values. Specify an appropriate
- maya骨骼显示_干货 | 如何删除maya中绑定好的骨骼,只留下一个干净的模型
- 新功能:阿里云负载均衡SLB支持HTTPS虚拟主机功能(SNI)
- Linux学习笔记 Day 4~5
- UVA - 11806 Cheerleaders(组合数学+容斥原理)
- 对话短文本语义匹配-冠军代码
- 【UVa】Wavio Sequence(dp)
- CodeForces - 1610B Kalindrome Array
- GB28181协议——布防和报警订阅
- python自动化办公——python操作Excel、Word、PDF集合大全
- c语言自学基础知识视频,C语言 基础课堂视频教程
- 一文彻底理解卡诺图化简算法
- 全国计算机将文件属性隐藏,一键玩转隐藏属性文件
- ipv6的127位掩码如何表示_子网掩码是什么
- 【Python】阿里云对象存储OSS图床上传图片
- JavaScript操作DOM对象 Day05
- matlab水下机器人,水下机器人路径控制与仿真
- matlab狐狸与野兔数学模型,数学建模狐狸野兔问题.doc
- OSChina 周五乱弹 —— 子承父业?这几位CTO这么说
- Caliburn.Micro中的Screen和Conductor
热门文章
- pytest告警信息的处理方法
- 自然语言处理NLP之分词、词性标注(POS)、组块分析(Chunking)、命名实体识别(Named Entity Recognition,简称NER)
- OSChina 周六乱弹 —— 三口气印度史(3.5)
- VMWare 15虚拟机下载和安装说明兼容WIN10
- java.sql.SQLException: Incorrect Integer value:‘****‘ for column ‘id‘ at row 1 解决方案
- 如何为谷歌浏览器启用暗模式
- 谜语(发送给你的爱人吧)
- 2019.9.11 小米笔试算法岗编程题 两个动归
- 2020年四川省大型舞台艺术创作申报材料流程及申请奖励补助
- win10 你没有足够的权限执行此操作。