我有一个存储过程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。
答案 0 :(得分:1)
每个MySQL会话都是单线程的,因此一个会话无法并行运行这些存储过程。过程中的语句是按顺序执行的。
您仍然可以具有竞争条件,但是只有在多个会话中运行这些过程时,这种情况才会发生。