PHP MySQLLa colonne explique comment réaliser des dizaines de millions de traitements de données
Recommandé (gratuit) : PHP MySQL
idée de sous-table MySQL
Une table de commandes de 100 millions peut être divisée en cinq tables, de sorte que chaque table ne contienne que 20 millions de données, partageant la pression de la table d'origine. Les sous-tables doivent être divisées selon certaines conditions. Ici, vous pouvez les diviser selon Pour diviser les tableaux par région, un middleware est nécessaire pour contrôler à quel tableau accéder pour trouver les données souhaitées.
Middleware : Utiliser l'identifiant auto-incrémenté de la table principale comme middleware (quels champs conviennent au middleware ? Il doit être unique)
Comment distribuer ? Après l'insertion dans la table principale, un identifiant est renvoyé et le modulo est pris en fonction de cet identifiant et du nombre de tables. Les données sont insérées dans la table dans laquelle se trouve le reste.
Remarque : L'identifiant de la sous-table doit être cohérent avec l'identifiant de la table principale
À l'avenir, seules les opérations d'insertion utiliseront la table principale, la modification, la suppression et la lecture n'auront pas besoin d'utiliser le table principale
file d'attente de messages redis
1.
Conteneur de sauvegarde des messages lors de la propagation des messages
2. Raisons historiques de la création de files d'attente de messages
Caractéristiques des files d'attente de messages : premier entré, premier sorti
Les instructions SQL exécutées sont d'abord enregistrées dans la file d'attente des messages, puis insérées séquentiellement dans la base de données de manière fluide et asynchrone
Application : Sina, placez d'abord les commentaires instantanés dans la file d'attente des messages, puis insérez les instructions SQL dans le message. file d'attente séquentiellement à travers les tâches planifiées. Accédez à la base de données
Modifier
Sous-tableau des opérations pour modifier
.
Modifier comme ceci Il y a un problème. Les données de la table principale et de la sous-table seront incohérentes. Comment rendre cohérentes les données de la table principale et de la sous-table ?
La file d'attente Redis maintient la cohérence des données de la table principale et des sous-tables
Une fois la modification terminée, les données de la table principale seront être modifié et stocké dans la file d'attente Redis
Ensuite, la tâche planifiée Linux (contble) boucle pour exécuter l'instruction SQL dans la file d'attente Redis et met à jour de manière synchrone le contenu de la table principale
Sous-table distribuée MySQL (requête, suppression)
La requête doit uniquement interroger le sous-table, pas la table principale
Pour supprimer, recherchez d'abord la sous-table à supprimer en fonction de l'ID, puis supprimez-la, puis envoyez une instruction SQL pour supprimer les données de la table maître dans la file d'attente des messages
puis exécuter une tâche planifiée pour supprimer les données de la table maître
Tâches planifiées :
Sous-bibliothèque distribuée MySQL
Schéma de la sous-bibliothèque :
Bibliothèque de branches distribuées MySQL (augmentée)
Remarque : après une opération, la base de données doit fermer la connexion à la base de données, sinon mysql pensera que c'est la même base de données à laquelle il a été connecté
ou prendra le module pour déterminer quel fichier de configuration charger et se connecter à quelle base de données
Bibliothèque de branches distribuées MySQL (modifiée)
Le principe est le même que la nouvelle
Base de données de branches distribuées MySQL (vérifier, supprimer)
Le principe est similaire
Supprimer
File d'attente d'exécution
Application de cache distribué MySQL (memcache)
Mettre les données dans le cache pour économiser la surcharge de la base de données. Allez d'abord dans le cache pour vérifier, s'il y en a un, supprimez-le directement. Sinon, allez dans la base de données pour vérifier, puis stockez-le dans le cache
<.>
Après avoir modifié les informations, vous devez supprimer le cache, sinon il continuera à lire. Il s'agit de données mises en cache plutôt que de données modifiées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!