Bagaimana untuk mengkonfigurasi kolam sambungan untuk sambungan pangkalan data Golang?

王林
Lepaskan: 2024-06-06 11:21:00
asal
1025 orang telah melayarinya

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

实战案例
我们以 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)
    }
}
Salin selepas log masuk

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!

Label berkaitan:
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan