golang連線MySQL時候的連線池設定
1.使用連線池,執行完之後關閉連線
現象: 4個併發由4個連線執行,執行完後連線保持,空閒狀態
2.使用連線池,不關閉連線
現象:4個併發由4個連線執行,執行完成後連線保持,空閒狀態
3.不妨加大併發數,使其超過最大連線池大小,設定為併發20
db.SetMaxOpenConns(10)
db.SetMaxIdleConns(5)
現象:20個併發任務由10個連線完成,最終剩餘5個連線未關閉.
88-97 新的10個連線,留下90-96中的5個連線
4.如果不使用連線池呢?我們看看效果!
現象:新建20個連線執行20個併發,最後保留2個空閒連線。
2022-11-11 07:59:56.84143687 +0000 UTC m=+0.013800045 connection id: 2001 7
2022-11-11 07:59:56.841548211 +0000 UTC m=+0.013912205 connection id: 2003 18
2022-11-11 07:59:56.84155055 +0000 UTC m=+0.013914545 connection id: 2002 2
2022-11-11 07:59:56.841453126 +0000 UTC m=+0.013816301 connection id: 1999 9
2022-11-11 07:59:56.841608856 +0000 UTC m=+0.013972868 connection id: 2005 8
2022-11-11 07:59:56.841564022 +0000 UTC m=+0.013928956 connection id: 2009 0
2022-11-11 07:59:56.841490867 +0000 UTC m=+0.013854741 connection id: 2007 16
2022-11-11 07:59:56.841659811 +0000 UTC m=+0.014023699 connection id: 2016 11
2022-11-11 07:59:56.841674901 +0000 UTC m=+0.014038076 connection id: 2006 10
2022-11-11 07:59:56.841503316 +0000 UTC m=+0.013867190 connection id: 2013 14
2022-11-11 07:59:56.841512219 +0000 UTC m=+0.013876110 connection id: 2004 19
2022-11-11 07:59:56.841710169 +0000 UTC m=+0.014075717 connection id: 2011 15
2022-11-11 07:59:56.841725186 +0000 UTC m=+0.014089081 connection id: 2010 5
2022-11-11 07:59:56.841509787 +0000 UTC m=+0.013873426 connection id: 2000 12
2022-11-11 07:59:56.841747276 +0000 UTC m=+0.014112032 connection id: 2014 4
2022-11-11 07:59:56.841521025 +0000 UTC m=+0.013884927 connection id: 2008 6
2022-11-11 07:59:56.841897427 +0000 UTC m=+0.014261324 connection id: 2018 3
2022-11-11 07:59:56.841961983 +0000 UTC m=+0.014326127 connection id: 2017 13
2022-11-11 07:59:56.842021862 +0000 UTC m=+0.014385037 connection id: 2015 1
2022-11-11 07:59:56.842026321 +0000 UTC m=+0.014390232 connection id: 2012 17
5.最後我們看一下這個row.close()的作用吧!
不使用row.close() 現象同上。
應該是場景不對,如果連線池數量有限的話,那這個是否關閉大抵就有影響了。試一下!
// rows.Close()
db.SetMaxOpenConns(10)
db.SetMaxIdleConns(5)
現象: 10個連線完成20個併發,最終剩餘5個空閒連線。
所以: 這個rows.close() 到底有啥用?
6.這時候可以參考一下別人的理解看看呢!
其他連線不會重用這些連線嗎? 我看到的好像是一個連線可以執行多遍哦!存疑?
當執行完sql,連線轉移到rows物件上,如果rows不關閉,這條連線不會被放回池裡,其他併發獲取不到連線會被阻塞住。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30018455/viewspace-2922967/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- golang tcp連線池GolangTCP
- Golang SQL連線池梳理GolangSQL
- mysql設定ip連線MySql
- 解決資料庫連線池連線mysql時,每隔8小時mysql自動斷開所有連線的問題資料庫MySql
- mysql遠端連線設定MySql
- pdo連線的時候設定字元編碼是這樣的字元
- mysql連線的時候報 ERROR 1129MySqlError
- Swoole MySQL 連線池的實現MySql
- 連線池
- Golang 連線池的幾種實現案例Golang
- Tomcat+Mysql連線池TomcatMySql
- Http持久連線與HttpClient連線池HTTPclient
- 連線池和連線數詳解
- Python實現MySQL連線池PythonMySql
- mysql、redis 客戶端連線池MySqlRedis客戶端
- 在JBOSS中使用mysql連線池MySql
- Go連線池Go
- HTTP連線池HTTP
- django連線池Django
- Springboot 連線池wait_timeout超時設定Spring BootAI
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- mysql連線池爆滿,釋放程式長連線殭屍程式MySql
- 連線mysql時提示is not allowed to connect不允許連線MySql
- boost::asio設定同步連線超時
- java連線池解決連線中斷Java
- proxool連線池如何使用SSL方式連線?
- 基於 swoole 協程的 MySQL 連線池MySql
- 基於swoole的mysql連線池實現MySql
- Spring框架中mysql資料庫連線池bean設定出錯Spring框架MySql資料庫Bean
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- 設計一個可靠的連線池
- socket測試遠端地址能否連線併為連線設定超時
- golang兩種資料庫連線池實現Golang資料庫
- MySql資料庫連線池專題MySql資料庫
- mysql資料庫連線池配置教程MySql資料庫
- weblogic +mysql 連線池 中文問題??WebMySql
- ElasticSearch連線池建立Elasticsearch
- 自定義連線池