Maison  >  Article  >  développement back-end  >  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

藏色散人
藏色散人avant
2020-11-18 15:10:494969parcourir

Recommandé : "Tutoriel vidéo PHP"

Idées de sous-tableaux MySQL


Une par 1. La table de commande 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, les tables peuvent. être divisé en fonction des régions. Un middleware pour contrôler quelle table aller pour trouver les données souhaitées.
Middleware : Utiliser l'ID 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 千万级数据处理

. Il y a un problème avec cette modification, la table principale Il y aura des incohérences avec les données du sous-tableau. Comment rendre cohérentes les données du tableau principal et du sous-tableau ?

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 modifiées et stockées dans le file d'attente redis

PHP 结合 MySQL 千万级数据处理

Ensuite, la tâche planifiée Linux (contble) exécute l'instruction sql dans la file d'attente redis en boucle et met à jour le contenu de la table principale de manière synchrone

PHP 结合 MySQL 千万级数据处理

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

La requête doit uniquement interroger la sous-table, n'interrogez pas la table principale

PHP 结合 MySQL 千万级数据处理

Supprimer, recherchez d'abord l'objet en fonction de l'identifiant Supprimez la sous-table, puis supprimez-la, puis envoyez une instruction SQL pour supprimer le total des données de la table dans la file d'attente des messages
puis exécutez une tâche planifiée pour supprimer les données totales de la table

PHP 结合 MySQL 千万级数据处理

Tâche planifiée :

PHP 结合 MySQL 千万级数据处理

Base de données de branche distribuée MySQL

Idée de base de données divisée

PHP 结合 MySQL 千万级数据处理

Schéma de la sous-bibliothèque :

PHP 结合 MySQL 千万级数据处理

PHP 结合 MySQL 千万级数据处理

Base de données de branche distribuée MySQL (augmentée)

PHP 结合 MySQL 千万级数据处理
Remarque : après avoir exploité une base de données, vous devez fermer la connexion à la base de données, sinon MySQL pensera qu'elle est toujours connectée La même base de données

prend toujours 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é)

Le principe est similaire à la nouvelle base de données de branche distribuée

PHP 结合 MySQL 千万级数据处理

mysql (vérifier, supprimer)

Le principe est similaire

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

PHP 结合 MySQL 千万级数据处理
File d'attente d'exécution

Cache distribué MySQL ( memcache)

Mettez les données dans le cache pour économiser la surcharge de la base de données. Vérifiez-les d'abord dans le cache. Si elles sont trouvées, supprimez-les directement. Sinon, vérifiez-les dans la base de données. le cache

PHP 结合 MySQL 千万级数据处理

Vous devez supprimer le cache après avoir modifié les informations, sinon les données mises en cache seront lues à la place des 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer