2010-07-14 44 views

回答

2

實體類型不存在爭用 - 僅適用於實體組(具有相同父實體的實體)。既然你說你每次寫信給一個新實體,你都應該可以隨意擴展。但是,一個細節仍然存在:如果您插入的實體數量很高(每秒數百個),並且您使用的是默認的自動生成的ID,則可能會出現「熱片」,這會導致爭用。如果您期望插入率很高,您應該使用密鑰名稱,然後選擇一個不會自動生成ID的密鑰 - 示例可以是電子郵件地址或隨機生成的UUID。

+0

我會試驗關鍵的名字......現在,我會做多達450個批處理調用。 – Greg 2010-07-19 20:24:00

+0

批量放入不是問題 - 這是重要的順序ID放置操作的速率。 – 2010-07-20 07:21:44

+0

只是所以我正確理解你 - 你的意思是批處理不會受到你在回答中描述的性能問題的影響嗎?這與我迄今爲止所做的性能分析是一致的。使用隨機UUID不會改進批量投放調用。 – Greg 2010-07-20 17:39:04

2

數據存儲區每秒只能處理任何給定的實體的每秒寫入次數。嘗試寫入特定的實體太快會導致競爭,如Avoiding datastore contention中所述。本文建議分割一個實體,如果您希望它每秒持續更新一次或兩次以上。

數據存儲區針對讀取進行了優化,但是如果您的併發作業正在寫入單獨的實體(即使它們在同一模型中),那麼您的應用程序可能會擴展 - 這取決於您的請求處理程序執行多長時間。

+0

就我而言,我實際上並沒有碰到同一個實體。每項任務都在創建一個新的實體。所以爭議將會在更高層次上進行。我不斷創建新的和刪除舊的實體。 – Greg 2010-07-14 23:10:59

+2

不斷創建新的和刪除舊的實體不會導致實體級別的爭用,儘管您的寫入可能會因爭用索引更新而變慢。以下兩篇文章介紹瞭如何執行寫入的詳細信息:[數據存儲區的寫入時間](http://code.google.com/appengine/articles/life_of_write.html)和[如何建立索引](http: //code.google.com/appengine/articles/index_building.html) – 2010-07-14 23:14:38

+0

這個答案是正確的,除了爭用是在實體_group_級別,而不是實體級別。 – 2010-07-19 13:26:55

相關問題