Maison > développement back-end > Golang > le corps du texte

Comment partager une connexion MySQL entre les goroutines HTTP dans Go ?

Mary-Kate Olsen
Libérer: 2024-11-18 06:14:02
original
324 Les gens l'ont consulté

How to Share a MySQL Connection Among HTTP Goroutines in Go?

Partage de la connexion MySQL entre les goroutines HTTP dans Go

Dans Go, la gestion des connexions à la base de données en simultané peut être un peu déroutante. Cet article explique comment partager efficacement une connexion MySQL entre plusieurs goroutines HTTP.

Présentation

Lors de l'utilisation du package base de données/sql dans Go, l'appel de sql.Open() n'établit pas de lien immédiat connexion à la base de données. Au lieu de cela, il crée un pool de connexions, un ensemble de connexions gérées par le package. Le package gère automatiquement le pooling, ouvrant de nouvelles connexions si nécessaire.

Partage de la connexion

Pour partager la connexion entre les gestionnaires main() et HTTP, déclarez une variable de base de données globale :

var db *sql.DB
Copier après la connexion

Dans main(), initialisez le pool de connexions :

db, err := sql.Open("mysql", "root@unix(/tmp/mysql.sock)/mydb")
if err != nil {
    log.Fatalf("Error on initializing database connection: %s", err.Error())
}

db.SetMaxIdleConns(100)

err = db.Ping() // Opens a connection if necessary
if err != nil {
    log.Fatalf("Error on opening database connection: %s", err.Error())
}
Copier après la connexion

Les gestionnaires HTTP peuvent alors accéder à la base de données partagée connexion :

func HomeHandler(w http.ResponseWriter, r *http.Request) {
    var msg string
    err := db.QueryRow("SELECT msg FROM hello WHERE page=?", "home").Scan(&msg)
    if err != nil {
        fmt.Fprintf(w, "Database Error!")
    } else {
        fmt.Fprintf(w, msg)
    }
}
Copier après la connexion

Conclusion

En suivant ces étapes, vous pouvez partager efficacement une connexion MySQL entre plusieurs goroutines HTTP dans Go, garantissant un accès efficace à la base de données sans surcharge inutile.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal