作者 GAE Datastore性能测试(1): Query的fetch()方法
Chris1919
2009-03-21 14:00
前两天往YTBlog里面加Tag Cloud之后,发现GAE一直报性能warning,怀疑是datastore造成的。加上前面做分页的时候也碰到性能相关的问题,今天就写了简单的测试程序来测一下GAE中datastore的性能,确实很简单,主要就一行代码。
TagInfo.all().filter('number >', 0).order('-number').fetch(limit, offset)
TagInfo的定义在这里。其中的filter和order并不是性能瓶颈所在,我之前已经测过。

测试结果是这样的:
limit = 30 offset = 0,耗时991ms-cpu,GAE已经开始报性能warning了。
limit = 3 offset =0,耗时148ms-cpu
limit = 3 offset = 30,耗时151ms-cpu

这个测试结果很令人ft。TagInfo这么简单的结构,fetch 30个记录就已经报性能warning了,那么GAE中岂不是每个request只能从datastore里fetch一丁点数据?总不能什么都用memcache吧...有点明白fetch()为什么最多只能返回1000条记录了。

这里TabInfo没有做Entity Group。我不清楚datastore后台的Bigtable是怎么把TabInfo中的数据分布到shard的。看来还要好好琢磨下GAE、datastore以及Bigtable的设计和实现。
Bookmark and Share