From: | Éric de la Musse <eric901(at)pouik(dot)org> |
---|---|
To: | pgsql-fr-generale(at)postgresql(dot)org |
Subject: | Re: PostgreSQL 9.5beta - row level security et performances |
Date: | 2015-10-19 07:04:01 |
Message-ID: | 20151019090401.48a2aca6@archie |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-fr-generale |
Le Sun, 18 Oct 2015 20:26:03 +0200,
Julien Rouhaud <rjuju123(at)gmail(dot)com> a écrit :
> 2015-10-18 19:34 GMT+02:00 Éric de la Musse <eric901(at)pouik(dot)org>:
>
> > je me permets de vous solliciter sur un problème de perte sensible
> > de performance lorsque j'utilise une des nouvelles fonctionnalités
> > de la 9.5 (je suis en 9.5beta 1): les "row level
> > security" ...
> >
> > Je synthétise par 2 requêtes puis j'essaie de développer un peu:
> ...
> > 2/ Requête 2 avec les row level security *activés* sur les tables:
> > ... même chose...
> > (15 lignes)
> >
> > Temps : 2590,951 ms
> >
> > Soit un rapport de 1 à 74... une paille !
> >...
> À tout hasard, est-ce que la fonction role_from_email() est déclarée
> comme volatile, et si oui est-il possible de la déclarer comme
> immutable ?
Bien vu Julien ! Effectivement la fonction role_from_email était
VOLATILE (par défaut) et pouvait être "promue" IMMUTABLE.
Et oui cela change tout:
psql postgresql://...<<EOF
\timing
SELECT m.id, j.code, j.libelle,
p.number, p.libelle, m.date_mouvement , m.mode, m.piece, m.ref,
m.libelle, m.montant
FROM mouvements m
LEFT JOIN journaux j ON
m.client_code = j.client_code AND m.dossier_code = j.dossier_code AND
m.journal = j.code
LEFT JOIN plans p ON m.plan = p.id WHERE
m.client_code='DEMO' AND m.dossier_code='DEMO' AND m.journal='BQ' AND
m.date_mouvement BETWEEN '2015-09-01' AND '2015-10-30'; EOF
Chronométrage activé.
...
...
(15 lignes)
Temps : 56,148 ms
Le temps de traitement est bien supérieur à la même requête sans
les"row level security" (traduction française: "sécurité niveau ligne"
?) mais le rapport/la perte de performances semble plus tolérable: de
l'ordre de +60% (56 ms/35 ms). Quand même.
Existe t-il (je suppose que oui) des résultats de tests comparant les
performances des requêtes avec et sans les RLS activées ? Pouvez vous me
pointer vers ceux-ci ? Cela me permettrait de savoir si ce que
j'obtiens peut être considéré comme normal ou pas.
Dans tous les cas merci Julien pour le coup de main décisif qui remet
les RLS dans la course ;-)
--
Éric de la Musse
--
Envoi via la liste pgsql-fr-generale (pgsql-fr-generale(at)postgresql(dot)org)
From | Date | Subject | |
---|---|---|---|
Next Message | Dimitri Fontaine | 2015-10-19 19:13:58 | Re: PostgreSQL 9.5beta - row level security et performances |
Previous Message | Julien Rouhaud | 2015-10-18 18:26:03 | Re: PostgreSQL 9.5beta - row level security et performances |