2013-10-21 75 views
2

我正在使用GAE來運行寵物項目。Google App引擎:讀取數據的時間越來越長

我有一個大表(100K行),我正在運行索引查詢。這似乎很好。但是,遍歷結果似乎需要非線性時間。做一些分析,似乎對於第一批行(100左右)它是線性作用的,但是然後從懸崖上掉下來,並開始花費更多時間來檢索到達行。這裏是代碼示意圖:

q = Metrics.all() 
q.filter('Tag =', 'All') 
q.order('-created')  
iterator = q.run(limit = 100) 
l = [] 
for i in iterator: 
    l.append[i.created] 

任何想法可能導致這種行爲非線性?

+0

100K行並不大。它非常非常非常小。 –

+0

你還沒有說過這個測試是在生產還是在SDK中運行。如果它在SDK上運行,那麼我認爲它會表現糟糕而不像生產環境。 –

+0

絕對不要使用列表作爲標識符,並使用批量較大的遊標。 –

回答

1

很可能是因爲您沒有使用Query Cursors,請改用它們,您會看到自己的表現得到改善。

另外它看起來像你使用的是舊數據庫,考慮切換到NDB,因爲最新的實現假設是更好更快。

0

如果您知道要處理的確切數量,請考慮使用提取。運行將以較小塊(默認批量大小爲20)獲取結果,那麼會有額外的往返操作。

OOT:也許好重命名列表變量,它具有相同的名稱,蟒蛇列表功能:)