Я разработчик и имею только хорошие знания о базах данных. Мне нужно понять механизм блокировки уровня транзакций в InnoDB.Mysql InnoDB - сценарий блокировки
Я читал, что InnoDB использует блокировку на уровне строк? Насколько я понимаю, он блокирует определенную строку внутри транзакции. Что произойдет с оператором select при обновлении таблицы?
Например, предположим, что транзакция и оператор выбора инициируются двумя разными процессами и предполагают, что Transaction1 запускается до выдачи оператора select.
Transaction1 : Start
Update table_x set x = y where 1=1
Transaction1 : End
Select Query
Select x from table_x
Что будет с отборного заявления. Будет ли он возвращать значения «во время» Transaction1 имеет место или «после» завершается? И если он может начаться только после завершения транзакции1, где находится блокировка уровня строки на этом снимке?
Я понимаю смысл или мое фундаментальное понимание само по себе неправильно? Пожалуйста, порекомендуйте.
Я не думаю, что выбрать будет вызывать ничего, он возвращает результат также InnoDB обрабатывает транзакции динамически вы не должны указать явную транзакцию с использованием START TRANSACTION и конца с помощью COMMIT для одного запроса. Однако START TRANSACTION применит LOCK, который может быть выпущен только после COMMIT –
@MaheshPatil: очень хороший момент, я обновил вопрос. – bragboy