Wie teile ich eine MySQL-Verbindung zwischen HTTP-Goroutinen in Go?

Mary-Kate Olsen
Freigeben: 2024-11-18 06:14:02
Original
328 Leute haben es durchsucht

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

MySQL-Verbindung zwischen HTTP-Goroutinen in Go teilen

In Go kann die gleichzeitige Verwaltung von Datenbankverbindungen etwas verwirrend sein. In diesem Artikel wird untersucht, wie Sie eine MySQL-Verbindung effektiv zwischen mehreren HTTP-Goroutinen teilen können.

Übersicht

Bei Verwendung des Datenbank-/SQL-Pakets in Go wird durch den Aufruf von sql.Open() keine Sofortverbindung hergestellt Datenbankverbindung. Stattdessen wird ein Verbindungspool erstellt, eine Sammlung von Verbindungen, die vom Paket verwaltet werden. Das Paket kümmert sich automatisch um das Pooling und öffnet bei Bedarf neue Verbindungen.

Freigabe der Verbindung

Um die Verbindung zwischen main() und HTTP-Handlern zu teilen, deklarieren Sie eine globale Datenbankvariable:

var db *sql.DB
Nach dem Login kopieren

In main() den Verbindungspool initialisieren:

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())
}
Nach dem Login kopieren

HTTP-Handler können dann auf die freigegebene Datenbank zugreifen Verbindung:

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)
    }
}
Nach dem Login kopieren

Fazit

Indem Sie diese Schritte befolgen, können Sie eine MySQL-Verbindung effektiv zwischen mehreren HTTP-Goroutinen in Go teilen und so einen effizienten Datenbankzugriff ohne unnötigen Overhead gewährleisten.

Das obige ist der detaillierte Inhalt vonWie teile ich eine MySQL-Verbindung zwischen HTTP-Goroutinen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage