2011-05-27 5 views
1

J'ai un problème avec tronquer toutes les tables dans la base de données sur mon ordinateur local exécutant Ubuntu 10.09 et Postgresql 9.0 sur ext4 fs.Comment améliorer les performances «tronquées» de Postgresql?

Tronquer une base de données vide avec 56 tables nécessite environ 7 secondes alors que tous mes collègues ont une performance d'environ 1 seconde.

Je tronque toutes les tables avec une commande. Les tables sont entièrement recouvertes de clés étrangères.

Quelqu'un connaît-il ce problème?

+0

Comment tronquer la table DB par table ou toutes les tables dans une seule commande? Combien de fois vos tables ont des clés étrangères? –

+0

Vos collègues et vous utilisez exactement la même base de données? – Mr47

+0

Utilisez-vous la commande TRUNCATE TABLE ou exécutez une instruction DELETE? Avez-vous des requêtes actives s'exécutant sur ces tables sur lesquelles vous exécutez TRUNCATE? – Kuberchaun

Répondre

3

Je devine que vos collègues ont le cache d'écriture activé sur leurs disques ou fsync désactivé dans la configuration de Postgres.

+0

Ou enveloppé dans une transaction. 56 tables en 7 secondes ~ = 8 fsync par seconde si en dehors d'une seule transaction, ce qui semble crédible pour un disque dur en train de mourir (ou celui qui est très occupé). – Sean

+0

Merci! En désactivant 'fsync', la performance de' truncate' améliorée sur ma machine dev 8 fois! – 907th

+0

@ 907e Mais n'essayez pas d'exécuter la base de données de production avec 'fsync = off' - vous perdrez vos données tôt ou tard! – Tometzky

Questions connexes