Maison >développement back-end >Golang >Comment partager une connexion MySQL sur plusieurs goroutines HTTP dans Go ?

Comment partager une connexion MySQL sur plusieurs goroutines HTTP dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-10 09:56:02574parcourir

How do I share a MySQL connection across multiple HTTP goroutines in Go?

Partage de connexions MySQL dans Go HTTP Goroutines

Lorsque vous travaillez avec des goroutines HTTP dans Go, il est essentiel d'optimiser les performances en partageant les connexions de base de données. Cet article montre comment établir et partager une connexion MySQL entre plusieurs gestionnaires HTTP.

Gestion des connexions à la base de données

Dans Go, le package base de données/sql gère automatiquement le pool de connexions. Lors de l'appel de sql.Open(...), un pool de connexions est créé plutôt qu'une seule connexion. Cela signifie que le package base de données/sql obtiendra automatiquement une connexion du pool si toutes les connexions sont déjà utilisées.

Implémentation du code

Pour partager une connexion MySQL dans vos goroutines HTTP, suivez ces étapes :

  1. Initialiser la base de données Connexion :

    • Ouvrez un pool de connexions à l'aide de sql.Open("mysql", "").

    Exemple :

    db, err := sql.Open("mysql", "root:@/mydb?charset=utf8")
    if err != nil {
        log.Fatalf("Error opening database: %v", err)
    }
  2. Configurer la connexion Pooling :

    • Ajustez le nombre maximum de connexions inactives à l'aide de db.SetMaxIdleConns(100).
  3. Partagez la connexion Handle :

    • Déclarez la variable db comme variable globale à partager entre les gestionnaires principaux et HTTP.

    Exemple :

    var db *sql.DB
  4. Vérifier la connexion à la base de données :

    • Appelez db.Ping() dans main() pour établir une première connexion au base de données.

    Exemple :

    err = db.Ping()
    if err != nil {
        log.Fatalf("Error opening database connection: %s", err.Error())
    }
  5. Utiliser la connexion dans les gestionnaires HTTP :

    • Dans le gestionnaire HTTP, utilisez le handle de base de données partagé pour exécuter la base de données requêtes.

    Exemple :

    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)
        }
    }

En suivant ces étapes, vous pouvez partager efficacement une connexion MySQL sur plusieurs goroutines HTTP sans compromettre les performances.

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!

Déclaration:
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