Le 26/10/2011 08:45, pif34 a écrit :
> c'est ce que j'ai essayé de te faire comprendre, outre des
> "optimisations" et la puissance du serveur, la plupart des perfs que tu
> peux récupérer c'est dans ton appli: cache applicatif, index, requetes,
> schéma, etc.
>
> C'est un job de développement d'un serveur propre... Combien d'appli
> soit disant performante j'ai récupéré et en moins de 15j de charges
> (profiling, correction), j'ai divisé par 10 à 100 les points qui
> posaient problème...
>
> Tes partitions, c'est du bricolage, tot ou tard si ta volumétrie
> augmente dans le temps tu auras à nouveau le problème, mais il deviendra
> bien plus complexes à analyser et corriger grace à ton bricolage...
Pour autant que j'ai pu comprendre de mon soucis.
il est plus technique d'autre chose.
j'avais (j'ai toujours) dans la table des champs tsvector.
si j'ai bien compris les infos que j'ai glanées à droite à gauche (sans
pour autant pouvoir être sur que c'est totalement vrai), lorsqu'on
modifie une donnée d'un enregistrement c'est tous l'enregistrement qui
est réécrit sur le disque.
du coup, rien que flaguer un mail comme étant lu imposait une
ré-écriture de tout le mail dans la base y compris le tsvector qui est
assez gros.
Donc il est vrai que je ne saurai jamais si le partitionnement était
utile. Il est possible que la simple séparation des données dans deux
tables:
- une pour les données vouées à être modifiées
- une pour le donnée statiques
aurait peut être tout aussi bien solutionner mon problème.
Au final j'ai fait les deux : partitionnement et séparation des données.
Les intérêts sont multiples:
- les index des tsvector sont séparés compte mail par compte mail, du
coup leur indéxation est un peu plus rapide.
- les caches sont mieux exploités car certain comptes mails inactifs ne
seront jamais cachés
- les autovaccums bien qu'encore très long sont plus nombreux mais aussi
plus rapide.
Bref. J'ignore si l'on pouvait optimiser autrement. peut etre en effet
utiliser un outil externe a postgresql pour indéxer.
Mais l'utilisation des tsvector est tellement simple que je préfère ne
pas m'en passer.