执行大型mysql过程。错误代码2013,重复时给出错误代码1205
我编写了以下过程,以在一个有700000个条目的数据库上运行。 我有一个超时错误,所以我将超时时间延长到6000而不是600。这并没有解决问题。我得到了一个丢失连接错误,然后我重复调用,它给出了一个锁等待超时错误 有没有更有效的方法来完成同样的任务 代码连接两个表,获取事件发生的计数,并最终显示该计数大于零的百分比执行大型mysql过程。错误代码2013,重复时给出错误代码1205,mysql,sql,stored-procedures,mysql-workbench,Mysql,Sql,Stored Procedures,Mysql Workbench,我编写了以下过程,以在一个有700000个条目的数据库上运行。 我有一个超时错误,所以我将超时时间延长到6000而不是600。这并没有解决问题。我得到了一个丢失连接错误,然后我重复调用,它给出了一个锁等待超时错误 有没有更有效的方法来完成同样的任务 代码连接两个表,获取事件发生的计数,并最终显示该计数大于零的百分比 DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `EvaluateOutput4`() BEGIN decla
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `EvaluateOutput4`()
BEGIN
declare v_max int default (Select count(*) FROM tracker.results);
declare v_counter int default 0;
start transaction;
while v_counter < v_max do
SET @v1 :=
(Select count(*)
FROM tracker.Meetings LEFT outer JOIN tracker.Visits on tracker.Meetings.visit1 =tracker.Visits.id or tracker.Meetings.visit2 =tracker.Visits.id
where (tracker.Meetings.user1= (Select VehicleID from tracker.results where RecordID= v_counter) or tracker.Meetings.user2=(Select VehicleID from tracker.results where RecordID= v_counter) )
and tracker.Visits.node=(Select Node from tracker.results where RecordID= v_counter)
and HOUR(time)>=(Select ArrivalTime from tracker.results where RecordID= v_counter) -1
and HOUR(time)<=(Select ArrivalTime from tracker.results where RecordID= v_counter)+1) ;
Update results set results.Count= @v1
Where results.RecordID=v_counter;
set v_counter = v_counter + 1;
end while;
SET @v2 := (Select count(*)from results where results.Count !=0 );
Set @v4 :=(@v2*100/v_max);
select @v4;
commit;
END