За последние 24 часа нас посетили 17397 программистов и 1642 робота. Сейчас ищут 1347 программистов ...

Использование LOCK при Считке и Обновлении записей

Тема в разделе "MySQL", создана пользователем IvanKut, 20 янв 2023.

  1. IvanKut

    IvanKut Активный пользователь

    С нами с:
    27 июл 2018
    Сообщения:
    264
    Симпатии:
    0
    Всем привет
    Пытаюсь понять правильный алгоритм блокировок при следующем сценарии.
    1. InnoDB TRANSACTION ISOLATION LEVEL = REPEATABLE READ, autocommit=true;

    2. Делаю SELECT обсчитывая сумму строк использую FOR UPDATE - который наложит условно на 10 полученных строк LOCK - чтобы другой запрос не мог сделать SELECT на эти же записи
    Код (Text):
    1. SELECT SUM() FROM table1 WHERE.... FOR UPDATE
    3. Делаю INSERT суммы в table2 - Правильно ли я понимаю что в момент INSERT из-за того что стоит autocommit=true - LOCK полученных 10-строк из SELECT table1 запроса слетает?

    4. Делаю UPDATE table1 каждой строчки.

    Если описывать задачу: СЧИТКА(lock) -> Выполнении INSERT/UPDATE -> Финал(unlock).
    Как правильней решать такую задачу?
     
  2. jesse

    jesse Новичок

    С нами с:
    10 янв 2023
    Сообщения:
    4
    Симпатии:
    0
    ну тот же вопрос
     
  3. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    920
    Симпатии:
    143
    Никто так и не попробовал?