色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

golang中連接mysql數(shù)據(jù)庫(kù)

瀏覽:115日期:2023-10-24 16:05:38

golang中連接mysql數(shù)據(jù)庫(kù),需要使用一個(gè)第三方類(lèi)庫(kù)github.com/go-sql-driver/mysql,在這個(gè)類(lèi)庫(kù)中就實(shí)現(xiàn)了mysql的連接池,并且只需要設(shè)置兩個(gè)參數(shù)就可以實(shí)現(xiàn)

一般連接mysql首先需要調(diào)用sql.Open函數(shù),但是此時(shí)并沒(méi)有真正的去連接mysql,而是只創(chuàng)建了一個(gè)Db的對(duì)象而已。當(dāng)執(zhí)行Query或者是Exec方法時(shí),才會(huì)去真正的連接數(shù)據(jù)庫(kù)。

默認(rèn)情況下。每次執(zhí)行sql語(yǔ)句,都會(huì)創(chuàng)建一條tcp連接,執(zhí)行結(jié)束就會(huì)斷掉連接,但是會(huì)保留兩條連接閑置。當(dāng)下次再執(zhí)行 sql時(shí),先用閑置的連接,不夠的時(shí)候再去創(chuàng)建連接。

當(dāng)設(shè)置了Db類(lèi)下的這兩個(gè)參數(shù),就可以真正的實(shí)現(xiàn)連接池了。

db.SetMaxOpenConns(10)db.SetMaxIdleConns(5)

SetMaxOpenConns(10)是設(shè)置的最大連接數(shù),也就是甭管你多少并發(fā),只能最多創(chuàng)建10條tcp連接,還有要注意的一點(diǎn)是,當(dāng)執(zhí)行完sql,連接轉(zhuǎn)移到rows對(duì)象上,如果rows不關(guān)閉,這條連接不會(huì)被放回池里,其他并發(fā)獲取不到連接會(huì)被阻塞住。SetMaxIdleConns(5)是設(shè)置的執(zhí)行完閑置的連接,這些就算是執(zhí)行結(jié)束了sql語(yǔ)句還是會(huì)保留著的

測(cè)試的流程是這樣的,首先在代碼中并發(fā)100次執(zhí)行sql,開(kāi)一個(gè)窗口不停的netstat查看3306端口看tcp連接的情況,可以看到最大就10條tcp連接,執(zhí)行完后會(huì)有5條連接保持住,開(kāi)一個(gè)窗口看tcpdump中3306端口的數(shù)據(jù)請(qǐng)求情況,在閑置連接的時(shí)候,會(huì)每10秒傳遞數(shù)據(jù)給mysql,使得閑置連接保持住。

mysqlClient.go

先要拉取一下github包,go get github.com/go-sql-driver/mysql

package mainimport ( 'database/sql' 'fmt' 'time' _ 'github.com/go-sql-driver/mysql')func main() { db, _ := sql.Open('mysql', 'root:123456@tcp(127.0.0.1:3306)/gocron') db.SetMaxOpenConns(10) db.SetMaxIdleConns(5) //連接數(shù)據(jù)庫(kù)查詢(xún) for i := 0; i < 100; i++ { go func(i int) { mSql := 'select * from user' rows, _ := db.Query(mSql) rows.Close() //這里如果不釋放連接到池里,執(zhí)行5次后其他并發(fā)就會(huì)阻塞 fmt.Println('第 ', i) }(i) } for { time.Sleep(time.Second) }}

開(kāi)一個(gè)窗口不停的netstat

while true;do clear;date;netstat -altupn|grep 3306|grep Client;sleep 1;done

golang中連接mysql數(shù)據(jù)庫(kù)

開(kāi)一個(gè)窗口tcpdump看閑置連接的請(qǐng)求情況,每隔15秒請(qǐng)求一次數(shù)據(jù)

tcpdump -i lo port 3306 -vv

golang中連接mysql數(shù)據(jù)庫(kù)

以上就是golang中連接mysql數(shù)據(jù)庫(kù)的詳細(xì)內(nèi)容,更多關(guān)于golang 連接mysql數(shù)據(jù)庫(kù)的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 国内精品久久久久久网站 | 久久精品国产99久久香蕉 | 欧美13一14周岁a在线播放 | 欧美久久久久欧美一区 | 狠色狠狠色狠狠狠色综合久久 | 2022久久免费精品国产72精品 | 国产欧美成人不卡视频 | 精品国产一区二区二三区在线观看 | 在线一区二区观看 | 手机看片久久高清国产日韩 | 欧美91精品久久久久网免费 | 99久久精品国产一区二区成人 | 精品国产网 | 亚洲欧美日韩国产精品 | 亚洲人视频在线观看 | 精品在线一区二区 | 黄网站在线播放视频免费观看 | 美女性视频网站 | 美女喷水网站 | 免费黄色毛片视频 | 999久久久 | 日韩三级在线播放 | 国产欧美日韩一区二区三区 | 农村寡妇一级毛片免费看视频 | 久草免费新视频 | 国产精品分类视频分类一区 | 国产50页| 丝袜黄色片 | 国产精品大全国产精品 | 怡红院在线观看在线视频 | 韩国a级毛片 | 中国精品视频一区二区三区 | 午夜成人免费影院 | 一级一级毛片免费播放 | 欧美精品网站 | 久久久久久久久久免免费精品 | 国产成人精品.一二区 | 久久精品一区二区免费看 | 亚洲成人在线视频播放 | www.欧美xxxx| 老司机亚洲精品影院在线 |