Bandicoot
@Bandicoot
Вась-программист

Тонкости работы БД MySQL при одновременной записи и считывании данных из одной таблицы?

Есть таблица в БД MySQL с постоянно обновляемыми и считываемыми данными.
Т.е. один скрипт раз в минуту (по крону) обновляет в ней данные (они получены путем парсинга с API)
Другой скрипт, со стороннего ресурса (не нашего) раз в 15 секунд запрашивает эти данные, путем вызова соответствующего экшена контроллера.

Итак, что происходит, когда они сталкиваются? Т.е. один скрипт пишет в базу, а другой в этот же момент времени считывает из нее. Второй вообще не получит никаких данных или получит только те данные, которые были до обновления первым скриптом?
  • Вопрос задан
  • 661 просмотр
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Недостаточно данных. Разные storage engine будут вести себя разным образом. Для транзакционных storage будут иметь значение уровень изоляции транзакции и собственно как именно реализована транзакционная обработка в обоих приложениях.

innodb, read commited, транзакционная работа писателя: читатель увидит версию данных как будто писатель ничего ещё не делал.
innodb, read commited, нетранзакционная работа писателя/autocommit - читатель увидит какой-то промежуточный результат, что-то обновлено, что-то ещё нет.
myisam - подождёт завершение пишущего запроса (только мешающего запроса! Следующий пишущий запрос постоит подождёт завершение читающего запроса), прочитает текущее состояние
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Konstantin18ko
@Konstantin18ko
Стоматолог
По моему существует такая вещь, как очередь. Могу ошибаться.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы