freyja 将引入另外一项功能大幅提高服务器性能
附件已经更新了最新的src,test项目和lib 还是一样前面有提供下载。 group 功能和批量save。 update之类的再补上。
group相当于一个索引。一个表只能有一个group 设为group的字段必须是唯一的。
例如 以User为核心,与User一对多的表都把uid 设置为group: @Group(isGroup=true)
这样能大幅减少维护缓存的开销。
-------------------
freyja 将引入另外一项能大幅提高服务器性能功能,与group不同。group相当于针对freyja的一种处理。
下面这个功能大家一定都在想办法提升性能的时候想到过,在此freyja可以通过配置再不用改动服务器逻辑的情况下实现:
就叫:Delay 。 @Delay注解
被annotation注解的字段在update的时候将不会保存到数据库(什么都不做),然后在缓存过期的时候才会update一次,另外提供一个方法主动update,这样在一些地方可以从数据库中读取正确值。
问题1:哪些字段不能够被标记为Delay。
答: 出现在查询条件中的字段不能被Delay。freyja的缓存目前只覆盖到了单表查询,联表查询是没有使用缓存的。所以年表查询的结果是从数据库中取得,而单表查询全部取自于缓存。上面说的提供主动update就是为了在有些情况下主动同步一次数据以达到数据一致。查询条件关系则查询结果,而查询结果取自于数据库。
问题2:断电了怎么办?
答: 一切随缘吧。
*******
在一般的游戏项目中,经常可以看见人们把一些东西存进内存中然后过一段时间同步到数据库。freyja就是这么做的,只不过更加的简单。只需要指定哪些字段不需要即时同步的。
当然,在你设置Delay之前,你要好好的看看你的系统里面到底哪些地方用到了这个字段。
Delay带来了哪些提升?这些字段每update一次,他的作用就提高1点。注意:单表查询!
突然感觉到,自己的游戏项目中没有多少地方用到联表查询。难怪我会认为开发freyja很有必要性
上一篇: erlang的设计思想能不能移植到ruby里面来?
下一篇: 翁凯JAVA学习笔记