| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 达梦数据库之HUGE表 -> 正文阅读 |
|
[大数据]达梦数据库之HUGE表 |
HUGE表是一种列存储表,其建立在HUGE FILE SYSTEM(HFS)机制上。HFS是达梦数据库对海量数据进行分析的一种高效、简单的列存储机制。 HUGE表存储在HTS(HUGE TABLESPACE)表空间上,最多可以创建32767个HUGE表空间。默认的HUGE表空间是HMAIN。查看HUGE表空间的SQL语句如下: SQL> select * from v$HUGE_TABLESPACE; 行号 ID NAME PATHNAME DIR_NUM COPY_NUM SIZE_MODE ---------- ----------- ---- ------------------------------- ----------- ----------- --------- 1 4 MAIN /home/dmdba/dmdbms/DAMENG/HMAIN 1 NULL NULL 已用时间: 2.030(毫秒). 执行号:2700. HUGE表空间与普通表空间不同: 1、对于普通表空间,数据是通过段、粗、页来管理的,并且是固定大小(4k、8k、16k、32k)的页为管理单位。 2、HUGE表空间是通过HFS存储机制来管理的。HTS本质上是一个空的文件目录。在创建HUGE表并插入数据时,数据库会在指定的HTS表空间目录下创建一系列的目录及文件。 达梦数据库支持两种类型的HUGE表:非事务型HUGE表和事务型HUGE表。 创建HUGE表空间的SQL语句如下。这里不使用默认的HUGE表空间HMAIN。 SQL> create huge tablespace htbs path '/home/dmdba/dmdbms/DAMENG/htbs'; 操作已执行 已用时间: 85.644(毫秒). 执行号:2704. 创建语句中的PATH关键字需注意。 查看: select * from v$huge_tablespace; 删除HUGE表空间的SQL语句如下: drop huge tablespace htbs; 创建HUGE表: SQL> create huge table h_dave(a int,b int) storage(with delta,on htbs); 操作已执行 已用时间: 18.169(毫秒). 执行号:2706. 查看创建语句: call sp_tabledef('SYSDBA','H_DAVE'); HUGE表与普通表一样,可以进行增、删、改操作。但是HUGE表的删除与更新操作的效率会比较低,因此在HUGE表中不宜做频繁的删除及更新操作。 SQL> create huge table h_ustc storage(on htbs) as select * from test where 1=2; 操作已执行 已用时间: 60.265(毫秒). 执行号:2708. SQL> insert into h_ustc select * from test; 影响行数 159936 已用时间: 00:00:01.615. 执行号:2709. SQL> delete from h_ustc; 影响行数 159936 已用时间: 7.429(毫秒). 执行号:2710. SQL> commit; 操作已执行 已用时间: 1.137(毫秒). 执行号:2711. SQL> select count(*) from h_ustc; 行号 COUNT(*) ---------- -------------------- 1 0 已用时间: 0.917(毫秒). 执行号:2712. SQL> insert into h_ustc select * from h_ustc; 影响行数 639744 已用时间: 00:00:08.633. 执行号:2722. SQL> insert into t_ustc select * from t_ustc; 影响行数 639744 已用时间: 00:00:07.726. 执行号:2729. 可以看出在插入数据的时候 HUGE表的速度略慢,普通表的略快。随着数据量的增多应该会更明显 SQL> delete from t_ustc; 影响行数 1279488 已用时间: 00:00:03.426. 执行号:2730. SQL> delete from h_ustc; 影响行数 1279488 已用时间: 39.075(毫秒). 执行号:2731. 测试删除数据,HUGE表这么快? HUGE表的存储: SQL> create huge table h_ustc storage(on htbs) as select * from test where 1=2; 操作已执行 已用时间: 23.277(毫秒). 执行号:2741 [dmdba@localhost SCH150994945]$ pwd /home/dmdba/dmdbms/DAMENG/htbs/SCH150994945 [dmdba@localhost SCH150994945]$ ls TAB2000 [dmdba@localhost SCH150994945]$ [dmdba@localhost SCH150994945]$ cd TAB2000/ [dmdba@localhost TAB2000]$ ls SQL> insert into h_ustc select * from test; 影响行数 159936 已用时间: 253.708(毫秒). 执行号:2742. [dmdba@localhost TAB2000]$ ll total 1114112 -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0000_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0001_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0002_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0003_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0004_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0005_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0006_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0007_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0008_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0009_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0010_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0011_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0012_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0013_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0014_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0015_0000000000.dta -rw-r--r-- 1 dmdba dinstall 67108864 Sep 13 09:49 COL0016_0000000000.dta SQL> desc h_ustc; 行号 NAME TYPE$ NULLABLE ---------- -------- ------------ -------- 1 NAME VARCHAR(128) N 2 ID INTEGER N 3 SCHID INTEGER N 4 TYPE$ VARCHAR(10) N 5 SUBTYPE$ VARCHAR(10) Y 6 PID INTEGER Y 7 VERSION INTEGER N 8 CRTDATE DATETIME(6) Y 9 INFO1 INTEGER Y 10 INFO2 INTEGER Y 11 INFO3 BIGINT Y 行号 NAME TYPE$ NULLABLE ---------- ----- --------------- -------- 12 INFO4 BIGINT Y 13 INFO5 VARBINARY(128) Y 14 INFO6 VARBINARY(2048) Y 15 INFO7 BIGINT Y 16 INFO8 VARBINARY(1024) Y 17 VALID CHAR(1) Y 17 rows got 这里我们可以总结其实底层就是为每一列建立了一个文件。 删除一个文件试试: [dmdba@localhost TAB1957]$ rm -rf COL0005_0000000000.dta 已用时间: 2.369(毫秒). 执行号:2746. SQL> insert into h_ustc select * from test; 影响行数 159936 已用时间: 231.124(毫秒). 执行号:2747. SQL> commit; 尽然可以插入! 重启数据库查看,这时就查不到了,报HUGE数据表文件丢失。应该是文件句柄前面还在导致。 (截图不好上传) 我们strings 看一下: strings COL0016_0000000000.dta YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYNNNN 可以在数据库里查看这一列内容,完全匹配。 社区地址:https://eco.dameng.com |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 9:48:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |