----- Original Message -----
From: "Eli Mesika" <emesika(a)redhat.com>
To: "Laszlo Hornyak" <lhornyak(a)redhat.com>
Cc: "engine-devel" <engine-devel(a)ovirt.org>
Sent: Wednesday, August 28, 2013 11:45:14 AM
Subject: Re: [Engine-devel] Opimizing Postgres Stored Procedures
----- Original Message -----
> From: "Laszlo Hornyak" <lhornyak(a)redhat.com>
> To: "Eli Mesika" <emesika(a)redhat.com>
> Cc: "engine-devel" <engine-devel(a)ovirt.org>
> Sent: Tuesday, August 27, 2013 11:40:27 AM
> Subject: Re: [Engine-devel] Opimizing Postgres Stored Procedures
>
> Hi Eli,
>
> Most of the functions that we have in the DB are doing very simple jobs
> like
> run a query, insert/update and I see that now you have all QUERY functions
> as STABLE.
> My questions:
> Is this required for new functions from now on?
Yes and a email asking that was posted to engine_devel
> Is this done in order to improve performance?
Yes
Do you have any documents/benchmarks on how and why does this improve performance?
STABLE functions should improve performance if they return the same result for the same
parameters in the same statement.
E.g. if you have a stable function like "select foo(x) from y" then the function
can be invoked only once to evaluate each distinct value of y.x - this is kind of useful
Functions running queries for the ovirt engine are typically invoked from client side,
therefore they are only ivoked once from the parameters list and therefore will be only
executed once for that single statement.
>
> Thank you,
> Laszlo
>
> ----- Original Message -----
> > From: "Eli Mesika" <emesika(a)redhat.com>
> > To: "engine-devel" <engine-devel(a)ovirt.org>
> > Sent: Monday, August 26, 2013 11:22:20 AM
> > Subject: [Engine-devel] Opimizing Postgres Stored Procedures
> >
> > Hi
> >
> > I had merged the following patch
> >
http://gerrit.ovirt.org/#/c/17962/
> >
> > This patch introduce usage of the IMMUTABLE, STABLE and STRICT keywords
> > in
> > order to boost performance of the Postgres SPs.
> >
> > Please make sure that your current/and future DB scripts applied that.
> >
> >
> > Volatility
> > ----------
> > * A function should be marked as IMMUTABLE if it doesn't change the
> > database,
> > and if it doesn't perform any lookups (even for database configuration
> > values) during its operation.
> > * A function should be marked STABLE if it doesn't change the database,
> > but
> > might perform lookups (IMMUTABLE is preferable if function meets the
> > requirements).
> > * A function doesn't need to be marked VOLATILE, because that's the
> > default.
> >
> > STRICTNESS
> > ----------
> > A function should be marked STRICT if it should return NULL when it is
> > passed
> > a NULL argument, and then the function won't even be called if it is
> > indeed
> > passed a NULL argument.
> >
> >
> > I am available for any questions.
> >
> > Thanks
> >
> > Eli
> > _______________________________________________
> > Engine-devel mailing list
> > Engine-devel(a)ovirt.org
> >
http://lists.ovirt.org/mailman/listinfo/engine-devel
> >
>