目前的freyja在维护缓存的时候是将表分为多个字段,每个字段负责维护与字段有关的缓存。

当字段update的时候去检测是否需要缓存失效。
经过我对这些数据的分析,引入分组概念能加快维护缓存的效率。

例如,大部分数据都是围绕用户产生的,User、Hero、Building 他们都是一对多关系,在这些表当中,大部分查询都是限于当前用户的数据查询。那么按userId分组将大大的减少检索的内容,从而提高维护缓存的效率。

当然其他的表也可以根据自己的情况分组/不分组。

另外也许还会采用single注解减少update操作,被single注解的表明当前字段不会出现在联表查询范围内。那么这个字段的update操作就不需要序列化到数据库,在系统关闭/缓存过期的时候update一次就足够了

[Freyja] [SQL] update t_hero set STATUS = ?,holdNumber = ? where ID = ? [args] 1 100 6769

[Freyja]

14:14:26,718 - 扫描cache: SELECT * FROM t_hero AS h WHERE h.user_id = ? AND STATUS >= 0#@7272

14:14:26,718 - 扫描cache: SELECT * FROM t_hero WHERE user_id = ? AND CITY_ID = 0 AND STATUS IN (0, 1)#@7273

14:14:26,718 - 移除 cache:from Hero where userId = ? and cityId = 0 and status in (0,1)#null#null#0#@7273

14:14:26,718 - 移除 cache:SELECT * FROM t_hero WHERE user_id = ? AND CITY_ID = 0 AND STATUS IN (0, 1)#@7273

14:14:26,718 - 扫描cache: SELECT * FROM t_hero WHERE user_id = ? AND CITY_ID = 0 AND STATUS IN (0, 1)#@7272

14:14:26,718 - 扫描cache: SELECT * FROM t_hero AS t WHERE t.user_id = 7273 AND STATUS >= 0#

14:14:26,718 - 移除 cache:select t.id as id,t.name as name,t.level as level,t.legendFlag as legendFlag,t.status as status,t.cityId as cityId,t.holdNumber as holdNumber,t.battleAtTime as battleAtTime from Hero t where t.userId = 7273 and status >=0#null#null#1#

14:14:26,718 - 扫描cache: SELECT * FROM t_hero AS t WHERE t.user_id = 7272 AND STATUS >= 0#

14:14:26,718 - 扫描cache: SELECT * FROM t_hero AS h WHERE h.user_id = ? AND STATUS >= 0#@7273

14:14:26,718 - 移除 cache:select  h.id as id,h.name as name,h.status as status from Hero h where h.userId = ? and status >= 0#null#null#1#@7273

14:14:26,718 - 扫描cache: SELECT * FROM t_hero WHERE user_id = ? AND CITY_ID = 0 AND STATUS IN (0, 1)#@7272

14:14:26,718 - 扫描cache: SELECT * FROM t_hero AS h WHERE h.user_id = ? AND STATUS >= 0#@7272

14:14:26,718 - 扫描cache: SELECT * FROM t_hero WHERE user_id = ? AND CITY_ID = 0 AND STATUS IN (0, 1)#@7272

14:14:26,718 - 扫描cache: SELECT * FROM t_hero AS t WHERE t.user_id = 7273 AND STATUS >= 0#

14:14:26,718 - 移除 cache:select t.id as id,t.name as name,t.level as level,t.legendFlag as legendFlag,t.status as status,t.cityId as cityId,t.holdNumber as holdNumber,t.battleAtTime as battleAtTime from Hero t where t.userId = 7273 and status >=0#null#null#1#

14:14:26,718 - 扫描cache: SELECT * FROM t_hero AS t WHERE t.user_id = 7272 AND STATUS >= 0#

14:14:26,718 - 扫描cache: SELECT * FROM t_hero AS h WHERE h.user_id = ? AND STATUS >= 0#@7273

14:14:26,718 - 移除 cache:select  h.id as id,h.name as name,h.status as status from Hero h where h.userId = ? and status >= 0#null#null#1#@7273

一个用户的hero更新,按照现在的需要扫描所有用户的hero,通过分组可以将扫描内容减少到之前的 1/n n为用户数。

7272 和7273 为2个用户的ID

freyja 将引入“分组”概念进一步提高维护缓存时的效率相关推荐

  1. oracle数据分布不均,oracle性能优化操作七:索引提高数据分布不均匀时查询效率...

    索引的选择性低,但数据的分布差异很大时,仍然可以利用索引提高效率. A.数据分布不均匀的特殊情况下,选择性不高的索引也要创建. 表ServiceInfo中数据量很大,假设有一百万行,其中有一个字段Di ...

  2. python基础语法及知识总结-Python 学习完基础语法知识后,如何进一步提高?

    ---4.30更新---感谢大家支持,点赞都破两千了.给大家整理出来新的资料,需要的小伙伴来自取: Python练手项目视频如下: Python自学基础知识如下: 以下为原文内容: Python 学习 ...

  3. 如何快速提高个人的计算机水平,如何进一步提高计算机水平

    文章 如何进一步提高计算机水平 周老师: 您好!我是一名中学信息技术教师,我现在想进一步提高自己计算机专业方面的知识和能力,不知如何去做?我不是计算机专业毕业的,从事信息技术课程教学已两年,我对简单的 ...

  4. DL之NN:NN算法(本地数据集50000张训练集图片)进阶优化之三种参数改进,进一步提高手写数字图片识别的准确率

    DL之NN:NN算法(本地数据集50000张训练集图片)进阶优化之三种参数改进,进一步提高手写数字图片识别的准确率 导读 上一篇文章,比较了三种算法实现对手写数字识别,其中,SVM和神经网络算法表现非 ...

  5. 目前约五分之一日常关护是在医院外进行,未来三年这一比例将进一步提高

    上海2021年11月9日 /美通社/ -- 第一财经和飞利浦借助"第四届中国国际进口博览会"平台联合发布了<2021年未来健康指数白皮书>(以下简称"白皮书& ...

  6. 集合(一)集合的引入及其概念、List、ArrayList、LinkedList

    一.集合的引入及其概念 1.集合是用来解决数组相关缺点诞生的 数组固定长度,无法扩容 数组不是一个类没有方法,程序员只能自己写增删查改的方法 2.集合是什么? 集合只能存放对象 集合是可变长度的,不限 ...

  7. 如何在PHP方面进一步提高

    最近在思考,自己如何在PHP方面进一步提高. 书已经看了不少了,而且书上讲的内容大多停留在语言层面,讲来讲去大多都是相似的内容,提高有限. 自己现在基础已经还可以了,现在在新浪实习,工作内容感觉比较简 ...

  8. 烫金机要进一步提高和改善机器性能

    烫金机是一种印刷装饰工艺,随着烫印及包装行业的发展,烫印工艺的需求越来越大,烫金机是快速准确制作出烫印效果的机械,在现今的包装行业中有着非常广泛的应用.目前,国外先进的烫金机价格正进一步向智能化.多功 ...

  9. mysql删除分表键_一文看懂 MySQL 分区和分表,提高表增删改查效率

    原标题:一文看懂 MySQL 分区和分表,提高表增删改查效率 作者:冯帅,精通Oracle. MySQL. 擅长异构数据库数据同步及迁移.数据库的设计和调优,对高可用方案有深入研究. MySQL分区和 ...

  10. 刘知远团队提出:如何通过扩大高质量指导性对话数据集,来提高模型的性能和效率...

    深度学习自然语言处理 原创 作者 | 刘嘉玲 随着开源语言大模型(LLM)的百花齐放,模型的性能和效率关乎到产品的成本和服务体验的均衡.那么,有没有办法让语言大模型变得更高效.更优秀呢? 为了进一步提 ...

最新文章

  1. base64开源库介绍及使用
  2. python3.6爬虫环境安装要多少内存_Python3爬虫环境配置——解析库安装(附tesserocr安装方法)...
  3. [改善Java代码]线程优先级只使用三个等级
  4. 也做SQL查询:班级总成绩 前三名,总成绩有相等的情况
  5. kubernetes的安装
  6. STM32寄存器与输入捕获
  7. python绘制直角坐标系_小白学 Python 数据分析(16):Matplotlib(一)坐标系
  8. 【51nod】1239 欧拉函数之和 杜教筛
  9. 怎样添加、移除、移动、复制、创建和查找节点?
  10. 使用JUnit和Repeat注​​释编写有效的负载测试
  11. 如何识别一个人是web前端程序员
  12. [HDU 3555] Bomb
  13. 又一个国家5G基站被焚烧,这次理由是5G影响人类健康?
  14. java RMI 笔记
  15. tomcat配置报错解决方法 The jre_home environment variable is not defined correctly
  16. Hibernate - Query简易
  17. ifconfig 没有IP地址显示
  18. 数据资产管理及数据管控体系建设思路
  19. 图论的应用 计算机,图论的应用计算机技术与科学毕业论文.doc
  20. virt与virsh常用命令

热门文章

  1. 企业支付宝账号注册认证流程
  2. ts无损剪辑合并_视频剪切合并器下载-视频剪切合并器 v13.4免费版
  3. 整车CAN网络拓扑图
  4. html5 放风筝,北京最全的放风筝5大最佳地点,地广人稀,不用花钱
  5. SIMPLE ONLINE AND REALTIME TRACKING
  6. python读取tif图片报错
  7. 关于VBV-------Video Buffering Verifier
  8. h264参数动态调整
  9. ARMv8-A编程指导之Caches(1)
  10. AcGiGeometry::text 自画实体输出文字实例