1) une requête n'utilise qu'un seul cpu et un seul coeur. La parallélisation des requêtes est un problème très difficile et les concepteurs de postgresql ne s'y sont pas attaqué jusqu'à présent.
2) quand on modifie une ligne d'une table, en interne ça réécrit une nouvelle version de cette ligne, ce qui augmente l'espace occupé. La ligne "morte" sera marqué comme réutilisable dès que possible par le processus autovacuum.
Il est possible de forçer le dégonflage de la table par VACUUM FULL mais c'est une opération lourde qui n'est bénéfique que quand on est sûr que cet espace ne pourra pas être réutilisé automatiquement par les mises à jour ultérieures sur la table en question.
Avec la version 8.3 le nombre des lignes en question peut être estimé par
select pg_stat_get_dead_tuples('latable'::regclass:oid);
Partager