Maison > Les sujets > phpmysql > PHP combiné à MySQL réalise des dizaines de millions de traitements de données

PHP combiné à MySQL réalise des dizaines de millions de traitements de données

coldplay.xixi
Libérer: 2020-12-22 17:55:20
avant
4029 Les gens l'ont consulté

PHP MySQLLa colonne explique comment réaliser des dizaines de millions de traitements de données

PHP combiné à MySQL réalise 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

PHP 结合 MySQL 千万级数据处理

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

PHP 结合 MySQL 千万级数据处理

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

PHP 结合 MySQL 千万级数据处理.

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

PHP 结合 MySQL 千万级数据处理

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

PHP 结合 MySQL 千万级数据处理

Sous-table distribuée MySQL (requête, suppression)

La requête doit uniquement interroger le sous-table, pas la table principale

PHP 结合 MySQL 千万级数据处理

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

PHP 结合 MySQL 千万级数据处理

Tâches planifiées :

PHP 结合 MySQL 千万级数据处理

Sous-bibliothèque distribuée MySQL

Idées de sous-bibliothèques

PHP 结合 MySQL 千万级数据处理

Schéma de la sous-bibliothèque :

PHP 结合 MySQL 千万级数据处理

PHP 结合 MySQL 千万级数据处理

Bibliothèque de branches distribuées MySQL (augmentée)

PHP 结合 MySQL 千万级数据处理
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

PHP 结合 MySQL 千万级数据处理

Bibliothèque de branches distribuées MySQL (modifiée)

Le principe est le même que la nouvelle

PHP 结合 MySQL 千万级数据处理

Base de données de branches distribuées MySQL (vérifier, supprimer)

Le principe est similaire

PHP 结合 MySQL 千万级数据处理
Supprimer

PHP 结合 MySQL 千万级数据处理
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

PHP 结合 MySQL 千万级数据处理<.>

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

PHP 结合 MySQL 千万级数据处理.

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!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal