Kyligence Enterprise 查询缓存配置

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,倚天版 1GB 1个月
简介: 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 是否开启查询缓存,当该参数开启,下述参数才生效。 true false

查询被缓存的条件

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

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

Ehcache 缓存配置

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

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

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

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

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

已知限制

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

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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4天前
|
存储 缓存 关系型数据库
查询缓存效果
【8月更文挑战第14天】
14 2
|
5天前
|
缓存 NoSQL Ubuntu
如何在 Ubuntu 14.04 上配置 Redis 缓存以加速 WordPress
如何在 Ubuntu 14.04 上配置 Redis 缓存以加速 WordPress
10 0
|
6天前
|
缓存 数据库 SQL
查询缓存 面试准备
【8月更文挑战第13天】
13 0
|
2月前
|
缓存 Java 数据库
springboot数据库及缓存常用依赖及配置
springboot数据库及缓存常用依赖及配置
61 9
|
29天前
|
监控 算法 Java
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之配置Sentinel的流量控制规则问题如何解决
|
2月前
|
存储 缓存 NoSQL
SpringBoot配置第三方专业缓存框架j2cache
SpringBoot配置第三方专业缓存框架j2cache
45 5
|
2月前
|
缓存 监控 NoSQL
SpringBoot配置第三方专业缓存技术jetcache方法缓存方案
SpringBoot配置第三方专业缓存技术jetcache方法缓存方案
158 1
|
1月前
|
缓存
如何彻底卸载VSCode及其原来的插件配置缓存
如何彻底卸载VSCode及其原来的插件配置缓存
162 0
|
1月前
|
缓存 JavaScript
vue 页面缓存 keep-alive(含配置清除页面缓存 exclude,局部缓存,动态缓存,路由控制缓存 $route.meta.keepAlive)
vue 页面缓存 keep-alive(含配置清除页面缓存 exclude,局部缓存,动态缓存,路由控制缓存 $route.meta.keepAlive)
24 0
|
2月前
|
缓存 NoSQL Java
Redis系列学习文章分享---第四篇(Redis快速入门之Java客户端--商户查询缓存+更新+双写一致+穿透+雪崩+击穿+工具封装)
Redis系列学习文章分享---第四篇(Redis快速入门之Java客户端--商户查询缓存+更新+双写一致+穿透+雪崩+击穿+工具封装)
40 0