1
love 2015-04-21 08:18:40 +08:00
我刚用来开发一个应用,坑还没碰到, 不过rethinkdb的这个特点和别的db不同,就是没有智能优化器,不指定索引的时候绝对不会用索引。
也就是说它的眼花缭乱的filter功能全都不能用索引,只有get / get_all / between / order_by 能用索引。 issue里开发人员说这是个feature,我也喜欢这个这样,因为程序里哪些查询是高效的哪些会有性能问题一目了然了,不象mysql总是在线上跑才发现要加索引。 所以呢有一个操作会比较反直觉,就如果有组合索引 A+B+C时,需要A=? and B=? 并按C排序时需要用between接order_by并指定同一索引才能完全利用这个组合索引(issue里有说明,文档里好象没有)。 |
2
jimwoo 2015-04-21 10:18:52 +08:00
@Livid 能求个方案吗?我们是做APP的社区的,现在日活差不多300W我们现在系统架构是 Java (逻辑层) + redis(临时读写) + mysql,现在性能出现了瓶颈刷新有时候要5,6秒才能获取新的数据?我想问下有什么好的技术方案吗?
|
4
Cadina 2015-05-03 02:24:54 +08:00
使用 lambda 做过滤之类的操作时,lambda 是对 table / sequence / array 内每个元素执行一次的,如果你在 lambda 函数中包含了子查询,很可能会有性能问题。
关于这个问题的一个 proposal: https://github.com/rethinkdb/rethinkdb/issues/3318 |