Cela dépend du type de travail que vos threads vont faire. Par exemple, j'exécute généralement un seul SELECT pour un type de jeu de données volumineux, j'ajoute des tâches à la file d'attente de tâches sécurisées et je soumets des travailleurs qui sélectionnent la tâche appropriée de la file à traiter. J'écris habituellement à DB sans synchronisation, mais cela dépend de la taille de l'unité de travail, et des contraintes DB (comme les clés uniques, etc.). Fonctionne comme le charme. Une autre méthode consisterait simplement à exécuter plusieurs threads et à les laisser travailler seuls. Je déconseille fortement l'utilisation de certaines LIMITES fantaisistes, OFFSET cependant. DB a encore besoin de récupérer plus de lignes de données que de retour de requête.
EDIT: Comme vous avez ajouté un commentaire que vous avez les mêmes données, que oui, ma solution est ce que vous cherchez
- Get ensemble de données par simple requête
- Ajouter des données à la file d'attente
- Déjeuner vos discussions (par des exécuteurs ou de nouveaux fils)
- Choisissez les données de la file d'attente et le traiter.
Ces données proviennent-elles de différentes requêtes? – fge
Pourquoi pensez-vous que le multithreading est une bonne solution à ce problème? L'impression des données est le point le moins susceptible d'être le goulot d'étranglement. – Aurand
C'est une sorte de mission pour moi. –