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

开一个窗口不停的netstat

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

开一个窗口tcpdump看闲置连接的请求情况,每隔15秒请求一次数据

tcpdump -i lo port 3306 -vv

以上就是golang中连接mysql数据库的详细内容,更多关于golang 连接mysql数据库的资料请关注服务器之家其它相关文章!

原文链接:https://cloud.tencent.com/developer/article/1544397?from=article.detail.1533663

go语言服务器连接mysql,golang中连接mysql数据库相关推荐

  1. Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法

    Navicat 远程连接docker容器中的mysql 报错1251 - Client does not support authentication protocol 解决办法 1).容器中登录my ...

  2. golang中连接mongo数据库并进行操作

    golang中连接mongo数据库并进行操作 golang中连接mongo数据库并进行操作 首先,我们需要下载mongo模块 执行 go get github.com/mongodb/mongo-go ...

  3. Golang中备份MYSQL数据库

    请注明出处:https://blog.csdn.net/qq_23179075/article/details/83306104 Golang中备份MYSQL数据库 package mainimpor ...

  4. sql开启mysql远程连接_CentOS系统中安装MySQL和开启MySQL远程访问的方法

    安装MySQL 安装MySQL和php-mysql [root@sample ~]# yum -y install mysql-server [root@sample ~]# yum -y insta ...

  5. Sequal Pro 连接docker容器中的mysql

    出现错误: Be sure that the address is correct and that you have the necessary privileges, or try increas ...

  6. java mysql settings_Java中使用MySQL从安装、配置到实际程序测试详解

    By zieckey(zieckey@yahoo.com.cn) All Rights Reserved! 这里假设你的Java开发环境已经搭建好了. 一.准备工作: 下载MySQL:mysql-5. ...

  7. zimbra mysql stopping_Zimbra中的MySQL

    Zimbra中的MySQL Zimbra中内置包含了很多第三方组件,其中就包括了MySQL. 刚开始使用Zimbra很容易问的一个问题就是,既然Zimbra已经安装了MySQL,那么我自己的程序或者网 ...

  8. python echarts mysql python_Django中从mysql数据库中获取数据传到echarts方式

    尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...

  9. word数据源mysql,Word2013中使用Access数据库的方法

    Word 2013允许将Access数据库中的表和查询添加到Word文档中,下面介绍Word2013中使用Access数据库的具体操作方法. 1.启动Word 2013,打开需要添加Access数据库 ...

最新文章

  1. vb 怎样指定 dll 引用路径_C#/VB.NET 比较两个Word文档差异
  2. python pillow 图片处理
  3. nginx转发端口路由器再转发
  4. RK3288 手动设置电池电量
  5. C语言实例:将人员信息写入磁盘文件并读出显示
  6. 走向REST:将Tomcat与Spring和JAX-RS嵌入(Apache CXF)
  7. 计算机组成原理中ID是什么,计算机组成原理.doc
  8. html文本改,编辑html格式文本可改成txt格式(可以替换或更换某文本)新手
  9. SinoBBD跨入大数据产业发展新模式
  10. Spring框架中级联赋值(外部属性注入)以及内部属性注入
  11. php10天速成培训,十天学会php之第九天
  12. 关于WM下创建和删除GPRS接入点
  13. 安装Ubuntu最后重启出错Write through
  14. 一些忘记了的....
  15. DXGI高帧率屏幕录像软件源码解析(声音捕获,抓屏,ffmpeg录像,MP4录像,flv录像,麦克风采集)(第1篇API展示及使用部分)
  16. C#使用Google翻译实现在线翻译
  17. Hadoop+Spark 之旅—脚踏实地、仰望星空(教程目录)
  18. js return加分号_JavaScript语句后应该加分号么?
  19. 云享团——基于大数据开发套件的增量同步策略
  20. BUAA小型图书管理系统

热门文章

  1. spring boot 2.x静态资源会被HandlerInterceptor拦截的原因和解决方法
  2. 基于JAVA+SpringMVC+Mybatis+MYSQL的羽毛球场预约管理系统
  3. java getconstructors,java 反射 constructors的问题,真心需要解决
  4. cUBtYhaFzo
  5. mysql导出表数据
  6. [BZOJ5329][Sdoi2018]战略游戏 圆方树+虚树
  7. 存储过程 触发器 约束
  8. 监听滚动条和浏览器大小变化
  9. 熊猫支持html5么,Steam疯狂周三特惠推荐:你给我看大熊猫,我就给你钱
  10. python随机函数random要导入哪个包_python学习之随机函数random