Interroger l'utilisation de la base de données / sql significativement plus lente que de remettre en question la base de données directement
malgré l'utilisation de requêtes identiques, il existe une discrétion de performances notable entre l'exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'un exécution d'une Interroger directement à l'aide de l'utilitaire PSQL de Postgres et à l'aide du package de base de données / SQL dans une application Go. Cette divergence, où les requêtes qui prennent des millisecondes dans PSQL prennent des dizaines de millisecondes en Go, pourraient être attribuées à des facteurs spécifiques dans l'implémentation.
Comprendre les connexions de base de données / sql
La base de données / SQL initialise un pool de connexions pour établir des connexions à la base de données, plutôt que de créer une connexion unique. Le retard initial dans l'exécution de la requête dans la base de données / SQL est dû au pool commence par des connexions ouvertes zéro. La première requête doit établir une connexion au serveur avant d'exécuter l'instruction SQL.
Les requêtes suivantes font également des retards face à la connexion de la première requête n'ont pas été remis au pool. Cela signifie que chaque requête ultérieure doit créer une nouvelle connexion avant d'exécuter la requête.
relâcher les connexions au pool
pour résoudre l'écart de performance, assurer que les connexions sont relâchés à la piscine après chaque requête. La libération d'une connexion consiste à conserver la valeur de retour principale de DB.Query et à appeler par la suite la méthode de fermeture. Délai initial, appelez un ping dans le pool de connexion immédiatement après l'initialisation. Cela garantit qu'au moins une connexion est disponible dans le pool.
instructions préparées
Bien que les requêtes simples sans arguments soient exécutées comme prévu, les requêtes avec des arguments dans la base de données / sql Créez et exécutez des instructions préparées sous le capot. Les instructions préparées offrent des avantages de performance lors de l'exécution de la même requête plusieurs fois avec des arguments différents.
adressant une latence supplémentaire
Outre la gestion de la connexion et les instructions préparées, il peut y avoir des facteurs de latence supplémentaires Pour considérer:
latence du réseau:
le délai causé par le transfert de données sur le réseau entre l'application et la base de données.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3