|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [OSSTEST PATCH 14/14] duration_estimator: Move duration query loop into database
George Dunlap writes ("Re: [OSSTEST PATCH 14/14] duration_estimator: Move
duration query loop into database"):
> > On Jul 21, 2020, at 7:42 PM, Ian Jackson <ian.jackson@xxxxxxxxxxxxx> wrote:
...
> > Example queries before (from the debugging output):
> >
> > Query A part I:
> >
> > SELECT f.flight AS flight,
> > j.job AS job,
> > f.started AS started,
> > j.status AS status
> > FROM flights f
> > JOIN jobs j USING (flight)
> > JOIN runvars r
> > ON f.flight=r.flight
> > AND r.name=?
> > WHERE j.job=r.job
>
> Did these last two get mixed up? My limited experience w/ JOIN ON
> and WHERE would lead me to expect we’re joining on
> `f.flight=r.flight and r.job = j.job`, and having `r.name = ?` as
> part of the WHERE clause. I see it’s the same in the combined query
> as well.
Well spotted. However, actually, this makes no difference: with an
inner join, ON clauses are the same as WHERE clauses. It does seem
stylistically poor though, so I will add a commit to change it.
> > Query common part II:
> >
> > WITH tsteps AS
> > (
> > SELECT *
> > FROM steps
> > WHERE flight=? AND job=?
> > )
> > , tsteps2 AS
> > (
> > SELECT *
> > FROM tsteps
> > WHERE finished <=
> > (SELECT finished
> > FROM tsteps
> > WHERE tsteps.testid = ?)
> > )
> > SELECT (
> > SELECT max(finished)-min(started)
> > FROM tsteps2
> > ) - (
> > SELECT sum(finished-started)
> > FROM tsteps2
> > WHERE step = 'ts-hosts-allocate'
> > )
> > AS duration
>
> Er, wait — you were doing a separate `duration` query for each row of the
> previous query? Yeah, that sounds like it could be a lot of round trips. :-)
I was doing, yes. This code was not really very optimised.
> I mean, in both queries (A and B), the transform should basically result in
> the same thing happening, as far as I can tell.
Good, thanks.
> I can try to analyze the duration query and see if I can come up with any
> suggestions, but that would be a different patch anyway.
It's fast enough now :-).
Thanks,
Ian.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |