Dans une application API Web Go, il est courant d'effectuer des opérations de base de données dans diverses fonctions. Généralement, chaque fonction ouvre une connexion à la base de données, exécute les opérations souhaitées et ferme la connexion. Cependant, cette approche peut s'avérer inefficace et gaspiller des ressources.
Une approche plus efficace consiste à établir une seule connexion à la base de données au démarrage de l'application (ou à la première demande) et à la réutiliser dans toute l'application. Cela élimine le besoin d'ouvrir et de fermer les connexions plusieurs fois, réduisant ainsi la surcharge de la base de données et améliorant les performances.
Pour mettre en œuvre cette approche, vous pouvez créer une instance sql.DB une fois, soit dans la fonction init() du package, soit lorsque l'application est initialisée. Cette instance peut ensuite être transmise en paramètre aux fonctions qui doivent accéder à la base de données. Alternativement, vous pouvez faire de l'instance sql.DB une variable globale afin qu'elle soit accessible à toutes les fonctions.
Selon la documentation sql.Open() :
The returned DB is safe for concurrent use by multiple goroutines and maintains its own pool of idle connections. Thus, the Open function should be called just once. It is rarely necessary to close a DB.
Pour garantir la la connexion à la base de données est valide, vous pouvez utiliser DB.Ping() après avoir ouvert la connexion :
func init() { var err error db, err = sql.Open("yourdriver", "yourDs") if err != nil { log.Fatal("Invalid DB config:", err) } if err = db.Ping(); err != nil { log.Fatal("DB unreachable:", err) } }
En suivant cette approche, vous pouvez éviter des connexions excessives à la base de données et améliorer l'efficacité et évolutivité de votre application API Web Go.
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!