2012-02-21 32 views
1

我有一個請求對屬於同一個實體組的實體執行多個「put」操作。appengine數據存儲多個「puts」交易表現

他們在交易中並不重要,但我想知道這樣做會對性能產生什麼影響,是否有機會提高性能,因爲在提交時只寫入一個變更集?

不僅如此,如果我在交易中的單個實體上有多個「放置」操作。這與最後一次「投入」操作有什麼不同嗎?

回答

1

一些背景資料,App Engine的數據存儲是基於谷歌的Megastore的數據庫,你可以在這裏讀了它,當你在度假:http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//pubs/archive/36971.pdf

超快速的總結是,數據存儲獲得性能優勢時實體在不同的服務器上並行存儲或讀取。爲了獲得實體組內的事務語義,所有這些事務都在同一臺服務器上串行運行。因此他們會運行得更慢。

我不是谷歌員工,所以我不確定問題的最後部分。你基本上是問他們是否對交易進行了優化,將多個投放放入一個投入。我還沒有看到任何提及這樣的優化,我不認爲它存在。每個放置操作本質上都會寫入整個實體,所以我懷疑對單個實體的多次放置操作將比單個放置操作更糟糕。

新的ndb API可能會對此進行一些優化。