达梦列存储
create huge tablespace biphug path '/data/dm8/instance/DAMENG/bip01.dbf' ;
select * from SYS."V$DATAFILE"
create huge table iuap_apdoc_coredoc.productdetail_huge STORAGE(WITH DELTA) tablespace biphug as select * from iuap_apdoc_coredoc.productdetail;
drop table iuap_apdoc_coredoc.productdetail_huge;
create huge table iuap_apdoc_coredoc.productdetail_huge STORAGE(WITH DELTA) tablespace biphug COMPRESS LEVEL 1 as select * from iuap_apdoc_coredoc.productdetail;
压缩前2566M

压缩后680M

- HUGE TABLE(巨型表)
在达梦数据库中,HUGE TABLE 是一种特殊的表类型,专门为海量数据(通常指TB/PB级别)的存储和高效查询而设计。
设计目的:传统的数据库表(达梦中称为"事务表")将所有数据(包括CLOB/BLOB等大对象)存储在数据页中,虽然保证了事务的ACID特性,但在处理极大量数据时,管理和性能上会遇到瓶颈。
核心特点:
列式存储:HUGE TABLE 默认采用列式存储。这意味着数据是按列而不是按行来组织和压缩的。这对于分析型查询(OLAP)非常有利,例如SELECT SUM(sales) FROM table这类只涉及少数几个列的查询,性能极高。
分区:HUGE TABLE 自动使用分区机制来管理数据,通常需要一个分区列。
外部存储:HUGE TABLE 的数据实际上是作为文件存储在操作系统上的,数据库系统主要管理其元数据。这使得它能轻松应对超大规模数据。
类比:其概念类似于其他数据库中的列式存储表,例如:
Apache HBase
Google Bigtable
SAP HANA的列存储表
AWS Redshift
简单来说,当您的表数据量极其庞大,且主要用于复杂查询和分析(OLAP),而不是频繁的增删改(OLTP)时,就应该使用 HUGE TABLE。
- STORAGE (WITH DELTA)
这是为 HUGE TABLE 指定的一种特定存储方式。
设计目的:列式存储虽然查询快,但写入(INSERT/UPDATE/DELETE)性能较差。因为写入一行的数据需要分散到多个不同的列存储文件中。WITH DELTA 选项就是为了优化这个问题而设计的。
工作原理(读时合并):
主表(列式存储):初始加载或批量插入的数据存放在高度压缩的、 immutable(不可变的)的列存储文件中。这部分数据查询效率最高。
DELTA 附加段(行式存储):当发生单行插入、更新或删除操作时,这些新产生的、变化的数据不会被直接写回主列存储文件(那样成本太高),而是被暂时存放在一个特殊的、按行式存储的附加区域,这个区域就叫做 DELTA 表。
查询过程:当您查询一个带有 WITH DELTA 的 HUGE TABLE 时,数据库会自动从主列存储文件和行式的DELTA表中分别读取数据,然后在内存中合并,最终将完整、正确的结果返回给用户。这个过程对应用程序是透明的。
简单来说,STORAGE(WITH DELTA) 是一种“智能”的存储策略,它让HUGE表在拥有列式存储快速查询优势的同时,也获得了较好的事务处理(增删改)能力。

浙公网安备 33010602011771号