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 SQL連線池梳理GolangSQL
- Springboot 連線池wait_timeout超時設定Spring BootAI
- pdo連線的時候設定字元編碼是這樣的字元
- Swoole MySQL 連線池的實現MySql
- Python實現MySQL連線池PythonMySql
- Golang 連線池的幾種實現案例Golang
- 連線池
- Spring框架中mysql資料庫連線池bean設定出錯Spring框架MySql資料庫Bean
- 連線mysql時提示is not allowed to connect不允許連線MySql
- Druid MySQL 連線池本地實踐UIMySql
- mysql、redis 客戶端連線池MySqlRedis客戶端
- Http持久連線與HttpClient連線池HTTPclient
- 連線池和連線數詳解
- 【MySQL】自定義資料庫連線池和開源資料庫連線池的使用MySql資料庫
- HTTP連線池HTTP
- django連線池Django
- 基於 swoole 協程的 MySQL 連線池MySql
- 基於swoole的mysql連線池實現MySql
- 設計一個可靠的連線池
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- MySql資料庫連線池專題MySql資料庫
- mysql資料庫連線池配置教程MySql資料庫
- Tomcat 的 JDBC 連線池TomcatJDBC
- golang兩種資料庫連線池實現Golang資料庫
- 建立 MQTT 連線時如何設定引數?MQQT
- MySQL筆記3——內連線/外連線、多表連線MySql筆記
- ServiceStack.Redis的原始碼分析(連線與連線池)Redis原始碼
- 如何遠端連線 桌面設定遠端桌面連線
- 自定義連線池
- ElasticSearch連線池建立Elasticsearch
- golang開發:類庫篇(二) Redis連線池的使用GolangRedis
- spring 簡單的使用 Hikari連線池 和 jdbc連線mysql 的一個簡單例子SpringJDBCMySql單例
- CSS設定連線<a>的樣式CSS
- 【JDBC】java連線池模擬測試 連線oracleJDBCJavaOracle
- 【JDBC】使用OracleDataSource建立連線池用於連線OracleJDBCOracle
- mysql INNER JOIN、LEFT JOIN、RIGHT JOIN;內連線(等值連線)、左連線、右連線MySql
- HikariCP連線池的學習
- Docker遠端連線設定Docker