Go データベース接続用の接続プールを構成するにはどうすればよいですか? Database/sql パッケージの DB タイプを使用してデータベース接続を作成し、同時接続の最大数を制御するには MaxOpenConns を設定し、アイドル状態の接続の最大数を設定するには ConnMaxLifetime を設定します。
Go データベース接続用の接続プールを構成するにはどうすればよいですか?
はじめに
データベース操作を伴う Go プログラムを作成する場合、接続プーリングは接続管理を最適化し、アプリケーションのパフォーマンスを向上させる効果的な手法です。データベース接続を事前に作成および管理することで、新しい接続を確立する際のオーバーヘッドを削減します。
接続プールの実装
Go は、接続プール機能を提供する DB
タイプを含むネイティブ パッケージ database/sql
を提供します。次の手順に従って、DB
オブジェクトの接続プールを構成できます: 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) } }
実践的なケース
🎜 MySQL データベースを例として構成方法を示します。接続プール。product
というテーブルがあり、すべての製品レコードを取得したいとします。 🎜🎜🎜コード例: 🎜🎜rrreee🎜 この例では、接続プールを作成し、それを使用してデータベース クエリを実行します。接続プーリングを構成することにより、データベース接続の管理が最適化され、特に同時実行性の高い環境でのアプリケーションのパフォーマンスが向上します。 🎜以上がGolang データベース接続用の接続プールを構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。