1

如果我使用 node-mysql 的连接池功能,这不会在我的应用程序中造成问题,因为连接会在之后重新使用connection.end()吗?这就是我担心的原因:当您在 SQL 中定义变量或启动事务时,该变量或事务是持久的,直到连接关闭。由于连接实际上从未关闭,而是重新使用,因此变量和事务可以渗入另一个不期望变量或不期望事务存在的例程;它期待一个新的连接。

变量可能会造成大问题;例程永远无法安全地假定变量未定义,因为与磨损有关。

如果一个例程在调用end(). 如果要使用此连接的下一个例程不处理事务,则所有查询都将附加到事务并暂停,永远不会被执行。在编写我的应用程序时,我可以小心一点,这样的错误永远不会发生,但是会发生错误,如果确实发生了,调试起来会非常困难(我不知道哪个例程处理连接错误,很糟糕)。

所以这些是我在考虑使用池时的一些担忧。当然,我不是唯一一个想到这些问题的人,所以请说明如何正确处理池连接,如果你愿意的话。:)

非常感谢。

4

1 回答 1

0

所有事务都将在单个连接的上下文中发生。结束或终止连接后,您将无法再对该事务进行操作。一般模式是打开、查询、关闭,除非您有一个长时间运行的事务,否则您不会遇到任何查询或变量溢出到其他连接的问题。

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

于 2013-08-08T07:20:48.587 回答