DEV Community

Aarbel
Aarbel

Posted on

1

How to monitor URQL performance and link with database queries ?

Hi Urql community, i'm struggling debugging / optimising urql request as these requests are then converted to Postgre SQL requests thru Hasura.

Extract of my urql file:


    ${GetApprovals_VersionFragmentDoc}`;
export const GetApprovalsDocument = gql`
    query GetApprovals($projectId: uuid!) {
  files(
    where: {is_approval_mode: {_eq: true}, project: {id: {_eq: $projectId}}, folder: {is_in_bin: {_eq: false}}}
  ) {
    ...GetApprovals_file
  }
}
    ${GetApprovals_FileFragmentDoc}`;

Enter fullscreen mode Exit fullscreen mode

Extracts of a postgre request (log from EverSQL), maybe linked to this query (but i'm not sure, which is my problem):

SELECT
  coalesce((json_agg("root") -> 0), 'null') AS "root"
FROM
  (
    SELECT
      row_to_json(
        (
          SELECT
            "_100_e"
          FROM
            (
              SELECT
                "_0_root.base"."id" AS "id",
                "_0_root.base"."name" AS "name",
                "public"."is_approved_on_a_version"("_0_root.base") AS "is_approved_on_a_version",
                "_0_root.base"."is_approval_mode" AS "is_approval_mode",
                "_16_root.or.assignation"."assignation" AS "assignation",
                "_99_root.cf.last_version"."last_version" AS "last_version",
                "_57_root.ar.root.file_versions"."file_versions" AS "file_versions",
                "_0_root.base"."due_date" AS "due_date",
                'files' AS "__typename"
            ) AS "_100_e"
        )
      ) AS "root"
    FROM
      (
        SELECT
          *
        FROM
          "public"."files"
        WHERE
          (
            (
              (
                (
                  "public"."get_user_can_read_file"("public"."files".*, $1)
                ) = (('true') :: boolean)
              )
              OR (
                (
                  (
                    "public"."get_user_can_read_file"("public"."files".*, $1)
                  ) IS NULL
                )
                AND ((('true') :: boolean) IS NULL)
              )
            )
Enter fullscreen mode Exit fullscreen mode

As a conclusion here:

  • i have no way to know if the SQL log comes from this specific query
  • which user performed the query
  • how to optimise the urql query to avoid performance provlems with SQL.

Do you have any tips / recommandations for that ?

Thanks a lot

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay