如何為 Go 資料庫連線設定連線池?使用 database/sql 套件中的 DB 類型建立資料庫連線;設定 MaxOpenConns 以控制最大並發連線數;設定 MaxIdleConns 以設定最大空閒連線數;設定 ConnMaxLifetime 以控制連線的最大生命週期。
如何為 Go 資料庫連線設定連線池?
前言
在編寫涉及資料庫操作的 Go 程式時,連接池是一種優化連接管理和提高應用程式效能的有效技術。它透過預先建立和管理資料庫連線來減少建立新連線的開銷。
連接池的實作
Go 提供了原生套件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 的表,我們想要取得所有產品記錄。
程式碼範例:
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) } }
以上是如何為 Golang 資料庫連線配置連線池?的詳細內容。更多資訊請關注PHP中文網其他相關文章!