Précédent   Forum des professionnels en informatique > Bases de données > Firebird > Connexion aux bases de données
Connexion aux bases de données Forum d'entraide sur la connectivité Firebird: composants, drivers, transactions, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/10/2007, 16h23   #1
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 44
Points : 13
Points : 13
Par défaut Gestion transactions sous Firebird (v1.5.4)

Bonjour à tous,

Je travaille sur une application Delphi se connectant à une base de données Firebird 1.5.4, contenant deux tables.

L'application effectue des requêtes de type 'SELECT' et d'autre de type 'UPDATE' et sont affiliées à des transactions différentes. Un DataSet et sa transaction permettent l'affichage des données dans un DBGrid.


Ayant parcouru pas mal de topic sur le sujet, je pensais avoir géré les transactions pas trop mal (exécution requête, manipulation données, fermeture transaction, sauf pour l'affichage) .

Or après quelques requêtes sur la base de données, je constate une augmentation de la taille de celle-ci.

CARAMBA, ENCORE RATé !

Voici les stats de la base :
Citation:
Database header page information:
Flags 0
Checksum 12345
Generation 22690
Page size 4096
ODS version 10.1
Oldest transaction 22652
Oldest active 22653
Oldest snapshot 22653
Next transaction 22684
Bumped transaction 1
Sequence number 0
Next attachment ID 0
Implementation ID 16
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Sep 14, 2007 9:53:01
Attributes force write

Variable header data:
Sweep interval: 20000
*END*
Pour une dizaine d'enregistrements dans les 2 tables de la base de données, une augmentation de taille du fichier de l'ordre de 30-40% est constatée. Après un "Backup" - "Restore", la base de données retrouve sa taille "normale".

Quels conseils pouvez-vous me donné pour éviter ceci?

Merci d'avance pour votre aide
Zepeq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 18h21   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
met ta requete select dans une transaction READ ONLY READ COMMITED, dès que tu as le SELECT tu fais un COMMIT RETAIN
et tu raffraichis autant que besoin ta grille

Autre solution,faire un select dans une transaction, récupérer les données dans l'espace mémoire de ton clients (memdataset par exemple) fermer la transaction

mais bon tes stats ne sont pas mauvaises en soit, il faut bien que le moteur fasse son boulot, il lui faut un peu de place pour cela
tant que les perfs ne se dégradent pas je ne vois pas où est le problème

En plus de cela tous les jours tu fait un backup avec gbak (que le backup) cela participera à la collecte des données périmées et ta base devrait bien se comporter
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 08h11   #3
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 44
Points : 13
Points : 13
Merci Makowski pour tes conseils, je vais essayer tes 2 solutions proposées. You are the

Citation:
Envoyé par makowski Voir le message
mais bon tes stats ne sont pas mauvaises en soit, il faut bien que le moteur fasse son boulot, il lui faut un peu de place pour cela
tant que les perfs ne se dégradent pas je ne vois pas où est le problème
Elles ne sont pas si mauvaises en effet. Mais je voulais avoir un avis extérieur. L'application est implantée sur une machine de production contenant un PC industriel dont les perfs ne sont pas exceptionnelles. De plus, l'architecture de l'application actuelle n'est de loin pas parfaite et les ressources dispos sont assez limitées. Raison pour laquelle je préfère être sûr de mon coups. J'imagine également, si nécessaire, passer par la version "embedded" de firebird.

Citation:
Envoyé par makowski Voir le message
En plus de cela tous les jours tu fait un backup avec gbak (que le backup) cela participera à la collecte des données périmées et ta base devrait bien se comporter
Je pensais faire un backup-restore, mais à quoi peut bien me servir le backup seul? Si tu pouvais m'en dire un peu plus, je t'en serais très reconnaissant.

Merci de m'avoir lu et répondu
Zepeq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 08h53   #4
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
Citation:
e pensais faire un backup-restore, mais à quoi peut bien me servir le backup seul? Si tu pouvais m'en dire un peu plus, je t'en serais très reconnaissant.
je te l'ai dis :
cela participera à la collecte des données périmées
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 09h05   #5
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 44
Points : 13
Points : 13
Citation:
Envoyé par makowski Voir le message
je te l'ai dis :
cela participera à la collecte des données périmées
Ok pour la collecte des données permiées, mais selon la syntaxe
Code :
1
2
C:\Program Files\Firebird\Firebird_1_5\bin> gbak -b[ackup]
<options> source target [n]
Or si je te comprend bien, je ne devrais pas faire de restore du fichier "target"? Le backup de gbak a donc un effet sur le fichier "source"? J'avoue que je ne suis pas très bien...
Zepeq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 15h27   #6
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
Citation:
Envoyé par Zepeq Voir le message
Ok pour la collecte des données permiées, mais selon la syntaxe
Code :
1
2
C:\Program Files\Firebird\Firebird_1_5\bin> gbak -b[ackup]
<options> source target [n]
Or si je te comprend bien, je ne devrais pas faire de restore du fichier "target"? Le backup de gbak a donc un effet sur le fichier "source"? J'avoue que je ne suis pas très bien...
oui
gbak visitant tous les enregistrements de la base, il participe à la collecte des données périmées par ce seul fait
donc il ne sert pas qu'à faire une sauvegarde, mais aussi participe à la maintenance de la base, sans qu'il y ait besoin de faire de restore
et heureusement d'ailleurs, il ne faut pas oubliez qu'il y a aussi des gens qui utilisent Firebird avec des bases devant absolument tourner 24h/24 !
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 16h16   #7
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 44
Points : 13
Points : 13
Merci à toi Philippe pour toutes ces précisions utiles.

Le temps de revoir le code, d'effectuer quelques tests et je passerai donner un feed-back.

Encore merci
Zepeq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 08h32   #8
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 631
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 631
Points : 4 533
Points : 4 533
j'ajoute mon grain de sel , dans ce fichier .BAT

Code :
1
2
3
 
gbak -v -t -user SYSDBA -password *****  "D:/Fichiers/Base.fdb" "D:\Fichiers\base.gbk"
gfix -user SYSDBA -password ****** "D:/Lalet/Base.fdb" -sweep
est-ce que, d'apres ce qui est raconté plus haut , le gfix ne servirait à rien , puisque déjà fait par le gbak ????
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 10h01   #9
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
hum, quasiment oui, surtout si le gbak est lancé à un moment où il est le seul à agir sur la base
Sweep fait un peu plus que gbak, mais dans la vie de tous les jours, cela devrait suffire, surtout avec les nouveaux réglages du sweep dans Firebird 2.

mais bon, comme d'habitude, il n'y a pas de vérité absolue, il faut voir le contexte globale de vie de la bd, les types de transactions utilisées, l'activité, à quels moment sont lancés gbak ou gfix, ...

Par contre il y a une chose qui est souvent oublié, c'est la maintenance des index cf http://blog.developpez.com/index.php...&c=1&tb=1&pb=1
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2007, 08h16   #10
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 631
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2007
Messages : 3 631
Points : 4 533
Points : 4 533
Citation:
Envoyé par makowski Voir le message
Par contre il y a une chose qui est souvent oublié, c'est la maintenance des index cf http://blog.developpez.com/index.php...&c=1&tb=1&pb=1
Effectivement . Très intéressant mais il n'y aurait t-il pas un moyen de lancer cette procédure automatiquement ?
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2007, 23h36   #11
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
un fichier de traitement par lot dans un cron
mais bon, le mieux est tout de même de faire ça quand la base n'est pas sollicitée
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 12h01   #12
Membre à l'essai
 
Inscription : décembre 2005
Messages : 57
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : décembre 2005
Messages : 57
Points : 23
Points : 23
Citation:
Envoyé par makowski Voir le message
Par contre il y a une chose qui est souvent oublié, c'est la maintenance des index cf http://blog.developpez.com/index.php...&c=1&tb=1&pb=1
Quel est la différence entre un recalcul de la sélectivité des index (SET STATISTICS) et un ALTER INDEX INACTIVE/ACTIVE ?
SurfingJeff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2007, 14h11   #13
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
Alter Index reconstruit complètement l'index

c'est bien aussi, mais un peu plus lourd et plus violent
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2007, 08h35   #14
Candidat au titre de Membre du Club
 
Inscription : août 2007
Messages : 44
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 44
Points : 13
Points : 13
Citation:
Envoyé par makowski Voir le message
...
En plus de cela tous les jours tu fait un backup avec gbak (que le backup) cela participera à la collecte des données périmées et ta base devrait bien se comporter
Je reviens sur le gbak. L'application actuelle avec sa vieille base de données (paradox) contient un mécanisme de sauvegarde dont l'interval est paramètrable. De mémoire, certains utilisateurs paramètrent cet interval pour effectuer une backup toutes les 10min.

Y a-t-il un effet indésirable si toutes les 10min par exemple, un gbak (backup seul) est lancé!?
Zepeq est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h06.


 
 
 
 
Partenaires

Hébergement Web