Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengkonfigurasi kolam sambungan untuk sambungan pangkalan data Golang?

Bagaimana untuk mengkonfigurasi kolam sambungan untuk sambungan pangkalan data Golang?

王林
王林asal
2024-06-06 11:21:00937semak imbas

Bagaimana untuk mengkonfigurasi kumpulan sambungan untuk sambungan pangkalan data Go? Buat sambungan pangkalan data menggunakan jenis DB dalam pakej pangkalan data/sql tetapkan MaxOpenConns untuk mengawal bilangan maksimum sambungan serentak;

如何为 Golang 数据库连接配置连接池?

Bagaimana untuk mengkonfigurasi kumpulan sambungan untuk sambungan pangkalan data Go?

Preface
Apabila menulis program Go yang melibatkan operasi pangkalan data, pengumpulan sambungan ialah teknik yang berkesan untuk mengoptimumkan pengurusan sambungan dan meningkatkan prestasi aplikasi. Ia mengurangkan overhed untuk mewujudkan sambungan baharu dengan mencipta dan mengurus sambungan pangkalan data terlebih dahulu.

Pelaksanaan kumpulan sambungan
Go menyediakan pakej asli pangkalan data/sql, yang mengandungi jenis DB, yang menyediakan fungsi kumpulan sambungan. Anda boleh mengkonfigurasi kumpulan sambungan untuk objek DB melalui langkah berikut: database/sql,其中包含 DB 类型,它提供了连接池功能。可以通过以下步骤为 DB 对象配置连接池:

代码示例:

package main

import (
    "database/sql"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // 连接字符串
    connectionString := "user:password@tcp(host:port)/database"

    // 打开数据库连接,配置连接池
    db, err := sql.Open("mysql", connectionString)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // 设置最大并发连接数
    db.SetMaxOpenConns(10)

    // 设置最大空闲连接数
    db.SetMaxIdleConns(5)

    // 设置最大连接生命周期
    db.SetConnMaxLifetime(time.Minute * 5)
}

实战案例
我们以 MySQL 数据库为例来演示如何配置连接池。假设我们有一个名为 product

Contoh kod:

package main

import (
    "context"
    "database/sql"
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // 连接字符串
    connectionString := "user:password@tcp(host:port)/database"

    // 打开数据库连接,配置连接池
    db, err := sql.Open("mysql", connectionString)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // 查询所有产品记录
    rows, err := db.QueryContext(context.Background(), "SELECT * FROM product")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    // 遍历结果行
    for rows.Next() {
        // 获取每行的值
        var id int
        var name string
        if err := rows.Scan(&id, &name); err != nil {
            log.Fatal(err)
        }

        // 打印结果
        fmt.Printf("Id: %d, Name: %s\n", id, name)
    }
}

Kes praktikal

🎜Kami mengambil pangkalan data MySQL sebagai contoh untuk menunjukkan cara mengkonfigurasi kolam sambungan. Katakan kami mempunyai jadual yang dipanggil product dan kami ingin mendapatkan semua rekod produk. 🎜🎜🎜Contoh Kod: 🎜🎜rrreee🎜Dalam contoh ini, kami mencipta kumpulan sambungan dan menggunakannya untuk melaksanakan pertanyaan pangkalan data. Dengan mengkonfigurasi pengumpulan sambungan, kami mengoptimumkan pengurusan sambungan pangkalan data dan meningkatkan prestasi aplikasi, terutamanya dalam persekitaran konkurensi tinggi. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi kolam sambungan untuk sambungan pangkalan data Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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