2012-02-21 65 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可能会对此进行一些优化。