gpt4 book ai didi

python - 当存在多个订单属性时加快 App Engine 本地 SDK 数据库查询?

转载 作者:IT王子 更新时间:2023-10-29 06:18:32 25 4
gpt4 key购买 nike

我有一个如下所示的查询:

query = (models.Foo.all()
.filter('x =', x)
.filter('y =', y)
.filter('z =', z)
.filter('zz =', zz)
.order('-a'))

它在 ~100 毫秒内在本地 SDK 上运行,并以可接受的速度在云端运行。当我添加第二个订单时(看起来像这样:)

query = (models.Foo.all()
.filter('x =', x)
.filter('y =', y)
.filter('z =', z)
.filter('zz =', zz)
.order('-a')
.order('-b'))

..在本地 SDK 上需要大约 10 秒(长 100 倍),并以与之前在云中相同的速度运行。我需要有二阶属性。

关于设置的一些细节:

  • Windows SDK 版本 1.9.50
  • python 2.7
  • 使用 db 模型,而不是 ndb
  • 我从一个新的本地数据库开始(替换了 datastore.db)并从头开始重建记录
  • 本地有约 1200 个 Foo 实体(云端约有 3M)
  • 我在本地数据库上运行了 sqlite3 datastore.db "PRAGMA integrity_check 并且没有报告错误

问题:如何使查询在本地运行得更快?(一直滞后10s做开发真的很难。)

最佳答案

这可能不是您想要的答案,但开发服务器上的数据存储性能缓慢是一个长期存在的已知问题 tracked on the public issue tracker .

出现这种情况的一个原因部分是由于模拟的处理方式。如果您查看 SDK 中的 google/appengine/datastore/datastore_sqlite_stub.py,您会发现对 db 方法的调用有点天真地转换为基本的 SQL 查询,被送入本地运行的 SQLite 数据库。

在这些情况下,您无法在应用程序级别提高性能。解决方案是让 SDK 在开发服务器上执行更智能的查询翻译,这由 SDK 工程团队来实现。

关于python - 当存在多个订单属性时加快 App Engine 本地 SDK 数据库查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42121983/

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