2016-07-09 20 views
1

我很熟悉Datastore對實體組的單寫每秒限制(可能爲5)。這與交易有什麼關係?數據存儲:對事務內的實體組進行多次寫入超出寫入限制?

該文檔似乎表明,我可以做多種修改一個交易 - 內例如添加幾個後裔實體:

單個事務可以修改多個實體在一個組, 或添加新實體該組通過使新實體的父母成爲組中的現有實體 。

https://cloud.google.com/appengine/docs/java/datastore/transactions

+0

從技術上講,每個Entity Group每秒寫入一筆交易,其中一項交易對於單個實體組可以有多達500個實體。這意味着您可以最多每秒將500個實體寫入單個實體組。另外請注意,您可以每秒鐘一次達到最高點,但如果持續下去,則會增加您遇到爭用的風險以及系統的最終一致性。 –

+0

@DanMcGrath:恩,這應該在文檔中詳細說明...... –

+0

@DanCornilescu,我們正在積極努力改進它。例如,在我們的新限制文檔中,您會看到它更加清晰:https://cloud.google.com/datastore/docs/concepts/limits –

回答

1

是的,你可以做多個寫操作每一個實體組相同的事務中,但小心:

  • 工資atention不具有寫入造成同一事務中的衝突,否則交易將最終失敗(即使在重試後)
  • 嘗試保持每個事務內的寫入數量低或以某種方式確保事務之間有足夠的間隔,例如聚合寫入操作吃了(或更確切地說它的短期平均值)仍然(低於)1寫/秒限制 - 爲瞬間高峯留出空間,偶爾還會在失敗時重新嘗試,以此遏制這一限制。否則,你會得到併發/爭用異常。見Objectify - many writes to same entity in short period of time with and without transaction

,當然,你可以寫信給跨集團的交易中高達25個的實體組(此時)(每取得自己〜1寫入/ s的極限,高達的集合體〜25次寫入/秒)。

在最終的一致性和書寫throuput之間取得適當的平衡並不是微不足道的。這威力感興趣:What would be the purpose of putting all datastore entities in a single group?

更新信貸DanMcGrath的評論:

這在技術上是每實體組, 第二1個寫交易,其中交易最多可有500個實體單個實體 集團。這意味着您最多可以將每秒500個實體 寫入單個實體組。另外請注意,您可以每 秒一次達到最高點,但如果持續下去,則會增加爭用的風險以及系統的最終一致性。 - Dan McGrath 1小時前

+0

通過google文檔確認:https://cloud.google.com/datastore/docs/concepts/structuring_for_strong_conciptency – nflacco

相關問題