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
Libérer: 2024-11-10 09:56:02
original
573 Les gens l'ont consulté

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)
    }
    Copier après la connexion
  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
    Copier après la connexion
  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())
    }
    Copier après la connexion
  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)
        }
    }
    Copier après la connexion

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!

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