列存储表
列存储表的基本概念
数据库列存储表(Column-Based Table)是一种特殊的数据存储方式,它不同于传统的行存储表(Row-Based Table),后者以行为单位存储数据,而列存储表则以列为单位进行数据的存储。列存储表将数据按列组织,每一列的数据在存储介质中以连续存储形式存在。这种存储方式使得相同类型的数据聚集在一起,便于进行特定的数据处理和分析操作。
列存储表的优势
- 查询性能提升:由于数据按列存储,查询时只需访问涉及到的列,大幅减少了磁盘I/O操作,提高了查询速度。尤其适用于需要频繁进行聚合统计、过滤等操作的场景。
- 数据压缩效率高:同一列中的数据类型相同,数据重复率高,因此数据压缩算法能够更有效地工作,减少存储空间的需求。
- 处理大数据集能力强:在处理大规模数据集时,列存储表能够显著提高数据加载、查询和分析的效率,适用于数据仓库、商业智能等场景。
列存储表的缺点
- 写入操作低效:插入新行成本高,由于列存储将相同列的值存储在一起,插入新行需要将该行的所有列插入到对应的列族中。这不仅需要为每个新行分配一个新的行标识符,还需要处理完整的列集,从而增加了插入操作的开销。
- 更新操作复杂:更新列存储表中的数据同样低效,尤其是当需要更新整列数据时。因为每次更改都需要在对应的列族中逐一重组数据,这可能涉及大量的数据移动和重组操作,从而影响性能。
- 更新成本高且空间回收复杂:在列存储表中更新或删除数据后,磁盘空间不会自动释放。为了回收空间,通常需要重建列存储索引,这是一个IO密集型的操作,可能进一步影响数据库性能。
- 索引和查询限制:列存储表通常限制了表上可以创建的索引类型。对于需要多索引支持的复杂查询场景,列存储表可能不是最佳选择。
- 查询限制:由于列存储表的数据组织方式,它们可能不支持某些类型的查询操作,如关联查询。此外,列存储表通常不支持游标和触发器,这进一步限制了其应用场景。
- 数据类型支持有限:列存储表可能不支持某些大型数据类型,如image、text、varchar(max)、xml等。这限制了列存储表在需要存储大型文本或二进制数据场景中的应用。
- 存储开销增加:在列存储表中,每个列都有其自己的文件,且需要存储列名信息。这意味着与行存储相比,列存储可能需要更多的存储空间来存储重复的列名信息。
- 并发性能受限:由于列存储表在写入操作上的低效性,当多个用户或进程同时尝试写入数据时,可能会遇到性能瓶颈。此外,更新操作可能需要锁定整个表或列族,从而降低并发性能。
列存储表的适用场景
- 数据仓库和商业智能:需要处理大量历史数据并进行复杂分析的场景,列存储表能够显著提升查询性能和数据压缩效率。
- 实时分析和大数据处理:在实时交易处理、物联网数据分析等需要快速响应的场景中,列存储表能够提供高效的数据处理能力。
- 需要高效压缩和存储的场景:如金融、电信等行业,需要存储大量用户数据或交易记录,列存储表能够有效降低存储成本。
达梦数据库列存储表的实现机制
列存储表(HUGE表)建立在HFS(Huge File System)存储机制上,使用HTS(HUGE TABLESPACE)表空间进行存储。
为每个HUGE表配备AUX辅助表来管理数据,辅助表中包含用于数据存取和统计分析的信息。
DM列存储表(HUGE表)的创建与使用
HUGE表需要建立在混合表空间上。
创建混合表空间
查看HUGE表空间
创建HUGE表
- HUGE TABLE为创建HUGE表
- STORAGE(STAT NONE)表示该列指定的区不做统计信息
- SECTION(65526)表示表的区为65526
- FILESIZE(64)表示文件大小为64M
- WITH DEITA 表示创建事务型表,WITHOUT DEITA 创建非事务型表
- ON TS1 存储在混合表空间TS1上
- COMPRESS LEVEL 9 FOR 'QUERY HIGH' (TNAME) 指定TNAME列压缩类型为高压缩率,压缩级别为9
- 如果创建HUGE表为事务型HUGE表,存在4个辅助表,为“表名$AUX”,“表名$RAUX”,“表名$DAUX”,“表名$UAUX”
- 默认不支持非事务型HUGE表,需要修改参数HUGE_WITH_DELTA
DML操作
DML操作跟普通表一样
总结
数据库列存储表作为一种高效的数据存储方式,在查询性能、数据压缩和处理大数据集等方面具有显著优势。它适用于数据仓库、商业智能、实时分析和大数据处理等场景。然而,列存储表也存在一些局限性。因此,在实际应用中需要根据具体需求选择合适的表类型。
最后修改时间:2024-08-16 11:22:07
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




