Nous avons une table appelée table de travail qui a des colonnes (key
(clé primaire), ptime
, aname
, status
, content
).optimisation DB pour l'utiliser comme une file d'attente
Nous avons quelque chose appelé producteur qui met en lignes dans cette table et nous avons un consommateur qui fait une commande par la colonne key
et récupère la première ligne qui a le statut 'en attente'. Le consommateur fait un peu de traitement sur cette ligne:
-
état
- des mises à jour de « traitement »
- fait un peu de traitement en utilisant le contenu
- supprime la ligne
Nous sommes confrontés à des problèmes de contention lorsque nous essayons de exécuter plusieurs consommateurs (probablement en raison de l'ordre - par lequel effectue une analyse de table complète). L'utilisation de files d'attente avancées serait notre prochaine étape mais avant d'y aller, nous voulons vérifier quel est le débit maximum que nous pouvons atteindre avec plusieurs consommateurs et producteurs sur la table. Quelles sont les optimisations que nous pouvons faire pour obtenir les meilleurs nombres possibles?
Pouvons-nous faire un traitement en mémoire où un consommateur extrait 1000 lignes à la fois traite et supprime? Est-ce que cela va améliorer? Quelles sont les autres possibilités? partitionnement de la table? parallélisation? Indexer les tables organisées? ...