asp:button不要页面刷新_来道硬菜~有数的缓存与刷新

天冷了,今天有数君给大家来道硬菜——缓存与刷新。为了便于大家理解,有数君将本期内容整理成了一问一答(串串)的形式。

缓存在计算机系统中有非常重要的地位,其主要作用是提高响应速度、减少磁盘访问等,本文主要讨论在网易有数中的缓存系统。一句话概括缓存系统在有数中的地位的话:如果有数是烤羊肉串,那么缓存系统就是那一撮孜然。

94b4637557534122c1c13ac4bce7201f.png

↓以下内容来源于有数用户群的日常交流沉淀↓

Q 1.为什么打开报告时,图表经常需要加载一段时间才能显示?A

当用户使用到的数据量非常庞大时,系统对数据库查询或读写操作往往需要一段时间才能完成,此时页面便会显示正在加载中。为了解决这个问题,提高响应效率,当用户访问某份报告时,有数会将每张图表对应SQL语句的查询结果缓存在有数,再次访问时,会直接访问缓存数据,以减少访问图表所需的时间,极大提高图表的显示速度。

Q 2.我访问报告时,什么情况下访问缓存?A

用户在访问报告时,系统会自动判断该报告中各图表是否存在缓存,若存在,则会读取缓存数据,若不存在则访问数据库进行取数,并生成对应缓存。而当用户点击图表或报告的刷新按钮时,不管缓存是否存在,系统都会重新访问数据库以获得最新数据并生成对应缓存。

53a3bc4aad498bc2208a144916c389cb.png

Q 3.我该如何设置缓存有效期?A

有数支持用户对数据模型和数据连接进行“缓存有效期”设置。“缓存有效期”是时间窗口的概念,根据频率将时间划分成不同的时间窗口,在当前时间窗口内的缓存都有效。例如,若首次访问时间为“08时36分”,缓存有效期设置为“3小时”,则缓存的数据会在下一个三小时整数倍时间点失效,即“09时00分”失效。9点以后再访问报告时,缓存已经失效,会重新访问数据库获取最新的数据并进行缓存。若用户所连接的MySQL数据库在每日的凌晨6点更新数据,可以将该数据连接的“缓存有效期”设置为“1天”,“缓存失效点”设置为“06时00分”,这样既能提高访问性能,同时又要保证数据的时效性。

8355724e41f0445e061bacb6f1721682.png

Q 4.我的数据每天早上8点更新,我想在9点看报告时能直接读取最新的缓存数据,我要怎么操作?A

用户可以对报告或图表设置刷新计划,系统会根据用户的设置,在指定的时间点自动访问数据库获取最新数据并生成对应缓存。

bf01bb3665d400c285a5c0f023ccc9fb.png

Q 5.我可以刷新模型或是连接吗?A

用户可以对数据连接或数据模型添加刷新计划,相当于对使用到该连接(或模型)的所有报告添加了刷新计划,使用到该连接(或模型)的所有报告将按照刷新计划刷新报告图表的数据。但有数君建议,尽量不要对连接设置刷新计划,因为有数的刷新都是针对图表粒度的刷新,如果对连接设置刷新计划,就会对该连接下所有报告的图表进行刷新,而一般情况下,一个数据连接底下会有众多报告,实际情况中也不需要对全部报告在同一时间进行刷新。

同时,用户也可以直接在模型或连接的编辑页面点击刷新按钮,模型的刷新按钮意味着将模型的元信息修改同步至所有相关报告(元信息的修改包含:1.数据库中增加/删除了字段;2.数据库中字段的名称、类型、备注发生了修改。)同时,会刷新该模型对应报告的数据,也就是会将当前模型对应的报告缓存丢弃。另外,也会对将“查看宽表”的缓存丢弃,用户进行查看时会重新从数据库中获取数据;连接的刷新会触发使用该连接的图表的缓存失效,等到用户再次访问连接下的任何报告时,系统会自动获取最新数据并生成对应缓存。

a79f17f165e31a0728eb4e9be816723a.png

Q 6.如果我不设置缓存失效期或刷新计划,那缓存会失效吗?A

保存在有数后台的缓存并不是永久有效的。一般而言,有数平台默认对缓存的保存期为5天,即5天以后该缓存会自动失效,当用户再次访问报告时,系统会自动访问数据库以获取最新数据,并生成对应的最新缓存。

当数据发生变化时,缓存就会自动失效。实际应用场景中,当报告中含有筛选器或参数配置项时,有数会自动对筛选器的默认值进行缓存(若用户未设置默认值,则对整个图表进行缓存),用户首次选中筛选器的某选项时,有数会生成对应的缓存,当用户再次选中时,则会直接读取缓存(相当于对每种选项配置都会保存一份缓存),例如,报告中用到动态时间筛选器控件时,若用户设置了自动显示前一日的数据,则数据会实现每日更新,对应缓存也会自动失效并生成最新缓存。

Q 7.不管是立即推送还是定时推送,我收到邮件都会比设定时间晚10分钟?A

在推送报告截图时,为了保证能够迅速截图,需要对图表进行10分钟时间的预加载,在这一过程中,系统会获取数据并将数据缓存下来,若用户设置推送的是缓存数据,则有数会判断当前数据缓存是否有效,若缓存已失效,则有数会自动访问数据库以获得最新缓存;若用户设置推送的是实时数据,则不管当前缓存是否有效,有数都会自动访问数据库以获取最新数据并生成对应缓存。10分钟以后开始截图,此时截图访问的是前面已经缓存下来的数据,并将结果推送给指定用户。若用户选择的是推送数据表格,则不会对图表进行预加载,用户会在设定时间收到推送。

c5c1e8461f9f1272e0b38d6cc87841da.png

Q8.我的数据产出时间不能保证是每天固定的,能不能实现数据更新时自动刷新相关图表?A

有数现在提供了“依赖刷新”的功能,用户可以调用 API 接口或利用数仓的数据订阅来推送数据产出信息,在相关表数据更新时自动执行刷新任务,这张表相关联的图表就会实现自动缓存,极大提高了缓存数据的实时性和有效性。

df2faaab27fda901df79b5cc82cc3341.png


好啦,本期关于缓存的内容就聊到这里了,如果您对有数有任何问题或建议,欢迎留言。点击

d2ae0df5da717d586a1cb0fabaa01e30.gif

数据填报 | 让你的数据收集&填写不再繁琐

玩转自助取数 | @业务人员,取数的“神助攻”来咯!

指标异动分析,助力“数据人”快速探查双十一数据

3a611678841e52871d4c0d35d6cf26bb.gif分享,点赞,在看,安排一下?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值