2009-11-02 6 views

Répondre

2

Ceci est l'une des nombreuses douleurs de Firebird. Le meilleur et le seul moyen efficace et juste de le faire - sauvegarder/restaurer votre base de données en utilisant gbak

1

Firebird exécute parfois un balayage pour supprimer les enregistrements d'index, etc., et retrouver l'espace pour une autre utilisation. En d'autres termes, dès que le balayage est exécuté, vous aurez les mêmes performances que si le fichier de base de données était plus petit. Vous pouvez imposer un balayage immédiat, si c'est ce que vous essayez de faire.

Cependant, la taille de la base de données réelle ne rétrécira pas, peu importe quoi, sauf si vous effectuez une sauvegarde et une restauration. Si la taille est un problème, utilisez le paramètre -USE_ALL_SPACE pour gbak, cela empêchera que cet espace soit réservé pour les enregistrements futurs, ce qui donnera une base de données plus petite.

0

Des official faq

De nombreux utilisateurs se demandent pourquoi ils ne reçoivent pas leur espace disque en arrière quand ils supprimer un grand nombre d'enregistrements de base de données.

La raison en est que c'est une opération coûteuse, il faudrait un grand nombre d'écritures de disque et de mémoire - tout comme faire la réfragmentation de la partition de disque dur . Les parties de la base de données (pages) qui ont été utilisées par telles données sont marquées comme vides et Firebird les réutilisera la prochaine fois il doit écrire de nouvelles données.

Si l'espace disque est critique pour vous, vous pouvez récupérer l'espace en effectuant une sauvegarde, puis une restauration. Puisque vous faites la sauvegarde à restaurer tout de suite, il est sage d'utiliser le "inhibit garbage collection" ou "ne pas utiliser garbage collection" (-G en gbak), ce qui rendra sauvegarde aller beaucoup plus rapide . Garbage Collection est utilisé pour nettoyer votre base de données , et comme il s'agit d'une tâche de maintenance, il est souvent fait ensemble avec sauvegarde (car la sauvegarde doit traverser toute la base de données de toute façon). Cependant, vous allez bientôt abandonner ce fichier de base de données, et il n'y a aucun besoin de le nettoyer.

Questions connexes