atpeace331
作者atpeace331·2019-04-29 22:28
数据库管理员·银行

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

字数 1270阅读 2042评论 2赞 2

什么是 BLU 呢?

大家肯定说:不就是“列表”吗?没啥新奇的?
其实,我一开始和大家一样,不就是像 Greenplum 的“列组织表”吗?
但是,经过最近的学习认识,不得不羞愧自己的肤浅,不得不感叹 IBM软硬技术的伟大!

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查询的强大处理能力:

utrr2bbvbcb

utrr2bbvbcb

– 系统配置: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系统上会极其慢!

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

2

添加新评论2 条评论

michael1983michael1983联盟成员技术总监某证券
2019-05-03 10:38
学习,谢谢分享
michael1983michael1983联盟成员技术总监某证券
2019-05-03 10:38
学习,谢谢分享
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广