mysql 连接存活时间_MySQL连接池与超时设定

本文介绍了MySQL连接池的概念,以及`SetMaxIdleConns`和`SetMaxOpenConns`函数的作用。讨论了MySQL的`wait_timeout`参数对连接的影响,以及如何避免因超时导致的错误。还探讨了服务端的`MaxLifetime`、`ReadTimeout`参数,并通过实验展示了不同设置下的行为。建议设置`SetConnMaxLifetime`小于`wait_timeout`以确保安全关闭连接。
摘要由CSDN通过智能技术生成

Introduction

// $GOROOT/src/database/sql/sql.go

func SetMaxIdleConns(n int){}

func SetMaxOpenConns(n int){}‌复制代码

写一个网络后端, 启动数据库, 连接数据库, 开始之前配置你的数据库. 流量一大, 各种问题都出来了, 你开始认识到Mysql是一整套系统, 一套需要配置的系统.

以上两个函数是什么? 什么是MySQL连接,什么是连接池. 我应该怎么配置? 等你知道这些东西是什么, 怎么工作的. 你立刻就能理解应该怎么去配置他们.

背景知识

什么是连接? 什么是连接池?‌

现在你是一个go程序, 你需要用数据库, 你叮一下数据库, 告诉数据库我想查数据库. 然后你开始查. 你叮的哪一下就产生了一个连接. 你使用哪个连接来查询. 但是, 每查一次就叮一次, 这样是不是不合理, 很浪费时间. 事实上(默认参数下)MySQL会把你那个连接保存8小时, 也就是说8小时内, 你拿着这个连接去查数都是可以的. 如果超过8小时没人用这个链接, MySQL就会关掉这个链接.

‌你可以把那个连接存起来, 或者存5个连接, 想用的时候, 就从里面拿一个出来用一下, 这就构成了连接池.现在我们可以开始解释上面两个函数是干什么的了:

SetMaxOpenConns: 我允许你最多开这么多个连接

SetMaxIdleConns: 连接池里最多有这么多连接

b47354ac747253d58aade08160b23ed6.png

假设这个时刻下现在有4个连接查询完毕, 那这些连接去哪儿呢? 一部分去了连接池, 连接池放不下的, 多余的部分就会直接关闭. 那么MaxOpen

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值