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 25/04/2003, 15h57   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2003
Messages : 33
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 33
Points : 10
Points : 10
Envoyer un message via ICQ à nawac Envoyer un message via AIM à nawac Envoyer un message via MSN à nawac
Par défaut [resolu][JDBC][connexion persistante] performances avec JDBC

Bonjour à tous,

J'ai remplacé il y a peu ma base de données MySQL par une base Interbase, pour une appli JAVA (accès JDBC pr les deux). Le problème, c'est que là ou mysql 'mangeais' 10 pages de sql en 10secondes, avec Interbase, c'est plutôt 10 pages pour 10 jours...

Ce qu'il se passe, c'est que j'envoyer des instructions SQL par gros paquets (1 'create' et 300 000 'insert' derrière, en l'occurence)

Y-a-t-il des moyens de connexion qui me permettraient d'améliorer ses perfs (plutôt minables vis-à-vis de mysql) ???

J'imagine que ça ne sera jamais plus rapide qu'avec mysql, vu que ça passe par une appli intermédiaire (interserver), mais bon, je m'en remet à vous...
nawac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2003, 16h23   #2
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Bon je me lance mais je ne te promet rien.......

MySQL est une base assez lite : quand je dit lite ca veux dire qu'il lui manque plein de truc pour être un vrai SGBD. Mais cet incovéniant est heureusement (et c'était le but à la base...) comblé par une simplicité d'utilisation et des performances en terme de vitesse tres interressantes...
Bon notamment MySQL n'a par exemple pas du tout la notion de transaction.
....
ne t'impatiente pas voilà ou je veux en venir.... Interbase est un SGBD transactionnel donc quoi que tu fasses est forcément dans une transaction...
Pour rappel une transaction sous Interbase c'est comme si tu prennais à un instant T (le debut de la transaction) une photo de ta base...tu peux lire, ecrire, insérer dans cette photo et tout ca ne prendra effet que lorsque tu validera ta transaction (Commit ou CommitRetaining) mais tu peux annuler également toutes les modifications que tu a faites depuis le début de ta transaction (RollBack, ou RollBackRetaining).

Bon comment fait il ??? en simplifiant ... Interbase va se gérer une log dans lequel il va mettre toutes les modifs que tu lui as demandé. Si tu fait un commit il Ecrit réellement ces modif...

Donc voilà ce qui explique peut être pourquoi 300000 insert peuvent mettre un peut de temps à s'exécuter lors du commit....

Si ca vient bien de là
il y a deux solutions :
1-Modifier le paramètrage d'Interbase pour qu'il utilise un maximum la RAM à la place du disque..

2-Sinon je te suggère dans ta boucle des 300000 insert de faire des CommitRetaining (tous les 100 ou 1000 par exemple).

Voilà c'est ce que j'essayerai de faire mais je ne te garantie rien....
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2003, 16h58   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2003
Messages : 33
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 33
Points : 10
Points : 10
Envoyer un message via ICQ à nawac Envoyer un message via AIM à nawac Envoyer un message via MSN à nawac
Merci, ça me donne de l'inspiration pour continuer, mais ça me fait aussi penser que je ne donne jamais de commit, par JDBC, et ma base se génère qd même ! !
PS : Ca fait quoi exactement 'CommitRetaining', par rapport à un simple 'commit' ???
nawac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/04/2003, 17h14   #4
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
En fait par defaut (sur fermeture) tu as un Commit. Ce qui explique pourquoi tu n'as jamais eut besoin d'en faire.

Commit; Valide la transaction et la ferme (donc ca ferme ton accés... tu es obligé de la réouvrir (ce qui provoque un BeginTransaction)).

CommintRetaining va valider les modifications mais ne vas pas fermer la transaction (donc tu peux continuer à travailler dedans)....
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2003, 10h19   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2003
Messages : 33
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 33
Points : 10
Points : 10
Envoyer un message via ICQ à nawac Envoyer un message via AIM à nawac Envoyer un message via MSN à nawac
GENIAL ! !
Maintenant, j'ouvre ma connexion au lancement de mon appli, et je ferme quand je quitte : c'est ultra rapide !
Merci beaucoup Barbibulle, vraiment.

Par contre, j'ai une question, plus à titre préventif qu'autre chose : ma connexion distante n'a pas de durée de vie limitée ?? Si je ne fais pas de connexion pendant un certain laps de temp, elle ne risque pas de se fermer toute seule (j'ai cherché, impossible de trouver de la doc là-dessu...) ???
nawac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2003, 10h19   #6
Candidat au titre de Membre du Club
 
Inscription : avril 2003
Messages : 33
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 33
Points : 10
Points : 10
Envoyer un message via ICQ à nawac Envoyer un message via AIM à nawac Envoyer un message via MSN à nawac
GENIAL ! !
Maintenant, j'ouvre ma connexion au lancement de mon appli, et je ferme quand je quitte : c'est ultra rapide !
Merci beaucoup Barbibulle, vraiment.

Par contre, j'ai une question, plus à titre préventif qu'autre chose : ma connexion distante n'a pas de durée de vie limitée ?? Si je ne fais pas de connexion pendant un certain laps de temp, elle ne risque pas de se fermer toute seule (j'ai cherché, impossible de trouver de la doc là-dessus...) ???
nawac est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2003, 10h37   #7
Membre Expert
 
Avatar de Barbibulle
 
Frédéric
Inscription : octobre 2002
Messages : 1 722
Détails du profil
Informations personnelles :
Nom : Frédéric
Âge : 42

Informations forums :
Inscription : octobre 2002
Messages : 1 722
Points : 2 025
Points : 2 025
Contant que tu ais réussi à t en sortir.

Pour le temps de connexion :
C'est une bonne question, mais il ne me semble pas qu'il y ait de limite dans le temps de ta connexion...

Peux tu mettre le tag [Résolu] dans le titre merci.
Barbibulle est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h42.


 
 
 
 
Partenaires

Hébergement Web