Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3e78ee8

Browse files
committed
chore(coderd/database): optimize GetRunningPrebuiltWorkspaces
1 parent48bb534 commit3e78ee8

File tree

2 files changed

+151
-22
lines changed

2 files changed

+151
-22
lines changed

‎coderd/database/queries.sql.go

Lines changed: 75 additions & 11 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/database/queries/prebuilds.sql

Lines changed: 76 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,83 @@ WHERE tvp.desired_instances IS NOT NULL -- Consider only presets that have a pre
4949
AND (t.id=sqlc.narg('template_id')::uuidORsqlc.narg('template_id') ISNULL);
5050

5151
-- name: GetRunningPrebuiltWorkspaces :many
52+
WITH
53+
latest_prebuilds
54+
AS (
55+
SELECT
56+
workspaces.name,
57+
workspaces.template_id,
58+
latest_build.id,
59+
latest_build.workspace_id,
60+
latest_build.template_version_id,
61+
latest_build.job_id,
62+
latest_build.template_version_preset_id,
63+
latest_build.created_at
64+
FROM
65+
workspaces
66+
LEFT JOIN LATERAL (
67+
SELECT
68+
workspace_builds.id,
69+
workspace_builds.workspace_id,
70+
workspace_builds.template_version_id,
71+
workspace_builds.job_id,
72+
workspace_builds.template_version_preset_id,
73+
workspace_builds.transition,
74+
workspace_builds.created_at,
75+
provisioner_jobs.job_status
76+
FROM
77+
workspace_builds
78+
JOIN provisioner_jobsON
79+
provisioner_jobs.id
80+
=workspace_builds.job_id
81+
WHERE
82+
workspace_builds.workspace_id
83+
=workspaces.id
84+
ORDER BY
85+
workspace_builds.build_number
86+
DESC
87+
LIMIT
88+
1
89+
)
90+
AS latest_buildON true
91+
WHERE
92+
workspaces.deleted= false
93+
ANDworkspaces.owner_id
94+
='c42fdf75-3097-471c-8c33-fb52454d81c0'::UUID
95+
ANDlatest_build.transition
96+
='start'::workspace_transition
97+
ANDlatest_build.job_status
98+
='succeeded'::provisioner_job_status
99+
),
100+
agent_readiness
101+
AS (
102+
SELECT
103+
latest_prebuilds.workspace_idAS workspace_id,
104+
BOOL_AND(workspace_agents.lifecycle_state='ready'::workspace_agent_lifecycle_state)::booleanAS ready
105+
FROM
106+
latest_prebuilds
107+
LEFT JOIN workspace_resourcesON
108+
workspace_resources.job_id=latest_prebuilds.job_id
109+
LEFT JOIN workspace_agentsON
110+
workspace_agents.resource_id=workspace_resources.id
111+
GROUP BY
112+
latest_prebuilds.workspace_id
113+
)
52114
SELECT
53-
p.id,
54-
p.name,
55-
p.template_id,
56-
b.template_version_id,
57-
p.current_preset_idAS current_preset_id,
58-
p.ready,
59-
p.created_at
60-
FROM workspace_prebuilds p
61-
INNER JOIN workspace_latest_builds bONb.workspace_id=p.id
62-
WHERE (b.transition='start'::workspace_transition
63-
ANDb.job_status='succeeded'::provisioner_job_status);
115+
latest_prebuilds.id,
116+
latest_prebuilds.name,
117+
latest_prebuilds.template_id,
118+
latest_prebuilds.template_version_id,
119+
latest_prebuilds.template_version_preset_idAS current_preset_id,
120+
agent_readiness.ready,
121+
latest_prebuilds.created_at
122+
FROM
123+
latest_prebuilds
124+
JOIN agent_readinessON
125+
agent_readiness.workspace_id=latest_prebuilds.workspace_id
126+
WHERE
127+
agent_readiness.ready
128+
;
64129

65130
-- name: CountInProgressPrebuilds :many
66131
-- CountInProgressPrebuilds returns the number of in-progress prebuilds, grouped by preset ID and transition.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp