新年新学习:大数据分析查询加速技能
一,为什么需要物化视图
常用的分析查询加速手段主要包括以下几种:
image.png
- 缓存:通过将数据从慢存储介质缓存到快存储介质,例如内存中,可以在分析数据过程中获得更快的数据读取响应,从而实现加速效果。
- 并行计算和分布式计算:将计算任务分解为多个子任务并行处理,充分利用计算资源,提高分析查询的速度和效率。
- 数据分区和索引:减少查询时需要扫描和分析的数据量,从而达到加速的效果。
- 预计算:提前对数据进行计算和聚合,并将结果物化存储,以便在查询时直接使用计算好的结果来进行加速。物化视图是预计算的一种重要实现方式。
二,什么是物化视图
物化视图是预先计算出常用耗时或复杂查询的结果集,使得在查询时能够快速访问和使用这些预先计算的结果。如下图左表是一张商品订单信息表,包含简单的商品售卖信息。传统方式下,每次需要计算每个商品的总销售额时,都要从左边原始数据表中读取数据并进行计算,这既耗时又消耗系统资源。通过物化视图,我们可以事先对数据进行预计算,并将计算结果存储为右侧的结果表。下一次查询时,只需直接从右表物化视图中读取数据,无需再进行复杂的计算操作,节省了大量时间和资源开销,大幅提升查询的效率和响应速度。
image.png
然而在实际场景中,随着时间的增长,数据量也会持续增加。不同时间查询商品总销售额时,结果也会相应地发生变化,存储下来的物化数据也需要随着时间的推移进行更新。从时间序列数据中进行全量数据更新十分耗时,且物化结果会随着新数据的产生而失效。但时间序列数据通常具有Append-only特性,即已经存在的数据几乎不会发生变化。在物化数据和计算过程中,可以重复使用历史的物化计算结果,当新数据到来时,只需对原有的物化预计算数据进行增量更新。
实时物化视图就是一种适用于时间序列数据的预计算加速过程,其核心思想是将历史物化数据与计算结果保留下来,并在新数据到来时进行增量更新。在高效地管理和维护物化操作的同时,减少计算的开销。
image.png
在时间序列上实现实时物化视图的关键点主要有三个:
存储:在实时物化视图中,需要定义好物化表的结构,将物化数据存储下来。存储可以采用适当的存储介质和数据结构,以满足查询性能和存储需求。通过合理的存储设计,加上合适的索引压缩方式,可以确保物化数据的高效访问和使用。
更新:实时物化视图需要进行定期更新或事件驱动的增量更新。定期更新意味着根据一定的时间间隔,例如每小时、每天或每周对物化数据进行更新。事件驱动更新则是根据数据的变化事件触发更新操作。通过定期更新或事件驱动更新,可以保持物化数据与原始数据的一致性,并确保查询结果的准确性。
预计算:在实时物化视图中,预计算是一个重要环节,需要提供增量更新下的预计算方式。
image.png
网友评论