在创建新的connection肯定是占资源的,是不是每次query后一定要end()? 或者说,这个连接不关闭。如果按照C#或者java来说的话,执行查询后,一定要close().因为一个 连接是十分的占资源,但是在node中或者说在mysql这个package中是怎么样管理connection的。 还有就是大家如何自动处理重新连接。因为mysql这个package8小时候就会自动断开连接。 您可以贴出您的代码,我们讨论下。或者说讲下实现的思路。 由于个人的表达能力有限,不知道大家理解没有。
7 回复
不知道你说的c# java是怎样的使用情况,说下apache php吧,每次请求apache都会启动一个新进程来处理客户端请求,每个进程都是隔离的,php模块针对每个用户都要重新建立所有资源,进程结束要释放所有资源。所以php创建mysql链接后也一定要关闭链接,及时你不关闭链接,脚本也会帮你关闭链接。nodejs完全不同,只有一个进程,所有用户请求共享相同的环境,所以在nodejs进程启动起来后建立mysql链接就不用关闭,所有用户共享这一个链接, 直到nodejs进程结束,也就是服务器关闭。 每次请求创建和释放链接在nodejs里是不适用的
- mysql包本身不提供连接池,可以使用这个模块generic-pool,不过这个模块不提供我下面说的功能。
- 不是mysql的package8小时就断开连接,是mysql server 默认8小时会断开闲置连接,如果有connection pool,就定期检查里面的connection是否可用就OK了,比如随便发个sql: select 1 + 1