繁体   English   中英

如何在Node-MySQL连接池中正确处理连接持久性事物

[英]How to properly handle connection persistent things within node-mysql connection pooling

如果我使用node-mysql的连接池功能,那么这不会在我的应用程序中引起问题,因为在connection.end()之后重新使用了connection.end() 这就是我担心的原因:当您在SQL中定义变量或启动事务时,该变量或事务将保持不变,直到关闭连接。 由于连接从未真正关闭过,而是被重用了,因此变量和事务可以渗入另一个不希望变量或期望事务存在的例程。 它期待一个新的连接。

变量可能会带来很大的问题; 例行程序永远无法安全地假设变量是不确定的,因为这种连接存在磨损。

如果一个例程在调用end()之前无法回滚或提交事务,则事务可能会带来更大的问题。 如果要使用该连接的下一个例程不处理事务,则所有查询都将附加到该事务并暂停,从不执行。 在编写应用程序时,我可能会小心翼翼地保证永远不会发生这样的错误,但是会发生错误,而且如果确实发生了,调试起来将非常困难(我不知道哪个例程会错误地处理连接,很糟糕)。

因此,这是我在考虑使用池时需要考虑的一些问题。 当然,我不是唯一想到过这些问题的人,因此,如果您愿意,请说明如何正确处理池化连接。 :)

非常感谢你。

所有交易将在单个连接的上下文中发生。 结束或终止连接后,您将无法再对该事务进行操作。 通常的模式是打开,查询,关闭,除非您有一个长期运行的事务,否则不会有任何查询或变量渗入其他连接的问题。

如果事务长时间运行,则必须管理该连接对象以确保它存在并且仅由在该事务内运行的代码使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM