中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql數據庫怎么利用golang語言進行連接

發布時間:2020-12-07 15:11:29 來源:億速云 閱讀:187 作者:Leah 欄目:開發技術

mysql數據庫怎么利用golang語言進行連接?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

golang中連接mysql數據庫,需要使用一個第三方類庫github.com/go-sql-driver/mysql,在這個類庫中就實現了mysql的連接池,并且只需要設置兩個參數就可以實現

一般連接mysql首先需要調用sql.Open函數,但是此時并沒有真正的去連接mysql,而是只創建了一個Db的對象而已。當執行Query或者是Exec方法時,才會去真正的連接數據庫。

默認情況下。每次執行sql語句,都會創建一條tcp連接,執行結束就會斷掉連接,但是會保留兩條連接閑置。當下次再執行 sql時,先用閑置的連接,不夠的時候再去創建連接。

當設置了Db類下的這兩個參數,就可以真正的實現連接池了。

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

SetMaxOpenConns(10)是設置的最大連接數,也就是甭管你多少并發,只能最多創建10條tcp連接,還有要注意的一點是,當執行完sql,連接轉移到rows對象上,如果rows不關閉,這條連接不會被放回池里,其他并發獲取不到連接會被阻塞住。
SetMaxIdleConns(5)是設置的執行完閑置的連接,這些就算是執行結束了sql語句還是會保留著的

測試的流程是這樣的,首先在代碼中并發100次執行sql,開一個窗口不停的netstat查看3306端口看tcp連接的情況,可以看到最大就10條tcp連接,執行完后會有5條連接保持住,開一個窗口看tcpdump中3306端口的數據請求情況,在閑置連接的時候,會每10秒傳遞數據給mysql,使得閑置連接保持住。

mysqlClient.go

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

package main

import (
  "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)
  //連接數據庫查詢
  for i := 0; i < 100; i++ {
    go func(i int) {
      mSql := "select * from user"
      rows, _ := db.Query(mSql)
      rows.Close() //這里如果不釋放連接到池里,執行5次后其他并發就會阻塞
      fmt.Println("第 ", i)
    }(i)

  }

  for {
    time.Sleep(time.Second)
  }
}

開一個窗口不停的netstat

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

mysql數據庫怎么利用golang語言進行連接

開一個窗口tcpdump看閑置連接的請求情況,每隔15秒請求一次數據

tcpdump -i lo port 3306 -vv

mysql數據庫怎么利用golang語言進行連接

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白银市| 南康市| 云龙县| 罗源县| 图们市| 绥中县| 仁怀市| 定兴县| 洱源县| 肥乡县| 兰溪市| 信宜市| 鲜城| 尚志市| 淳安县| 博爱县| 南丹县| 峨眉山市| 泾川县| 临西县| 兰坪| 碌曲县| 绥德县| 大理市| 禄丰县| 南漳县| 兰考县| 榆社县| 宝兴县| 巩义市| 晋中市| 新化县| 博野县| 阆中市| 扎鲁特旗| 那曲县| 浦江县| 中宁县| 奉贤区| 萨迦县| 于田县|