|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre actif
![]() christian Développeur indépendant Inscription : août 2004 Messages : 251 ![]() |
* 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 * |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : février 2005 Messages : 349 ![]() |
bonjour.
Les tables ne serait elle pas en innodb par hasard?
__________________
La connaissance s'accroit lorsqu'on la partage. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
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
|
|
|
00
|
|
|
#4 |
|
Membre actif
![]() christian Développeur indépendant Inscription : août 2004 Messages : 251 ![]() |
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? |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 843 ![]() |
non la propagation est relativement immédiate normalement teste en faisant des commit carrément pour voir si ça corrige
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com