Bonjour,
Est-il possible de compacter une base "à chaud" ?
Ou y a-t-il un moyen de regénérer les index sans arrêter la BDD ?
Merci
Bonjour,
Est-il possible de compacter une base "à chaud" ?
Ou y a-t-il un moyen de regénérer les index sans arrêter la BDD ?
Merci
Le but est de faire baisser la taille de la base de données ou alors, trouver un moyen de ne pas la faire grossir en recalculant par-exemple la sélectivité des index de manière régulière ?
Pour info, Il y a des insertions et suppressions en masse et de manière continue dans cette base.
Merci
1. tu peux compacter une base à chaud avec l'utilitaire gbak. Voici un bon lien qui explique l'utilité de cet exécutable
Explications sur gbak en anglais
Explications sur le site IBPhoenix en français
2. Oui il y a moyen mais assure toi de n'avoir qu'une seule connexion et transaction sur la base de données car cela risque de poser problème au niveau des contraintes référentielles lors que tu rerecréera les index.
Néanmoins pour recalculer les index je te conseille de créer la procédure stockée suivante qui est déjà présente dans un des messages de ce forum
puis de la lancer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE PROCEDURE RECALCULINDEX AS DECLARE VARIABLE MONINDEX VARCHAR(500); BEGIN FOR SELECT RDB$INDEX_NAME FROM RDB$INDICES INTO :MONINDEX DO BEGIN EXECUTE STATEMENT ('SET statistics INDEX ' || :MONINDEX || ';'); END END
Cela recalculera la sélectivité de tous tes index.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2EXECUTE PROCEDURE RECALCULINDEX;
Merci.
Mais le restore peut-il ausi être fait à chaud sur la même base ?
Style :
Restore to an already existing database (Firebird 2.0)
gbak -r o -v -user SYSDBA -password masterkey c:\backups\warehouse.fbk dbserver:/db/warehouse.fdb
Pour la regénération d'index :
Oui merci j'avais trouvé le code sur le forum, mais je ne savais pas si cela allait jouer sur le volume de la base.
Pour une grosse application en client/serveur qui tourne en permanence, comment peut-on se dépétrer du problème de grossissement de base à ce moment là ?
Je ne peux jamais garantir qu'il n'y ait qu'une seule connexion ou transaction...
Je ne dois pas être la seule dans ce cas...
il n'y pas de probleme de grossissement si les transactions sont correctes et si tu fais un backup (sans restore) avec gbak régulièrement.
Le serveur réutilisera la place disponible, les nouveaux insert utiliseront la place disponible après les suppressions
salut , j'ai un petit question stu...![]()
normalement si en fait un restore les données modifier après le backup seront perdus, non?![]()
![]()
Partager