2012-12-07 32 views
1

我的Google AppEngine應用程序中的查詢性能不佳。下面是我在做什麼:使用開發服務器上的祖先從AppEngine數據存儲讀取100行時出現性能問題。

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) 

我跑在交互式控制檯這三次我的機器上,這裏是輸出:

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

5-9秒加載653行正常嗎?這是在開發Web服務器上,它會在真正的服務器上更好嗎?我知道memcache並且已經在使用它了,但是我需要填充緩存的時候如何讓事情變得更快?

回答

2

您不應該將開發服務器作爲指示活動服務器性能的任何方式。它使用平面文件或sqlite3數據庫模擬BigTable基礎架構,因此性能非常糟糕。正確測試的唯一方法就是AppEngine本身。

請注意,祖先查詢的效率與其獲得的一樣高,因此在生產中嘗試使用時應該不會有任何問題。

相關問題