А как насчет этого?Он в основном вызывает исходную хранимую процедуру в цикле, пока не будет достигнута общая необходимая сумма, и имеет период ожидания между вызовами (например, 2 секунды), чтобы позволить другим запросам обрабатываться.
increment
- это суммаделать за один раз (используя 10 000 в этом случае)totalLimit
- общая сумма для обработкиsleepSec
- это время отдыха между вызовами
BEGIN
SET @x = 0;
REPEAT
SELECT SLEEP(sleepSec);
SET @x = @x + increment;
CALL OriginalProcedure( increment );
UNTIL @x >= totalLimit
END REPEAT;
END$$
Очевидно, что он может использовать небольшую математику, чтобы убедиться, что приращение не превысит общий лимит, если оно не делится равномерно, но оно выглядитна работу (под работой я имею в виду, что другие запросы по-прежнему обрабатываются из веб-запросов), и, кажется, в целом также быстрее.
Любое понимание здесь?Это хорошая идея?Плохая идея?