MySQL队列存储过程会调用吗?

时间:2019-03-04 16:10:30

标签: mysql stored-procedures concurrency

我有一个存储过程sp_performArchive(),它多次调用另一个存储过程。像这样-

CREATE DEFINER=`root`@`%` PROCEDURE `sp_performarchive`()
BEGIN
CALL sp_archive2('pallets', 4);
CALL sp_archive2('cases', 4);
CALL sp_archive2('prepacks', 4);
CALL sp_archive2('bottles', 4);
END

我的数据有些奇怪,如果这些sp_archive2同时运行,这是可以解释的。是这样吗? MySQL是否尝试一次全部运行它们?还是将他们排入队列?

我正在使用MySQL 5.6。

1 个答案:

答案 0 :(得分:1)

每个MySQL会话都是单线程的,因此一个会话无法并行运行这些存储过程。过程中的语句是按顺序执行的。

您仍然可以具有竞争条件,但是只有在多个会话中运行这些过程时,这种情况才会发生。