gpt4 book ai didi

python - 减少 GAE hrd(db) 读取操作计数

转载 作者:行者123 更新时间:2023-11-28 22:00:36 25 4
gpt4 key购买 nike

为了降低GAE Python的使用成本,我想优化数据库读取操作。你有什么建议吗?

我不明白为什么 GAE 显示的数据库读取操作比我想象的要多。如果您能给出 GAE 如何计算数据库读取操作的一般逻辑,它也应该非常有帮助。

谢谢!

最佳答案

您可以在此处详细了解高级操作(获取、查询、放置、删除等)在低级操作(小型、读取、写入)中的成本 - https://developers.google.com/appengine/docs/billing(向下滚动大约一半方式)。

我强烈建议使用 AppStats 来帮助追踪读取操作的来源。需要注意的一件大事是不要将 offset 选项与 .fetch() 一起用于分页,因为这只会跳过结果,但仍然需要读取。这意味着如果您执行 .fetch(10, offset=20),它将花费您 30 次读取。您想改用 query cursors

另一个优化是通过键获取( .get(keys) )与查询相比,这只会花费 1 次读取操作,而不是查询花费 1 次读取查询 + 1 次读取返回的每个实体(因此返回 1 个实体的查询花费 2 次读取,但是同一实体的 .get() 只花费 1 次读取。您可能还想看看使用 projection queries ,查询花费 1 次读取,但每次只花费 1 小已检索投影实体(注意:投影的所有属性都必须编入索引)。

此外,如果您还没有这样做,您应该使用 NDB API,它会自动获取 caches 并帮助减少您的读取操作。与官方文档一起,Rodrigo 和 Guido 的 NDB cheat sheet 是从 ext.db 过渡到 ndb 的好方法。

Managing Datastore Usage 下有一些很好的提示: https://developers.google.com/appengine/articles/managing-resources

最后,您可能还对使用 gae_mini_profiler 感兴趣,它可以方便地访问当前请求的 AppStats,以及其他有用的分析和日志记录信息。

关于python - 减少 GAE hrd(db) 读取操作计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14532634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com