VC的服务端调用本地数据库中的存储过程,存储过程中逻辑很简单,用GetTickCount()截取存储过程调用前和调用后的时间差有的时候会几秒钟,现在最严重情况甚至达到30秒,非常不理解
服务端有接受数据线程和处理数据线程,接受数据的线程始终在接收,接收后存在链表中,处理数据的线程取出一条,处理过后删除,现在在处理某条数据的时候(就是调用存储过程的数据)就会耗时很长,造成接收线程那边接收一大堆,处理线程这边一条还没处理完,当存储数据链表中数据量达到一定程度后,程序就会崩掉
给点思路,或者建议,真是找不到头绪,如果我有说的不明白的地方,请提出,随时回答,在线等!!!这个是调用存储过程用到的代码m_pParam1 = m_pCmd->CreateParameter( "OrderNo", adVarChar, adParamInput, 4, (_variant_t)StrCode );
char exec[50] = "sp_upinfo";
m_pCmd->PutCommandText(_bstr_t(exec));
m_pCmd->CommandType = adCmdStoredProc;
m_pCmd->Execute( NULL, NULL, adCmdStoredProc );
VCADOSQL耗时长
服务端有接受数据线程和处理数据线程,接受数据的线程始终在接收,接收后存在链表中,处理数据的线程取出一条,处理过后删除,现在在处理某条数据的时候(就是调用存储过程的数据)就会耗时很长,造成接收线程那边接收一大堆,处理线程这边一条还没处理完,当存储数据链表中数据量达到一定程度后,程序就会崩掉
给点思路,或者建议,真是找不到头绪,如果我有说的不明白的地方,请提出,随时回答,在线等!!!这个是调用存储过程用到的代码m_pParam1 = m_pCmd->CreateParameter( "OrderNo", adVarChar, adParamInput, 4, (_variant_t)StrCode );
char exec[50] = "sp_upinfo";
m_pCmd->PutCommandText(_bstr_t(exec));
m_pCmd->CommandType = adCmdStoredProc;
m_pCmd->Execute( NULL, NULL, adCmdStoredProc );
VCADOSQL耗时长
如果是sql数据库,那么,如果你在存储过程中设置了参数,那么你不用再
m_pParam1 = m_pCmd->CreateParameter( "OrderNo", adVarChar, adParamInput, 4, (_variant_t)StrCode ); 将cmd 的命令文本设置到你的存储过程名,连接设置到打开的连接,那么cmd就会包含该存储过程的参数
如果速度正常,再分析是否sp_upinfo()本身有问题,或者传入参数有问题。
m_pParam1 = m_pCmd->CreateParameter( "OrderNo", adVarChar, adParamInput, StrCode.GetLength()+1, (_bstr_t)StrCode );试试!