L'ensemble du système peut être divisé fonctionnellement en 3Bloc:
Quand la journée se termine , Chaque système d'affaires génère une grande quantité de données , Ces données sont traitées par des tâches programmées 、 Extraction dans un entrepôt de données , Pendant que tu dormais au milieu de la nuit, , Ces tâches programmées fonctionnent en silence .
Les données traitées quotidiennement doivent généralement être traitées avant les heures de travail. , Ensuite, le système d'interrogation de la plate - forme d'intelligence des données est utilisé pour l'interrogation et l'appel du système d'affaires. , Cette fois, les données n'ont pas été trouvées parce que le lendemain matin 10Point, Données non traitées . C'est le problème de l'optimisation. , Parce que normalement, , Même si la chaîne de tâches programmée est plus longue , Pas aussi lentement que le lendemain. 10 Les données de l'heure ne sont pas encore disponibles . Voilà le problème. , Et optimisé .
L'extraction des données d'un système en amont a été découverte par le Journal des tâches. 3Heures, Et la quantité de données est seulement 100(En milliers de dollars des États - Unis).Bien sûr., Il n'est pas certain que la tâche puisse être optimisée à elle seule. .
Afficher le Code de tâche , La logique est simple. : Il y a une feuille de données originale , Enregistrer les informations sur l'article et la classification définie ( C'est une fiction. , C'est plus compliqué. , Je l'ai réduit et je l'ai transformé. ,Facile à comprendre), Le tableau cible de l'entrepôt de données est de stocker la classification et les marchandises dans différents tableaux. ,La structure générale est la suivante:.
Alors pourquoi une telle conversion est - elle nécessaire? ? C'est à cause de tout le système. , En général, seules quelques spécifications de base peuvent être définies , Les spécifications de détail spécifiques ne sont pas contraignantes ,Par exemple,A Le nom du champ d'identification du système est card_no,EtB Le nom du champ d'identification du système est crdt_no( C'est quelque chose que vous devriez rencontrer plus souvent. ); Comme quand il s'agit de relations physiques. , Le traitement est différent ,1C'est exact.1La relation entre, Vous pouvez créer deux associations de tables , Vous pouvez également stocker toutes les tables , Cela crée une incohérence dans plusieurs systèmes , Et c'est inévitable. , Parce que du point de vue du système d'affaires, , Assure le bon fonctionnement du système .
Lorsque l'entrepôt de données traite plusieurs données brutes, il doit tenir compte de la compatibilité. , Ainsi, le processus de conversion ci - dessus se produit. .
Et cette tâche 3 Heures en raison d'un enregistrement dans le tableau original , Sera converti en trois tableaux dans le tableau des entrepôts , Et ces trois tableaux passent idAssocier, L'ensemble du processus de code est le suivant: .
Mais la question se pose. ,100Les données de Wan,Il s'est enfui3Heures, Puis j'ai commencé à essayer d'optimiser le processus d'exécution du programme , Commençons par les points suivants.
Optimisé, Amélioration de l'efficacité , Mais ce n'est pas évident. ( Il y a peut - être des camarades de classe. , C'est très basique. , Pourquoi commencer? ? Toux...C'est ça., Pour des raisons historiques. , Il n'y a peut - être pas beaucoup de données au début , Quel que soit le mode d'exécution , C'est pas si différent. ,Comme l'exécution10 Minutes et exécution 20Minutes,Apparemment.2 Double efficacité d'exécution , Mais comme il n'y a pas d'impact sur le système d'affaires , Et fonctionne toujours normalement , Je ne vois pas le problème. ).
Ici, les données doivent être associées , Donc nous devons insérer des données et obtenir l'auto - croissance de cet enregistrement id, Puis insérer dans la table associée , Et la structure de la table est presque impossible à déplacer ( La structure de la montre a bougé. , Le lendemain, on m'appellera pour le thé. ).
Alors commençons par analyser pourquoi il est si lent ici. .
La première pensée est l'insertion par lots , L'insertion par lots réduit efficacement le nombre d'accès à la base de données . Mais l'insertion par lots n'est pas possible ici parce que l'auto - croissance est nécessaire id, J'ai l'impression d'avoir des ennuis. .
Cette nuit - là, après le sport d'hier soir, , Laisse tomber tes soucis. , Je me sens à l'aise. .
Tout à coup., La tête brille. , Auto - croissance de la base de données id Est une valeur numérique contrôlée par la base de données , Et nous connaissons les étapes de l'auto - croissance , Par exemple, l'auto - croissance 1, Auto - croissance actuelle idPour1Et si, C'est sûr. , Auto - croissance du prochain record idC'est tout.2,Et ainsi de suite..
Puis - je insérer un enregistrement , Obtenir de la croissance id, Ensuite, vous pouvez calculer l'auto - croissance de toutes les données id, Au lieu d'avoir besoin de chaque enregistrement pour la croissance idC'est.
Mais il y a aussi un problème. , Dans le processus d'importation de données transformées , Aucun autre programme ne peut insérer de données dans le tableau , Sinon, le programme calculera l'auto - croissance idÇa ne correspond pas.. Et ce problème n'existe pas. , Parce que les données de l'entrepôt sont insérées par le calcul du tableau original , Il n'y a pas d'autres tâches pour écrire ce tableau en même temps , Alors nous pouvons être assurés d'un travail audacieux .
L'or, trois, l'argent et quatre sont là.,Un petit avantage.!