我有一個請求對屬於同一個實體組的實體執行多個「put」操作。appengine數據存儲多個「puts」交易表現
他們在交易中並不重要,但我想知道這樣做會對性能產生什麼影響,是否有機會提高性能,因爲在提交時只寫入一個變更集?
不僅如此,如果我在交易中的單個實體上有多個「放置」操作。這與最後一次「投入」操作有什麼不同嗎?
我有一個請求對屬於同一個實體組的實體執行多個「put」操作。appengine數據存儲多個「puts」交易表現
他們在交易中並不重要,但我想知道這樣做會對性能產生什麼影響,是否有機會提高性能,因爲在提交時只寫入一個變更集?
不僅如此,如果我在交易中的單個實體上有多個「放置」操作。這與最後一次「投入」操作有什麼不同嗎?
一些背景資料,App Engine的數據存儲是基於谷歌的Megastore的數據庫,你可以在這裏讀了它,當你在度假:http://static.googleusercontent.com/external_content/untrusted_dlcp/research.google.com/en//pubs/archive/36971.pdf
超快速的總結是,數據存儲獲得性能優勢時實體在不同的服務器上並行存儲或讀取。爲了獲得實體組內的事務語義,所有這些事務都在同一臺服務器上串行運行。因此他們會運行得更慢。
我不是谷歌員工,所以我不確定問題的最後部分。你基本上是問他們是否對交易進行了優化,將多個投放放入一個投入。我還沒有看到任何提及這樣的優化,我不認爲它存在。每個放置操作本質上都會寫入整個實體,所以我懷疑對單個實體的多次放置操作將比單個放置操作更糟糕。
新的ndb API可能會對此進行一些優化。