Re: Partitionement

From: Pierre BOIZOT <pierre(dot)boizot(at)gmail(dot)com>
To: Dimitri Fontaine <dimitri(at)2ndquadrant(dot)fr>
Cc: Guillaume Lelarge <guillaume(at)lelarge(dot)info>, PG-Mail-liste <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: Partitionement
Date: 2013-10-07 06:46:36
Message-ID: CANxSh5xXp3Snab2Xdh+QrOf3aNNXgw4BgjNrqBPSh_-sZx0jKA@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour Dimitri,

Dans ta réponse il y a un commentaire que je ne comprends pas totalement
pour ne pas dire totalement :-( .

> Afin de distinguer les deux cas (clause évaluée avant la planification
> ou bien pendant l'exécution), on utilise sans surprise EXPLAIN.

Peux tu nous en dire plus ....

​Merci d'avance.​

Pierre.

G+ <https://plus.google.com/u/0/107377830070954284209/about>

Le 6 octobre 2013 23:56, Dimitri Fontaine <dimitri(at)2ndquadrant(dot)fr> a écrit :

> Pierre BOIZOT <pierre(dot)boizot(at)gmail(dot)com> writes:
> > Il s'avere que l'écriture de la clause CHECK est importante ....
>
> Très importante en effet.
>
> > CREATE TABLE sales_part1
> > (CHECK (org = 6 and temps between to_date('20101001'::text,
> > 'yyyymmdd'::text) and to_date('20131001'::text, 'yyyymmdd'::text)) )
> > INHERITS (sales);
>
> > ​CREATE TABLE ventes_part1
> > (CHECK ( (temps >= date '20101001' and temps <= date '20131001')
> > and org=6 ) )
> > INHERITS (ventes);​
>
> La contrainte CHECK et la clause WHERE doivent être démontrées
> incompatibles par le plannificateur de requêtes pour bénéficier du
> paramétrage qui t'intéresse.
>
> La première écriture utilise un appel de fonction qui sera réalisé par
> l'exécuteur de requête, bien après la phase de planification. La seconde
> écriture utilise la notation dite de « litéral décoré » qui elle est
> résolue au moment de la lecture (parsing) de la requête, avant que le
> planificateur entre en jeu.
>
> Afin de distinguer les deux cas (clause évaluée avant la planification
> ou bien pendant l'exécution), on utilise sans surprise EXPLAIN.
>
> > En conclusion ....
> > Cela marche mais il est impératif d'éxaminer soigneusement la requete la
> > clause CHECK des tables.
>
> Non seulement la clause CHECK, mais égalemment l'écriture des clauses
> WHERE.
>
> > *Question subsidiaire* : il me semble avoir lu dans la documentation que
> > l'on ne devrait pas aller au delà de 100 partitions.
> >
> > Est-ce encore d'actualité ?
>
> Les caractéristiques de performances de l'algorithme qui prouve (au sens
> de preuve mathématique) l'incompatibilié des clauses CHECK et WHERE
> dépendent fortement du nombre de clauses à évaluer. Le chiffre est à
> valider dans ton environnement et pour tes clauses plutôt qu'à prendre
> au pied de la lettre, mais l'ordre de grandeur est certainement à garder
> à l'esprit.
>
> Si par conception tu sais que tu devras gérer plusieurs milliers de
> partitions, sache que c'est à tester en détails avec le bon nombre de
> partitions et des données conséquentes avant de partir en production.
>
> --
> Dimitri Fontaine
> http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support
>

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message Pascal Boulerie 2013-10-08 09:58:01 Re: toujours impossible de m'inscrire sur le forum FluxBB postgresql.fr - erreur Captcha invalide
Previous Message Dimitri Fontaine 2013-10-06 21:56:02 Re: Partitionement