mysql模块的一些问题,关于连接池的

关于npm包 mysql官方示例代码的一点疑惑:
首先看第一段代码:

https://img4.mukewang.com/5c1468cf000178e007690334.jpg

可以看到 查询后,调用connection.end()断开连接;
再看第二段代码:

https://img1.mukewang.com/5c1468e70001d0fe08420324.jpg

这里面查询完成后调用: connection.release();

问题1 如果这两段代码:
第一段不调用
connection.end();
第二段不调用
connection.release();
会产生什么后果呢?
2、这俩有什么区别呢?
3、这两段代码有什么区别呢,这个连接池该怎么理解呢?
个人理解:连接池可不可以理解为缓存呢,查询了某条数据,第二次查询相同数据直接在缓存里面去取,也就是池子里;


慕婉清6462132
浏览 514回答 1
1回答

慕莱坞森

1、对数据库的操作一定是同步阻塞的,因为决不允许多个连接同时操作一条记录这种情况的发生,想要操作数据库,必须要先建立连接,而数据库也不允许无限制的建立多个连接,如果某个连接操作完不断开或释放连接,就会影响到后续连接的建立和使用,这对于高并发的情况是需要避免的。2、connection.end()和 connection.release()的作用都是释放当前连接,但对象不同,前者针对的是普通的连接,而后者针对的连接池。3、连接池确实有缓存的作用,但是其缓存的不是某条操作取出的具体数据,而是缓存的连接本身,这样当下次操作数据库时就不再需要不停的建立连接和销毁连接了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript