1

GoogleAppEngineアプリでクエリのパフォーマンスが低下しています。これが私がしていることです:

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

653行をロードするのに5〜9秒は正常ですか?これは開発Webサーバー上にありましたが、実サーバー上でははるかに優れていますか?memcacheについて知っていて、すでに使用していますが、キャッシュにデータを入力する必要があるときに、どうすれば処理を高速化できますか?

4

1 に答える 1

2

ライブサーバーでのパフォーマンスを示すものとして開発サーバーを使用しないでください。フラット ファイルまたは sqlite3 データベースのいずれかを使用して BigTable インフラストラクチャをエミュレートするため、パフォーマンスはかなり低下します。これを適切にテストする唯一の方法は、AppEngine 自体で行うことです。

祖先クエリは可能な限り効率的であるため、本番環境で試しても問題はないはずです。

于 2012-12-07T11:08:15.420 に答える