开发工具 如何优化含有实效性数据的表的查询速度?

veetase · 2015年08月12日 · 最后由 pathbox 回复于 2015年11月01日 · 1958 次阅读

如微博的热门微博,附近的微博,这些数据都是很具有实效性的。对于那些一周甚至更久之前的微博是不会出现在附近的微博里的,那么问题来了,这些旧的类似于过期的微博如何处理,随着数据的增加,表的体积会慢慢变大,会极大的影响查询速度,如何做到既能保存用户的发微博记录(在个人页或者查看其它用户发帖记录时用到)又可以维持微博表的性能?

实时数据放在内存数据库里面,设定合理过期策略。

使用 redis 存这种非关系型的数据。使用页面缓存显示这些记录。

#1 楼 @kgen 感谢回答。我说的只是有实效性,并不是很严格。比如上面说的附近的微博,可能是一周,也可能是两周才过期,所以内存占用可能会很大,而且在查看用户个人资料时还可以查到以往任何时候的微博。最主要是如果主机重启,那么内存数据库中的数据就会清空,并不太适合这类场景。目前打算用后台任务去定时清理那张表,把过期数据转移到另一张表,一张只用来做附近查询新鲜信息,一张相当于是发帖记录。但是总感觉这种做法相当土逼,因为两张表长的一模一样,在与其它表的 relation 也要写两遍,不知道有没有更优雅的实现方法。

#2 楼 @liwei78 是关系型的数据啊。而且是需要持久化的。用户页面应显示该用户以往任何时候的发帖记录。

mysql 等很多数据库里面的 partition 可以用啊,我们原来做游戏搞 event 的时候,有些 event 关联的表都是通过 partition 来处理的。

#5 楼 @jackxu 正是我需要的,多谢多谢。

redis 也可以持久化

veetase 关闭了讨论。 05月03日 16:53
需要 登录 后方可回复, 如果你还没有账号请 注册新账号