【发布时间】:2013-03-31 08:30:52
【问题描述】:
使用带有 Python 的 AppEngine 和 HRD 按顺序检索记录(通过索引字段,它是一个递增的整数时间戳),我们在 30-45 秒内返回了 15,000 条记录。 (使用了批处理和限制。)我曾尝试在两个实例上并行执行查询,但仍实现了相同的总体吞吐量。
有没有办法在不更改任何代码的情况下提高这个总数?我希望我们可以多付一些钱并获得更好的数据库吞吐量。 (您可以为更大的前端支付更多费用,但这不会影响数据库吞吐量。)
我们将更改代码以将多个基础数据项存储在一个数据库记录中,但希望有一个短期的解决方法。
编辑:这些是正在下载到另一个系统的日志记录。我们会在未来修复它并且知道如何修复它,但我宁愿先处理更重要的事情。
【问题讨论】:
-
只是出于好奇,您为什么要一次检索如此大量的实体?如果您有这样的要求,那么您的设计可能存在问题,而不是 HRD 性能问题。
-
我会支持上面@illia-frenkel 所说的话。也许考虑设计您的应用程序以包括使用
memcache并可以缓存?由于您没有提供更多信息,我建议您观看 App Engine Datastore Under the Covers youtube.com/watch?v=tx5gdoNpcZM 和 Building Scalable Web Apps with App Engine youtube.com/watch?v=Oh9_t5W6MTE from Google IO 2008。另请阅读 Jeff Dean 的 highscalability.com/numbers-everyone-should-know -
我添加了一个澄清的编辑。我看过其他类似性能的报告。 Google 让您为更多的前端性能付费,所以我希望他们也会让您为更多的数据库吞吐量付费。
-
我似乎记得过去(关于组)的讨论,即递增整数时间戳会对检索产生负面影响,因为基础数据位于同一个“平板电脑”上,这意味着提取会丢失一些数据存储区不同部分的并发级别,(好吧,也许我没有正确描述它。;-) 请注意,随着即将到来的更新,自动生成的键的 ID 将被分发。来自发行说明“dev_appserver 现在默认使用 'scattered' id 分配策略分配自动 id。”,
-
请注意我可能完全错了;-)