Heim  >  Artikel  >  Backend-Entwicklung  >  Wie teile ich eine MySQL-Verbindung zwischen HTTP-Goroutinen in Go?

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-18 06:14:02317Durchsuche

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

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

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

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!

Stellungnahme:
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
Vorheriger Artikel:Wie umgeht Ngrok Firewalls?Nächster Artikel:Wie umgeht Ngrok Firewalls?