一个由proxool配置文件的sql语句配置引起的问题

最近偶然看到这篇文章,很诡异,但是原因很简单,copy下来,作为自己的“智库”

 

布了个应用程序,发现程序很有规律,执行sql语句非常的慢。

5分钟就会出错问题,执行一条语句用子大概5秒钟。执行10次后,又恢复正常。

查一天,也想了一天都找不到原因。

开启日志的dubug模式,终于发现问题。

原因是由proxool连接池配置引起的问题。

 

proxool 文件里配置了连接 两个库。

一个是连接orcale 的库,一个连接 sql server 的库。

配置都是 5分钟一次检查连接。 语句都是 select * from dual

问题就出在这个语句上,sql server 是不支持 select * from dual,这个语句的。

这样proxool每5分钟(配置的),检查的时候就会出错,proxool就认为是连接断开了,

就清空所有的连接,包括连接 orcale 库的连接,然后重新建立连接。

这样就会导致sql语句非常的慢。要等待proxool连接池初始化所有连接,才能执行语句。

 

解决方法:

把连接 sql server 的检查语句改成 select 1 就可以了。

你可能感兴趣的:(sql,sql,server)