我想对GAE读取性能进行基准测试。从数据存储中提取了大约10,000个实体。这些实体包含3个属性名称(大约16个字符),描述(大约130个字符)和时间戳。没有什么特别大的。
这就是我所看到的:
平均而言,读取10k个实体需要大约11秒。不确定这是否被视为快速,慢速或合理,但无论如何都不会太激动。
更有趣的发现是CPU计量。 执行此读取操作100次消耗约3.0 CPU小时。费用是0.30美元。
鉴于此处没有CPU密集型算法,它是否会使GAE的CPU带宽相当昂贵? (当然,它以Python脚本等形式提供24/7 sys-admins,但仍然......)
或者这是我的Java代码中的东西:
http://github.com/akirekadu/GAE-Evaluation/blob/master/show.jsp
答案 0 :(得分:5)
这不是你的代码,我相信你的结果。在我们自己的实验中,我们发现检索和(特别是)存储在CPU配额方面是非常昂贵的操作。
我们注意到:
索引很贵。如果你的写作不仅仅是阅读,那么请对你的索引吝啬。确保您了解模型属性的indexed=False
属性,并密切关注自动生成到index.yaml中的内容。
如果你的阅读量超过你的写作量,那么很多多指数可能都有意义。尽可能使用memcache。使用实体组,如果它们有意义的话。
应用引擎API为您提供可提高效率的工具。它们很重要。如果您要写100行,则使用单个批量put()与100个单独的put()调用将大大减少CPU的使用。
如果您的应用经常按照您的描述执行大量读取,您可能希望选择其他解决方案(例如,像Slicehost或Linode这样的VPS)或不同的数据模型。每个应用程序都有不同的需求,WRT磁盘,CPU,内存等,所以我将后面的计算作为读者的练习。
HTH!