|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 143 ![]() |
Je pose la première pierre :
Pour ma part, le CommitRetaining est + rapide que le Commit. Pourquoi ? Dans cette option, les données de la base ne sont pas rafraîchies intégralement ce qui n'est pas le cas du Commit. Evidemment, l'une ou l'autre des solutions a ses avantages et ses inconvénients. Avec CommitRetaining, les opérations de validation sont bcp plus performantes mais les autres utilisateurs doivent rafraîchir les données pour voir les résultats. C'est donc un choix stratégique qui dépend du contexte dans lequel on travaille. Votre avis ? cantador |
|
|
00
|
|
|
#2 | |
![]() ![]() Claude RenouleaudDéveloppeur informatique Inscription : février 2006 Messages : 4 760 ![]() |
Salut
Citation:
Partant du principe qu'une transaction ne doit rester ouverte que le temps strictement nécessaire aux traitements sur les données. Que ce soit pour une requête Select ou une requête Action, je démarre la transaction, je traite les données, et immédiatement je commit. @+ Claudius
__________________
A la question technique que par MP/MV tu formuleras, la réponse aux oubliettes finira. |
|
|
|
00
|
|
|
#3 | |
|
Expert Confirmé Sénior
![]() ![]() Pierre Ingénieur qualité méthodes Inscription : mars 2003 Messages : 3 726 ![]() |
La seule différence entre les 2 se situe sur la libération des ressources intrinsèques dédiées à la transaction...
Citation:
Cependant, comme Cl@udius, j'évite. D'ailleurs, je m'arrange pour concevoir mes applis en ce sens. Après, c'est un autre débat.
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet) ----------------------- Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MPUsus magister est optimus |
|
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 143 ![]() |
Le CommiRetaining conserve le contexte de la transaction mais sans tenir des autres en cours..
Bien sûr, je préfèrerai faire un Commit.. Ce qui m'étonne c'est la différence incroyable de la vitesse d'exécution. Sinon pour les conséquences, il y a plus de peur que de mal... (juste un détail je suis sous Firebird 1.5.4) @bientôt |
|
|
00
|
|
|
#5 | |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
Citation:
sur des gros volume le commit retaining est le pire qui soit pour les perfs et la santé de la base
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 143 ![]() |
@makowski:
"sur des gros volume le commit retaining est le pire qui soit" Je suis très intéressé cette information. Tu évoques "des gros volumes".. Pourrais-tu m'indiquer leurs dimensions ? merci par avance |
|
|
00
|
|
|
#7 | ||
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
bah, un petit exemple simple sur des volumes pas si gros que ça :
Avec commit retain: Citation:
Citation:
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
||
|
00
|
|
|
#8 |
|
Nouveau Membre du Club
![]() Inscription : décembre 2007 Messages : 47 ![]() |
bonjour à tous
nous utilisons souvent le commit retaining dans des instructions longues,avec usage de générateur - afin d'être certain que les derniers info saisies vont être les bonnes si on les utilise dans la même instruction. Evidemment, on ferme la procédure par un commit. Est-ce une erreur de programmation ? De la meme manière, on finit l'appel à la dll dans le afterdispatch par un : if IBTransaction.Active then IBTransaction.Commit; if IBDatabase.Connected then IBDatabase.Close; Est ce une bonne méthode... on fait cela depuis des lustres mais si ca se trouve, on est dans l'erreur... Je précise qu'on developpe sous delphi 7 - avec webmodules. |
|
|
00
|
|
|
#9 | |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
Citation:
mon exemple n'est pas assez éloquant ? j'en ai d'autres comme ça des petits exemples sur la mauvaise gestion des transactions que je montre en formation.
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 143 ![]() |
@makowski :
Je souhaiterai avoir un bout de code qui a généré une partie de ses résultats: Avec CommitRetainning Sans CommitRetainning car je ne suis pas certain que les techniques soient les mêmes. (j'ai vu récemment CommitRetaining à la place de StartTransaction..) merci par avance |
|
|
00
|
|
|
#11 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
Il n'y a pas plusieures manières de faire
on ouvre une transaction et on fait un commit ou un commit retain c'est tout et ce quelque soit le type de transaction utilisée.
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#12 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 143 ![]() |
Comme çà au moins c'est clair
Reste à savoir pourquoi en ce qui me concerne, j'ai des temps de validation 10 fois + rapide avec CommitRetaining qu'avec Commit et ce sur la zone en câblage direct avec le serveur.. Evidemment pour les sites distants c'est encore pire. @+ |
|
|
00
|
|
|
#13 | |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
Citation:
je serais tout de même curieux de voir les stats de la base après une journée de fonctionnement ...
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
|
00
|
|
|
#14 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 143 ![]() |
je dis ok.
quel est le fichier que tu veux ? @+ |
|
|
00
|
|
|
#15 |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
la sortie d'un gstat -h
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
00
|
|
|
#16 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 143 ![]() |
ok, je te le transmets dès que possible.
@bientôt |
|
|
00
|
|
|
#17 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 143 ![]() |
En fait, j'ai tapé la commande complète :
gstat -h <mabase> -user sysdba -password monpassword et voilà le résultat : Database header page information: Flags 0 Checksum 12345 Generation 7564 Page size 4096 ODS version 10.1 Oldest transaction 464 Oldest active 6666 Oldest snapshot 6651 Next transaction 6773 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 Jan 14, 2008 14:05:55 Attributes Variable header data: Sweep interval: 20000 *END* le 14/01/2008 m'étonne un peu, à moins que ce ne soit la date de mon dernier backup/restore.. @+ |
|
|
00
|
|
|
#18 |
|
Membre du Club
![]() Inscription : mars 2006 Messages : 143 ![]() |
j'ai lancé cette commande sur mon poste en local après avoir recopié la base réseau en local..
|
|
|
00
|
|
|
#19 | |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
Citation:
la base était en activité ?
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
|
00
|
|
|
#20 | |
|
Expert Confirmé
![]() ![]() ![]() Philippe MakowskiConsultant spécialité Firebird Inscription : mai 2002 Messages : 2 215 ![]() |
Citation:
Next transaction 6773 soit 6772 transactions depuis cette date soit 450 transactions par jour, cette base est faiblement sollicitée Oldest transaction (OIT) 464 Oldest active (OAT) 6666 gap : 6202 ceci dit il semble bien (et ce n'est pas une surprise avec les commit retain) que la collecte des données périmées ne peut pas se faire, à force, ce gap va continuer à grossir et créer des pertes de performances, mais comme la base est peu sollicité, tu ne t'en rend pas vraiment compte ou alors seulement au bout d'un bon moment, ce qui t'amène pour corriger cela à faire un backup et un restore pour que tout rentre dans l'ordre, alors que normalement avec une base comme ça un restore qu'à chaque changement de version majeur de Firebird devrait suffire. Voilà vite fait.
__________________
Philippe Makowski IBPhoenix - Firebird Membre de l'April |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com