1

我的 Google AppEngine 应用中的查询性能不佳。这就是我正在做的事情:

import models
from time import time

parent = models.ParentEntity.gql("WHERE string_property = :1", "a guid").get()

start = time()

data_rows = []

children = models.ChildEntity.gql("WHERE ANCESTOR IS :1", parent.key())
for child in children.run():
    data_rows.append(child.data)

print "Loaded %s rows in: %s" % (len(data_rows), time() - start)

我在机器上的交互式控制台中运行了 3 次,输出如下:

Loaded 653 rows in: 8.18052411079
Loaded 653 rows in: 5.93607997894
Loaded 653 rows in: 9.97486710548

5-9秒加载653行正常吗?这是在开发Web服务器上,在真实服务器上会更好吗?我知道 memcache 并且已经在使用它,但是在我确实需要填充缓存的时候,我怎样才能让事情变得更快呢?

4

1 回答 1

2

您不应将开发服务器视为实时服务器性能的任何指示。它使用平面文件或 sqlite3 数据库模拟 BigTable 基础架构,因此性能非常糟糕。正确测试这一点的唯一方法是在 AppEngine 本身上。

请注意,祖先查询尽可能高效,因此当您在生产环境中尝试时应该不会有任何问题。

于 2012-12-07T11:08:15.420 回答