在 GAE 中,写入单个实体和核心值所采用的写入操作数是否相同


单独

存储 10 个实体和在 google appengine 数据存储中存储 10 个实体作为核心值(即列表或集)有什么区别?

执行相同数量的写入操作或存储列表是否会减少写入操作计数?

您可以使用新的云监控服务,请参阅 https://cloud.google.com/monitoring/docs; 除此之外,它还可以显示应用程序遇到的 RPC 延迟的图表。

到存储的不同应用程序端"桥接"可能具有不同的行为;例如,ndb(对于 Python 应用程序)努力"幕后"代表您透明地使用缓存,并"捆绑"对数据存储的 RPC 调用(它还允许您使用 _multi_async 方法和函数显式执行后者)。 在其他语言中,或者如果使用 Python 中的旧db,您可能会在应用程序端观察到不同的性能特征,因为它们可能会在不同程度上采用此类优化,一直到"根本没有"。

但是,在最低抽象级别,与单独和同步写入每个实体相比,"捆绑"和"异步"行为始终具有性能优势。

如果数据存储的后端获得较少的 RPC 调用,则与每次收到许多关于写入单个实体的 RPC 调用相比,它可以更好地组织自己的操作

"

异步"行为不会影响最低抽象级别(无论应用程序端被阻止等待结果,还是只是有异步监视future,数据存储后端都必须执行相同数量的工作)的"异步"行为(除了它可能允许ndb幕后执行更多"捆绑"),但它仍然可以提高应用程序的性能,因为事情可以"重叠",并且您的应用程序能够在等待之前执行其他操作为future交付。

因此,每个"桥"都应该准确地记录它代表你做什么,但即使它做的事情足够复杂(特别是在多实例、多线程应用程序中),也值得试验和使用云监控来检查不同方法的实际性能影响。

相关内容

最新更新