Avantages et inconvénients de l'utilisation de procédures stockées dans la base de données

Je n'ai pas fait de projet de serveur depuis de nombreuses années. Récemment, plusieurs projets sont liés au serveur et de nombreux problèmes liés aux performances sont apparus. L'un des projets implique une telle entreprise. Sortez-le et partagez-le avec tout le monde.

1. Contexte

Le processus commercial du produit est généralement le suivant: glisser la carte d'identité pour une vérification excessive, l'extrémité du périphérique génère un identifiant d'enregistrement de vérification excessive, et les informations de texte de la carte d'identité et les informations d'image de la carte d'identité doivent être téléchargées sur le serveur S1 et le serveur d'image S2, respectivement, où les informations d'image de la carte d'identité dans la base de données du serveur L'URL de la photo d'identité sur le service photo S2 est enregistrée.
Si les informations de texte obligatoires sont téléchargées avec succès sur le serveur S1, puis l'image de la carte d'identité est téléchargée, cela affectera inévitablement le temps de téléchargement de l'image. Si cette limite obligatoire n'est pas imposée, l'URL de l'image téléchargée et le temps de stockage des informations textuelles ne peuvent pas être déterminés successivement. Il est impossible de déterminer si les données url et les informations textuelles sont exécutées dans la base de données du serveur par insertion ou mise à jour. À ce stade, il est nécessaire de traiter l'échec de l'insertion, puis de redémarrer Pour les opérations de mise à jour, vous pouvez envisager d'utiliser des procédures stockées à ce stade.
Sur la question de l'utilisation des procédures stockées, discutez avec la R & D côté serveur pour décider d'utiliser des procédures stockées, nous devons donc comprendre les avantages et les inconvénients des procédures stockées.

2. Avantages

1. Vitesse d'exécution: pour un SQL très simple, la procédure stockée n'a aucun avantage. Pour une logique métier complexe, car la base de données a été analysée et optimisée une fois lors de la création de la procédure stockée. Une fois la procédure stockée exécutée, une copie de la procédure stockée sera conservée en mémoire, de sorte que la prochaine fois que la même procédure stockée sera exécutée, elle pourra être directement appelée depuis la mémoire, de sorte que la vitesse d'exécution sera plus rapide que le SQL ordinaire.    
2. Réduisez la transmission réseau: le processus de stockage s'exécute directement sur le serveur de base de données, tous les accès aux données sont effectués à l'intérieur du serveur de base de données, il n'est pas nécessaire de transférer les données vers d'autres serveurs, ce qui réduira certaines transmissions réseau.
3. Facilité de maintenance: les procédures stockées sont parfois plus faciles à gérer que les programmes, car les procédures stockées côté DB peuvent être mises à jour en temps réel. Certains bogues modifient directement la logique métier dans la procédure stockée sans modifier le code du terminal. 
4. Sécurité renforcée: améliorez la sécurité du code et empêchez l'injection SQL. Cette instruction SQL peut également être effectuée.
5. Évolutivité: les opérations d'application et de base de données sont séparées et exécutées indépendamment au lieu d'être ensemble. Facilitez l'expansion future et l'optimisation de la maintenance DBA.

3. Inconvénients

1. SQL lui-même est un langage de requête structuré, mais il n'est pas orienté objet. Il s'agit essentiellement d'un langage procédural. Face à une logique métier complexe, le traitement procédural sera difficile. Dans le même temps, SQL est bon pour la requête de données plutôt que pour le traitement de la logique métier. Si vous mettez toute la logique métier dans des procédures stockées, cela viole ce principe.
2. Si vous devez modifier les paramètres de la procédure stockée d'entrée ou si vous souhaitez modifier les données renvoyées par celle-ci, vous devez toujours mettre à jour le code dans l'assembly pour ajouter des paramètres, mettre à jour les appels, etc., ce qui est probablement plus lourd à l'heure actuelle.
3. Le développement et le débogage sont compliqués En raison de problèmes IDE, le développement et le débogage de procédures stockées sont plus difficiles que les procédures générales, mais ce n'est pas un problème pour la R & D avec des compétences en base de données. 4. Il n'y a aucun moyen d'appliquer le cache. Bien qu'il existe des méthodes telles que les tables temporaires globales qui peuvent être utilisées pour la mise en cache, elles augmentent également la charge de la base de données. Si la simultanéité du cache est sévère et que des verrous sont souvent requis, l'efficacité est vraiment inquiétante.
5. Ne prend pas en charge le clustering, le serveur de base de données ne peut pas être développé horizontalement ou la base de données est coupée (coupe horizontale ou verticale). Une fois la base de données coupée, le processus de stockage n'est pas clair dans quelle base de données les données sont stockées.


IV. Résumé

1. Une utilisation appropriée des procédures stockées peut améliorer les performances du serveur.
2. Les procédures stockées ne doivent pas être utilisées à grande échelle et les administrateurs de base de données doivent être équilibrés lors de la conception et de la maintenance des bases de données.
3. Avec l'émergence de nombreux ORM, de nombreux avantages des procédures stockées ne sont pas évidents.
4. Combiné à l'activité réelle du projet, il n'est pas recommandé d'utiliser des procédures stockées pour des opérations de base de données simples avec une logique métier. La complexité nécessite des données en temps réel élevées. Vous pouvez envisager l'optimisation de la conception à partir des déclencheurs de procédure stockée.

Enfin, revenons à notre activité de projet. Qu'il soit utilisé ou non doit être combiné avec si le client a des exigences élevées sur la nature en temps réel des informations d'image de la carte d'identité. Enfin, confirmez avec le chef de produit du projet que les informations sur l'image de la carte d'identité peuvent être retardées lors du téléchargement hors ligne, puis le processus de stockage peut être complètement éliminé.

发布了142 篇原创文章 · 获赞 258 · 访问量 16万+

Je suppose que tu aimes

Origine blog.csdn.net/conconbenben/article/details/103655760
conseillé
Classement