bonjour,
j'utilise le J/connector pour me connecter a un base mysql.
Ayant plusieurs threads qui pourraient effectuer des requêtes à ma DB simultanément, dois je les synchroniser?
merci
Version imprimable
bonjour,
j'utilise le J/connector pour me connecter a un base mysql.
Ayant plusieurs threads qui pourraient effectuer des requêtes à ma DB simultanément, dois je les synchroniser?
merci
Pas nécessairement. Normalement, c'est la base de données qui devra gérer les accès simultanées. Par contre, tu risques d'avoir à gérer plusieurs cas qui peuvent arriver losqu'on accède de manière simultanée aux mêmes données.
Si tes threads n'accèdent pas en même temps aux même tables, tu n'auras pas de problèmes, mais dès le moment ou ils accèdent aux mêmes données, ça devient plus difficile à gérer. Soit tu synchronises tes threads pour qu'ils n'accèdent pas en même temps aux mêmes données, mais sur un système utilisateur, ça peut vite être très lourd au niveau des performances.
Sinon, tu peux implémenter des techniques permettant de vérifier qu'un tel cas n'est pas apparu, comme le pessimist ou optimist locking ou encore l'implémenter au niveau de la base de données avec des verrous et des niveaux d'isolation customisées, mais c'est différent pour chaque type de base de données.
merci beaucoup pour ta réponse,
étant donné que j'ai plusieurs accès a la même base de données, je vais synchronisé mes threads.
Cela me semble compliquer mais je regarderaiCitation:
Sinon, tu peux implémenter des techniques permettant de vérifier qu'un tel cas n'est pas apparu, comme le pessimist ou optimist locking ou encore l'implémenter au niveau de la base de données avec des verrous et des niveaux d'isolation customisées, mais c'est différent pour chaque type de base de données.
Tes threads utilisent la même connexion ?
Si oui, il faut synchroniser, si non, chaque Thread ayant sa propre connexion, inutile de synchroniser.
mes threads utilisent la même base de données qui elles même a plusieurs tables, et si j'ai bien compris je dois synchroniser entre eux tout les threads qui accèdent à la même table?
ps: j'ai aussi j'utilise aussi une connexion par socket dont les I/O se font par Buffer, j'ai aussi plusieur threads qui pourraient envoyer en même temps je dois aussi les synchroniser? (je pense que non)
merci
Le fait d'accéder à la même base ne pose pas de problème en soit, la question est : utilises-tu la même connexion pour y accéder ?
Comme dit précédemment, si chaque Thread a sa propre connexion, il n'y a pas de problème. Tu peux gérer les verrouillages par le niveau d'isolation et transaction.
ok merci c'est plus clair, en effet j'utilise la même connexion pour tout mes threads ainsi je synchroniserai la connexion.