Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels MySQL
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 19/04/2011, 19h27   #1
Membre actif
 
christian
Développeur indépendant
Inscription : août 2004
Messages : 251
Détails du profil
Informations personnelles :
Nom : christian
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Développeur indépendant
Secteur : Transports

Informations forums :
Inscription : août 2004
Messages : 251
Points : 184
Points : 184
Par défaut effet de bord connexion multiples

* Bonjour, *

j'ai plusieurs threads dans un programme C++ qui accèdent simultanément à la même base de données via l'appel à des connexions séparées.

le petit effet de bord qui survient quelque fois, c'est que si un thread mets à jour une donnée ou crée un nouvel enregistrement,
un autre thread n'a pas forcement accès à la donnée actualisée ou insérée.

j'ai l'impression qu'il faut remettre à jour la connexion.
pour un problème de temps de connexion en requêtes multiples, les connexions restent établies dans le temps.

est-ce qu'un flush ou autre pourrait forcer la connexion à prendre en compte les changements intervenus , est-ce que ça peut être un problème de cache de la base de données ou quelque chose d'approchant.?

une solution pour résoudre ça sans avoir à réinitialiser la connexion à la base de données.?

* Merci *
eomer212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 17h29   #2
Membre éclairé
 
Inscription : février 2005
Messages : 349
Détails du profil
Informations personnelles :
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 349
Points : 358
Points : 358
bonjour.

Les tables ne serait elle pas en innodb par hasard?
__________________
La connaissance s'accroit lorsqu'on la partage.
overider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 18h02   #3
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 843
Points : 1 318
Points : 1 318
Salut oui ça doit certainement venir de ça à priori...

En myisam, tes transactions sont en auto commit forcé vu qu'il n'y a pas de gestion du mode transactionnel donc le moindre changement est directement visible.

En innodb, il y a gestion transactionnelle donc il faut faire un commit pour que les changements soient pris en compte... En gros, quand tu fais des insert, delete, update ils sont annulable jusqu'au commit et donc stockés en attente de validation définitive (commit). Par contre, dans ta session les changements sont visibles et il me semble qu'il y a un auto commit lors de la déconnexion de la session, ce qui explique que ça mets à jour les autres sessions...

une solution est de configurer ton serveur ou les sessions en auto commit ou de penser à faire un commit à chaque fin de série de mises à jour que tu fais

ericd69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 01h43   #4
Membre actif
 
christian
Développeur indépendant
Inscription : août 2004
Messages : 251
Détails du profil
Informations personnelles :
Nom : christian
Âge : 43
Localisation : France

Informations professionnelles :
Activité : Développeur indépendant
Secteur : Transports

Informations forums :
Inscription : août 2004
Messages : 251
Points : 184
Points : 184
Par défaut autocommit

je l'avais pas précisé mais en effet, c'est de l'innodb. bien deviné!
le plus bizarre c'est que justement, tous mes appels de fonctions sont par defaut en autocommit, à moins que la fonction le precise pour la gestion de transactions par exemple, ce qui n'est pas le cas ici.
ou alors il faut un délai pour la propagation de l'info entre les connexions?
eomer212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 02h16   #5
Membre Expert
 
Homme Eric Dureuil
Développeur informatique
Inscription : avril 2011
Messages : 843
Détails du profil
Informations personnelles :
Nom : Homme Eric Dureuil
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : avril 2011
Messages : 843
Points : 1 318
Points : 1 318
non la propagation est relativement immédiate normalement teste en faisant des commit carrément pour voir si ça corrige
ericd69 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 10h08.


 
 
 
 
Partenaires

Hébergement Web