Boa tarde
Estamos com um problema de lentidão ao monitorar eventos de usuário no Elipse E3.
Temos um XObject Bomba que contém várias informações do equipamento, mais de 100 informações.
Para monitorar as alterações feitas pelo sistema, criamos e replicamos para todas as propriedades o seguinte evento:
Sub ChangeValues_ChangeSetPointFrequencia()
Propriedade = "SpFrequencia"
NewValue = Bomba.SpFrequencia.Value
IdEquipamento = Bomba.Id
Set Consulta = Item("ConsultaBomba")
Consulta.SetVariableValue "Propriedade", Propriedade
Consulta.SetVariableValue "NewValue", NewValue
Consulta.SetVariableValue "IdEquipamento", IdEquipamento
Consulta.Execute(true)
End Sub
Só para informação, essa ConsultaBomba executa uma StoredProcedure no nosso DB que atualiza a tabela de Bombas com o novo valor e temos uma trigger nessa tabela que grava os campos alterados numa tabela BombaLog.
Temos vários equipamentos pra serem monitorados, em torno de 60 equipamentos com a mesma quantidade de informações cada, mas ao executar a aplicação ocorre o seguinte erro:
Warning W00550: Thread E3Run.E3Runtime {1530} is performing a lengthy operation (34.347 seconds elapsed). Currently at:
Thread E3Runtime
DispatchMessage(2034,11796544,0,000300D4)
KernelProc(29)
Timer 0FB054C0
COpcCallbackManager::OnTimer
COpcCallbackManager::ProcessEvents
[ChangeValues_ChangeSetPointFrequencia]RunScript
CE3Query::Execute(-1)
CDBSrvImpl::DBExecuteSQL("Exec uspAtualizaValorBomba '<%Propriedade%>', <%NewValue%>, <%IdEquipamento%>")
CDBServer::priv_ImmediateExecute
CDBEngineClient::ImmediateExecute
E isso afeta completamento o funcionamento da aplicação.
Temos um servidor dedicado para o sistema e usamos OPC.
Alguém teria alguma ideia para implantarmos ou de como resolver o problema de lentidão?