Kyligence Enterprise 查询缓存配置

Kyligence Enterprise 查询缓存配置

SQL级缓存,SQL增加空白符号都会不命中。

为了提升执行相同查询的效率,Kyligence Enterprise 系统自带查询缓存并默认开启。

本文部分摘自Kyligence官方文档。

查询缓存的选型

  • Ehcache

    java内存级缓存,在Kyligence实例默认为8G JVM时, 默认的缓存大小为1G。

    增大缓存方式为先增大JVM内存,再配置增加缓存大小。

    缺点:1. 在SQL命中率并不高的场景下,过小的缓存作用不大;2. 过大的缓存可能加快GC频率,在FGC下也会导致延迟增加。

  • Redis

    缓存存储在Redis中,需要一套Redis集群。在v4.3中引入。

    增大缓存的方式为提升Redis集群的大小。

    缺点: 1. 增加运维难度;

    优点: 1. 提升SQL级缓存实用性。

缓存大小的预估方式

在kylin元数据库中根据查询历史进行SQL统计,例如统计24小时内查询延迟大于2000毫秒或扫描行数大于10000或查询扫描数据量字节数大于1048676,且查询结果集小于10000单元格的SQL历史,其一共需要的结果集的大小,以此来预估预存T+1日慢SQL需要的缓存大小。(kylin 查询历史的页面无法如此精细)

参数记录

$KYLIN_HOME/conf/kylin.properties

Kyligence Enterprise 自带查询缓存功能并默认开启

注意:所有下述配置需要重启后方能生效。

配置项描述默认值可选值
kylin.query.cache-enabled是否开启查询缓存,当该参数开启,下述参数才生效。truefalse

查询被缓存的条件

由于内存资源可能是有限的,Kyligence Enterprise 不会默认缓存每条查询的结果。目前产品会有选择性的对性能较慢且结果集不是特别大的查询进行缓存。一条查询是否会被缓存,由以下几个参数影响:满足序号为 1、2、3 配置项中任意一项,且同时满足序号 4 配置项时,查询会被缓存。

序号配置项描述默认值默认值单位
1kylin.query.cache-threshold-duration查询延迟大于该值2000毫秒
2kylin.query.cache-threshold-scan-count查询扫描的行数大于该值10240
3kylin.query.cache-threshold-scan-bytes查询扫描的数据量大于该值1048576字节
4kylin.query.large-query-threshold查询结果集小于该值1000000单元格

Ehcache 缓存配置

Kyligence Enterprise 默认使用 Ehcache 作为查询缓存,您可以通过配置 Ehcache 来控制查询缓存的大小和策略。您可以通过修改以下配置项来替换默认的查询缓存配置文件,更多的 Ehcache 配置项请参考官网 ehcache文档

配置项描述默认值
kylin.cache.configehcache.xml 文件的路径。您可以在 ${KYLIN_HOME}/conf/ 下新建格式为 xml 的文件来替换默认的查询缓存配置文件,如 ehcache2.xml,并且修改配置项的值为: file://${KYLIN_HOME}/conf/ehcache2.xmlclasspath:ehcache.xml

Redis 缓存配置 (v4.2不支持,v4.3引入)

由于 Ehcache 查询缓存是进程级的,在不同进程或不同节点之间并不共享,因此在集群部署模式下,当后续相同查询路由至不同 Kyligence Enterprise 节点时,一个进程查询执行结果的缓存无法被另一个进程使用。因此,我们支持使用 Redis 集群作为分布式查询缓存,在所有 Kyligence Enterprise 节点间共享。具体的参数和配置方法如下:

配置项描述默认值可选值
kylin.cache.redis.enabled是否开启 Redis 集群用于查询缓存falsetrue
kylin.cache.redis.cluster-enabled是否开启 Redis 集群模式falsetrue
kylin.cache.redis.hostsRedis 主机地址,当您需要连接 Redis 集群时,请使用逗号进行分割。如 kylin.cache.redis.hosts=localhost:6379,localhost:6380localhost:6379
kylin.cache.redis.expire-time-unitRedis 缓存保留单位,EX为秒,PX为毫秒EXPX
kylin.cache.redis.expire-timeRedis 缓存保留时间86400
kylin.cache.redis.passwordRedis密码
已知限制

由于当前 Query 节点与 All/Job 节点存在元数据存在同步差异,redis 缓存开关 kylin.cache.redis.enabled=true 需要和 kylin.server.store-type=jdbc 一起配置。

注意:Redis密码可以明文配置,也可以加密。加密方法请参考: 使用 MySQL 作为元数据存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值