Bagaimanakah cara saya berkongsi sambungan MySQL merentas berbilang gorouti HTTP dalam Go?

Linda Hamilton
Lepaskan: 2024-11-10 09:56:02
asal
546 orang telah melayarinya

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

Berkongsi Sambungan MySQL dalam Go HTTP Go

Apabila bekerja dengan gorouti HTTP dalam Go, adalah penting untuk mengoptimumkan prestasi dengan berkongsi sambungan pangkalan data. Artikel ini menunjukkan cara untuk mewujudkan dan berkongsi sambungan MySQL antara berbilang pengendali HTTP.

Pengurusan Sambungan Pangkalan Data

Dalam Go, pakej pangkalan data/sql mengendalikan pengumpulan sambungan secara automatik. Apabila memanggil sql.Open(...), kolam sambungan dibuat dan bukannya sambungan tunggal. Ini bermakna pakej pangkalan data/sql akan secara automatik mendapatkan sambungan daripada kumpulan jika semua sambungan sudah digunakan.

Pelaksanaan Kod

Untuk berkongsi sambungan MySQL dalam gorouti HTTP anda, ikuti ini langkah:

  1. Mulakan Pangkalan Data Sambungan:

    • Buka kolam sambungan menggunakan sql.Open("mysql", "").

    Contoh:

    db, err := sql.Open("mysql", "root:@/mydb?charset=utf8")
    if err != nil {
        log.Fatalf("Error opening database: %v", err)
    }
    Salin selepas log masuk
  2. Konfigurasikan Pengumpulan Sambungan:

    • Laraskan bilangan maksimum sambungan melahu yang digunakan db.SetMaxIdleConns(100).
  3. Kongsi Pemegang Sambungan:

    • Isytiharkan pembolehubah db sebagai pembolehubah global untuk berkongsi antara utama dan HTTP pengendali.

    Contoh:

    var db *sql.DB
    Salin selepas log masuk
  4. Semak Sambungan Pangkalan Data:

    • Panggil db.Ping() dalam main() untuk mewujudkan sambungan awal ke pangkalan data.

    Contoh:

    err = db.Ping()
    if err != nil {
        log.Fatalf("Error opening database connection: %s", err.Error())
    }
    Salin selepas log masuk
  5. Gunakan Sambungan dalam Pengendali HTTP:

    • Dalam pengendali HTTP, gunakan pemegang db kongsi untuk melaksanakan pangkalan data pertanyaan.

    Contoh:

    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)
        }
    }
    Salin selepas log masuk

Dengan mengikuti langkah-langkah ini, anda boleh berkongsi sambungan MySQL dengan cekap merentas berbilang goroutin HTTP tanpa menjejaskan prestasi.

Atas ialah kandungan terperinci Bagaimanakah cara saya berkongsi sambungan MySQL merentas berbilang gorouti HTTP dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan