【问题标题】:slow querying in Hasura在 Hasura 中查询缓慢
【发布时间】:2021-06-24 04:02:37
【问题描述】:

我正在使用 hasura,它似乎工作得很慢......即使我只运行一个没有 WHERE 或没有排序的 SELECT,与使用 Django 相比,它也需要太多时间。我的数据集真的很慢(只有 3 行),而且仍然需要很多时间。

查询:

query MyQuery {

  youthjob_tags{name}

}

这是对查询的分析:

Aggregate  (cost=19.52..19.52 rows=1 width=32)
  ->  Seq Scan on tags  (cost=0.00..14.08 rows=1360 width=32)
  SubPlan 1
    ->  Result  (cost=0.00..0.00 rows=1 width=32)

生成的 SQL:

SELECT
  coalesce(json_agg("root"), '[]') AS "root"
FROM
  (
    SELECT
      row_to_json(
        (
          SELECT
            "_1_e"
          FROM
            (
              SELECT
                "_0_root.base"."name" AS "name"
            ) AS "_1_e"
        )
      ) AS "root"
    FROM
      (
        SELECT
          *
        FROM
          "youthjob"."tags"
        WHERE
          ('true')
      ) AS "_0_root.base"
  ) AS "_2_root"

【问题讨论】:

  • 慢是什么意思?这是一个很小的查询,它应该很快,你可能有另一个问题。
  • 从前端获取数据和使用 igraphql 都需要 1-2 秒。我只是想知道是否有人可以在我发送的信息中看到任何潜在的危险信号,例如生成的 sql 是否看起来很糟糕
  • 您正在与之通信的数据库位于何处?这里的查询计划或者生成的SQL都没有错
  • 我在 Hasura 上使用免费计划,这意味着它在加利福尼亚,而我在瑞典。但这真的应该让它那么慢吗?

标签: postgresql hasura


【解决方案1】:

如果 Hasura 在加利福尼亚运行,而您在瑞典并且您的数据库在瑞典,那么网络流量将如下所示:

  1. 您向 Hasura 发送 GQL 请求:瑞典 -> 加利福尼亚
  2. Hasura 将 SQL 语句发送到数据库:加利福尼亚 -> 瑞典
  3. 数据库向 Hasura 发送响应:瑞典 -> 加利福尼亚
  4. Hasura 回复您:加利福尼亚 -> 瑞典

根据these ping times,每个跃点跨越8844km,最小延迟为160ms,因此我预计纯网络延迟大约为 1 秒,甚至不考虑每个服务的实际处理时间

【讨论】:

  • 感谢您的回答,但是我认为我使用的数据库在加利福尼亚(我在 Hasura 中创建它,我认为他们正在使用加利福尼亚的数据库)。这就是为什么我仍然认为时间有点奇怪。但在接下来的几天里,我会在伦敦购买 Hasura,看看它是否会加快响应时间。
  • @odinhufnagl 您将什么数据库连接到您的 Hasura 实例?您是否使用了免费的 Heroku 选项?
  • 是的,我使用了 Heroku 的免费选项
猜你喜欢
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
  • 2012-05-04
  • 2020-06-10
相关资源
最近更新 更多