Как определить, выполняется ли sql-скрипт параллельно или нет?

Мне интересно, будет ли этот sql выполняться параллельно или нет? Это будет новая хранимая процедура sql, которая будет вызывать три другие процедуры. Я хочу, чтобы каждая процедура начиналась после завершения предыдущей.

BEGIN

IF (new_times_flag = TRUE) THEN
    CALL PROCEDURE1(dateFor);
ELSE 
    UPDATE kt_zones_timeslots_settings SET date_for = dateFor WHERE date_for = oldDateFor;
END IF;
    
CALL PROCEDURE2(dateFor);
CALL PROCEDURE3(dateFor);

END

Я прочитал, как работает sql в процедуре, но я не могу найти точного ответа на этот случай. Каждая следующая процедура зависит от предыдущей, поэтому я хочу, чтобы они работали не параллельно. Более того, эти процедуры состоят из создания временных таблиц, обновлений, удалений, выборок и вставок. Я тоже думал о чем-то вроде этого (транзакция):

BEGIN
    BEGIN TRY
        BEGIN TRANSACTION
            IF (new_times_flag = TRUE) THEN
                CALL CalcActualZoneUTR(dateFor);
            ELSE 
                UPDATE kt_zones_timeslots_settings SET date_for = dateFor WHERE date_for = oldDateFor;
            END IF;
                
            CALL MakeRealShifts(dateFor);
            CALL InsertSeparateShifts(dateFor);
    END TRY
    BEGIN CATCH
        ROLLBACK;
    END CATCH
END

без специальных инструкций параллельно могут выполняться только отдельные запросы, а пакетные запросы — нет.

Mitch Wheat 04.04.2022 07:49

Значит, эти процедуры не будут выполняться параллельно? Мне было интересно, не лучше ли поместить всю процедуру в транзакцию?

Даяна Димитрова 04.04.2022 07:51

О какой СУБД идет речь?

Thorsten Kettner 04.04.2022 07:52

Это СУБД - MariaDB.

Даяна Димитрова 04.04.2022 07:54

Транзакции используются совсем по другой причине.

Mitch Wheat 04.04.2022 08:12

Да, вы правы, я просто рекомендую это, потому что я не хочу выполнять весь sql, если есть проблема в начале. Возможно, мне следует запретить параллельную обработку в моем коде php и yii, потому что я не вижу, как это сделать в sql.

Даяна Димитрова 04.04.2022 08:17
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
6
37
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вызовы в процедуре выполняются один за другим, а не параллельно.

А это значит, что если предыдущий вызов не закончился, то новый не начнется, не так ли?

Даяна Димитрова 04.04.2022 11:10

InsertSeparateShifts выполнится после завершения MakeRealShifts.

slaakso 04.04.2022 16:12

Спасибо, именно этого ответа я и ждал!

Даяна Димитрова 05.04.2022 07:19

Другие вопросы по теме