Как организовать импорт обьемных файлов и работу остальных пользователей в Laravel?
У меня прайс на 500000 строк импортируется в базу, база занята минут 10.
При загрузке прайса модальная форма с выбором файла прячется и пользователь может делать что хочет.
Кроме него есть и другие пользователи.
Как правильно организовать работу, чтобы они не редактировали записи в таблице, когда в нее загружаются обновления.
То же самое и другие пользователи могут производить подобные действия.
Можно сделать глобальную переменную в которой отображать состояние базы, и при каждом обращении в базе его проверять ?
Или запись в отдельной таблице сделать в которой отображать состояние базы и его проверять ?
https://dev.mysql.com/doc/refman/8.0/en/lock-table...
если поставить блокировку write, то никто кроме имеющегося соединения ничего с таблицей сделать не сможет.
Если нужно, чтобы чтение было возможно - то нужно создать служебную таблицу, которую блокировать в начале любого обновления (получается как бы мьютекс), а основную таблицу не блокировать.
А можно сделать отдельную табличку, в которой отображать какая из таблиц занята.
При старте импорта проверять значение занятости, при окончании, снимать.
Или это дилетантский подход.
Тарас Паращук, блокировка она сама в случае падения отвалится, а записи в таблице нужно чистить. А можно ли в mysql блокировать строки, а не таблицы целиком - не знаю. кажется, нет.