在 Go 中使用 HTTP Goroutines 时,通过共享数据库连接来优化性能至关重要。本文演示了如何在多个 HTTP 处理程序之间建立和共享 MySQL 连接。
在 Go 中,database/sql 包自动处理连接池。当调用 sql.Open(...) 时,会创建一个连接池而不是单个连接。这意味着如果所有连接都已在使用中,database/sql 包将自动从池中获取连接。
要在 HTTP goroutine 中共享 MySQL 连接,请按照以下步骤操作步骤:
初始化数据库连接:
示例:
db, err := sql.Open("mysql", "root:@/mydb?charset=utf8") if err != nil { log.Fatalf("Error opening database: %v", err) }
配置连接池:
共享连接句柄的空闲连接数:
示例:
var db *sql.DB
检查数据库连接:
示例:
err = db.Ping() if err != nil { log.Fatalf("Error opening database connection: %s", err.Error()) }
在 HTTP 处理程序中使用连接:
示例:
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) } }
按照以下步骤,您可以在多个数据库之间高效共享 MySQL 连接HTTP goroutine 不会影响性能。
以上是如何在 Go 中的多个 HTTP goroutine 之间共享 MySQL 连接?的详细内容。更多信息请关注PHP中文网其他相关文章!