SQLAlchemy-Marshmallow慢查询和序列化为JSON

马什

我对此有些陌生,所以如果有人可以帮助我,那就太好了。

因此,我在SQLAlchemy中为正在开发的Flask应用程序设置了一些模型。在构建应用程序时,我在数据库(当前为SQLite)中填充了一些虚假数据,这让我感到惊讶的是,我的调用之一多么慢。

我在数据库中有一个名为Menu的表。菜单中有一个子项,节中有一个子项。像这样:

  • 菜单
    • 栏目
      • 项目

我要查询的对象是1个菜单,其中有4个部分,每个部分有10个项目。

在我的Flask路由中,我使用Menu.query.get(id)查询数据库,并使用棉花糖将其序列化为JSON。

整个过程需要花费250ms的时间才能在我的本地计算机上返回。

所以我的问题是:我在担心250毫秒方面感到愚蠢吗?缓慢的罪魁祸首是什么?-架构设计不佳?-SQLite /使用SQL Db?-还有吗?

任何帮助将不胜感激。

此外。我本来可以再深两个级别(项目具有可以选择的选项),但是大约要花整整一秒钟的时间,因此当用户请求特定项目时,我将它们移到了一个单独的端点。

讨厌的

考虑到所有内容都是本地的,我同意250ms过多。我希望速度变慢的原因是为了构建JSON,正在执行多个SQL查询。

SQLALCHEMY_ECHO = True在SQLAlchemy配置上进行设置将向您显示正在生成的SQL查询,并确认这一点。

您尚未提供数据库模型,但您可能会发现您的关系正在被延迟加载,因此正在对树中的每个对象进行新的SQL查询。您可以在SQLAlchemy文档的“关系加载技术”部分中找到更多信息

lazy='joined'在子关系上进行设置(即,菜单->节和节->项)将导致使用JOIN而不是默认的SELECT迅速加载子关系。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章