课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着大数据技术的不断发展,越来越多的企业都开始通过数据分析来搭建自己的大数据平台和数据仓库,下面我们就通过案例分析来了解一下关于数据仓库的性能优化常见方法。
优化1:AsyncIO,有一些实时计算引擎,维表关联是采用同步访问的方式,即来一条数据,去数据库查询一次,等待返回后输出关联结果。这种方式,可以发现网络等待时间极大地阻碍了吞吐和延迟。而Blink采用了异步访问的模式,可以并发地处理多个请求和回复,从而连续地请求之间不需要阻塞等待,吞吐量大大提升。
优化2:缓存,维表关联涉及到大量的维表查询请求,其中可能存在大量相同Key的重复请求。BlinkSQL模式提供了缓存的机制,并提供LRU和ALLCache两种缓存方案。
用户可以通过配置Cache=‘LRU’参数,开启LRU缓存优化。开启后,Blink会为每个JoinTable节点创建一个LRU本地缓存。当每个查询进来的时候,先去缓存中查询,如果存在则直接关联输出,减少了一次IO请求。如果不存在,再发起数据库查询请求,请求返回的结果会先存入缓存中以备下次查询。
如果维表数据不大,用户可以通过配置Cache=‘ALL’参数,对维表进行全量缓存。这样,所有对该维表的查询操作,都会直接走本地缓存模式,几乎没有IO,关联的性能非常好。
优化3:缓存无效Key,如果维表很大,无法采用ALLCache的方案,而在使用LRU缓存时,会存在不少维表中不存在的Key。由于命中不了缓存,导致缓存的收益较低,仍然会有大量请求发送到数据库,并且LRU模式下缓存里的key不会永久保留,可以通过调整参数,设置保留时间。
优化4:DistributeBy提高缓存命中率,默认情况下,维表关联的节点与上游节点之间是Chain在一起,不经过网络。这在缓存大小有限、Key总量大、热点不明显的情况下,缓存的收益可能较低。这种情况下可以将上游节点与维表关联节点的数据传输改成按Key分区。这样通常可以缩小单个节点的Key个数,提高缓存的命中率。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!