2016-08-27 2 views
0

J'ai créé une API Web personnalisée pour envoyer des données à un serveur MYSQL pour mon application Java. Dans mon application Java, j'ai besoin d'ajouter/mettre à jour 200 lignes, et je l'ai déjà fait en faisant ces demandes une à la fois.Java plusieurs connexions au serveur API avec des threads

  1. Cela peut prendre beaucoup de temps assez long, donc je peux créer des threads pour tous de ces différentes connexions?
  2. Dois-je limiter le nombre de connexions maximales effectuées à la fois? Peut-être comme 10 à la fois?
  3. Cela peut-il causer des problèmes avec mysql en ajoutant éventuellement des lignes exactement au même moment? (No 2 lignes ne jamais nécessaires pour être changé en un seul point dans le temps)

Répondre

1

enregistre Insertion dans plusieurs connexions accéléreront potentiellement les 200 inserts, mais vous pouvez seulement savoir avec certitude par essai et de mesure après l'introduction de plusieurs threads. Je vais également suggérer d'essayer JDBC par lots et d'envoyer tous les 200 inserts à la base de données en une seule fois (si cela est possible dans votre implémentation), car cela pourrait améliorer les performances en sauvegardant les allers-retours à la base de données.

Pour créer un pool de connexions, consultez HikariCP, qui est une implémentation de pool de connexions JDBC. Il vous permettra de spécifier les connexions simultanées min/max avec d'autres paramètres. Vos threads de travail peuvent ensuite demander des connexions au pool et effectuer les insertions.

L'insertion simultanée de plusieurs enregistrements peut présenter des problèmes au niveau mySQL s'il acquiert un verrou de table pour chaque insertion. Dans ce cas, vous n'obtiendrez pas une amélioration de la vitesse avec plusieurs threads et vous aurez peut-être besoin d'un réglage au niveau de la base de données pour contourner ce problème. Voici un bon article qui devrait vous aider: High rate insertion with mySQL