怎么用go配置mysql连接池

11次阅读
没有评论

这篇文章主要讲解了“怎么用 go 配置 mysql 连接池”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“怎么用 go 配置 mysql 连接池”吧!

go 配置 mysql 连接池

mysql 配置文档

max-connections=10000

代码

orm

1.ab 发起并发请求测试

-c: 并发量 100

-n: 总请求量 300

➜ ~ ab -c 100 -n 300  http://localhost:8080/pool 
This is ApacheBench, Version 2.3  $Revision: 1826891 $ 
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Finished 300 requests

Concurrency Level: 100 Time taken for tests: 4.073 seconds Complete requests: 300 Failed requests: 0 Total transferred: 128400 bytes HTML transferred: 91200 bytes Requests per second: 73.66 [#/sec] (mean) Time per request: 1357.601 [ms] (mean) Time per request: 13.576 [ms] (mean, across all concurrent requests) Transfer rate: 30.79 [Kbytes/sec] received Connection Times (ms)  min mean[+/-sd] median max Connect: 0 2 2.2 1 8 Processing: 1001 1012 8.2 1010 1036 Waiting: 1001 1012 8.1 1010 1036 Total: 1002 1014 9.5 1012 1043 Percentage of the requests served within a certain time (ms)  50% 1012  66% 1016  75% 1019  80% 1021  90% 1031  95% 1035  98% 1039  99% 1040  100% 1043 (longest request) ➜ ~

2.PoolHandler 中触发 sql 查询

设置空闲连接为 10 个

最大可以打开的连接为 10 个 mysql.conf 中可以修改最大连接数.

db/db.go

sqlDB.SetMaxIdleConns(10)
 // SetMaxOpenConns  设置打开数据库连接的最大数量。sqlDB.SetMaxOpenConns(10)
 // SetConnMaxLifetime  设置了连接可复用的最大时间。sqlDB.SetConnMaxLifetime(time.Hour)

controller/pool.go

func PoolHandler(c *gin.Context) {time.Sleep(time.Second)
 var user model.User
 tx := db.DB.Raw(SELECT id, name, age FROM users WHERE name = ? limit 1 ,  D42).Scan(user)
 if tx.Error != nil {panic(tx.Error)
 logger.Debugf(raw sql id:%v name:%v age:%v , user.ID, user.Name, user.Age)
 c.JSON(200, user)
}

3. 查看测试过程中请求 mysql 创建的请求

SHOW PROCESSLIST;
Id User Host db Command Time State Info
8 root localhost:51148 demo_go Query 0 starting SHOW PROCESSLIST
900 root localhost:64598 demo_go Sleep 0 
901 root localhost:64754 demo_go Sleep 0 
902 root localhost:64755 demo_go Sleep 0 
903 root localhost:64756 demo_go Sleep 0 
904 root localhost:64757 demo_go Sleep 0 
905 root localhost:64758 demo_go Sleep 0 
906 root localhost:64759 demo_go Sleep 0 
907 root localhost:64760 demo_go Sleep 0 
908 root localhost:64761 demo_go Sleep 0 
909 root localhost:64762 demo_go Sleep 0

感谢各位的阅读,以上就是“怎么用 go 配置 mysql 连接池”的内容了,经过本文的学习后,相信大家对怎么用 go 配置 mysql 连接池这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!