查看原文
其他

Db2 BLU 仅仅是 “列表” 那么简单吗?

atpeace331 twt企业IT社区 2024-02-18

什么是 BLU ?

大家肯定说:不就是“列表”吗?没啥新奇的?

其实,我一开始和大家一样,不就是像 Greenplum 的“列组织表”吗?

但是,经过最近的学习认识,不得不羞愧自己的肤浅。

BLU 是一系列加速复杂查询、OLAP类型负载的技术,其中包括:

  • 列组织表(Column-organized tables) - 表数据使用列组织方式存储在数据页面上,对列数据进行向量处理。

  • 可执行压缩(Actionable Compression) - 列存储使用高效的压缩算法,自动进行深度压缩。某些压缩算法甚至可以不需要解压缩而实现对数据的直接操作,节省了解压缩的开销,从而降低了对 CPU 的消耗。

  • 数据忽略(Data Skipping) - “数据忽略”就是自动检测并跳过大量不符合查询条件的数据,挑出重要的小数据,将大数据变成“中数据”甚至“小数据”,减少工作负载,BLU 可以快速缩小数据分析范围。

  • 核心并行处理(Core Friendly Parallelism) - 列组织表上的访问计划将同时利用主机的所有cpu核心并行处理,来提高分析查询性能。

  • SIMD 矢量处理(SIMD or Vector Processing) - SIMD,单指令同时并行处理多个数据元素,来增加处理器的性能(相同的指令在多个cpu核心上同时并行处理一组数据)。

  • 优化缓存算法(Optimal Memory Caching) - Bufferpool 概率缓存算法取代传统 LRU(Least Recently Used)算法,经常被引用的数据块出现在内存当中的几率就越大。这一功能的背后还有更复杂的随机算法支持。

下面是 IBM 官方利用上面几种 BLU技术演示海量数据 OLAP查询的强大处理能力:

– 系统配置:32 cores, 1TB memory, 10TB table with 100 columns and 10 years of data

– 查询:2010年公司的产品销售量多少?销售表是一张保存10年数据、100个列的10TB的表。

– SQL语句:SELECT COUNT(*) from SALES where YEAR = ‘2010’

– 结果: 几秒或更少时间返回结果,因为通过SIMD每个CPU核心只扫描相当于8MB的数据


BLU 适合做什么?不适合做什么?

BLU Acceleration 专门应用于包含大量复杂查询的分析型工作负载。

这些复杂查询通常包括了多表连接、分组与聚合计算以及基于星型模式的表扫描。

但是,BLU不适用于 OLTP,如电子商务或机票销售系统。

单行的更新/插入/删除可能会在BLU上慢 2-3倍。查询特定范围的行(row)时,由于按照列存储数据,整合各个列数据会比普通行组织表的库消耗更多的IO,CPU资源。因为列组织表中,每一行数据会跨越多个页面存储,读取相对于行组织表要多读取很多IO。“SELECT * FROM”读取正行记录的语句在 BLU系统上会极其慢!

原题:DB2 BLU Acceleration?仅仅 “列表” 那么简单吗?

欢迎点击文末”阅读原文“,前往社区原文下交流评论


欢迎关注社区 “数据库”技术主题,将会不断更新优质资料、文章。地址:

http://www.talkwithtrend.com/Topic/597


下载 twt 社区客户端 APP

与更多同行在一起

高手随时解答你的疑难问题

轻松订阅各领域技术主题

浏览下载最新文章资料


长按识别二维码即可下载

或到应用商店搜索“twt”


长按二维码关注公众号

*本公众号所发布内容仅代表作者观点,不代表社区立场

继续滑动看下一个

Db2 BLU 仅仅是 “列表” 那么简单吗?

atpeace331 twt企业IT社区
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存