Bonjour,
j'ai une question concertant les performances postgres en update sur une table.
J'ai une table contenant environ 22 millions de ligne, 21 colonnes et 5 index. Je fait un VACUUM ANALYZE sur la table et des REINDEX des 5 index. Toutes les stats sont à jour.
J'ai une colonne qui est "null" sur la totalité des données, je fais un simple :
update schema.table set champ = '-1';
et il prend 75 minutes ! sans aucune clause where. Comment expliquer cette lenteur ?
Second effet kisskool, une fois l'update réalisé la table est complètement en vrac et ne répond même plus dans des temps raisonnable à un count(*), je suis obligé de refaire un VACUUM ANALYZE qui met 10min ! A partir de là ma table est de nouveau opérationnelle.
Je précise que j'ai un serveur postgres conséquent avec 128Go de ram et 12 cpu. Quelques éléments de configuration :
1 2 3 4 5 6 7
| work_mem = 128MB
maintenance_work_mem = 4GB
effective_cache_size = 48GB
wal_buffers = 16MB
shared_buffers = 32GB
max_connections = 200
autovacuum = off (nous chargeons les données la nuit puis vacuum analyze et création des index vers 6h matin, aucun update/insert/delete en journée) |
Peut être que la conf n'est pas bonne n'étant pas expert en Postgres ? ou que j'ai raté quelque chose ?
Merci pour vos retours.
Partager