我有一个API服务,使用odbc_connect
,odbc_exec
从数据库加载数据。
我有一个100行的查询,我决定转移到存储过程。服务请求的数量大约是每秒10个。
那么问题是什么:当使用像SELECT smthng
这样的常规查询时,一切正常,当在过程服务中使用相同的SELECT
时,响应速度非常慢。它导致数据库中许多已打开的连接无法关闭。
我在odbc_close_all
和odbc_exec
之后直接尝试odbc_fetch
- 没有帮助。
SELECT count(*)
FROM master..sysprocesses
WHERE suid > 0
返回大约500个连接。
我也尝试设置
SET PROC_RETURN_STATUS OFF
也没有帮助。
答案 0 :(得分:1)
来自manual的网页说:
如果此处有打开的交易,此功能将失败 连接。在这种情况下,连接将保持打开状态。
我认为它解释了你所面临的行为。
我认为当存储过程完成它的工作时,losted
连接将会死亡。
无论如何,你的案子需要进行一些研究。