2017-01-12 3 views
1

Если я бегу десять обновлений запросов, как это, в то же самое время:Обновляет ли MySQL одну и ту же строку за раз?

update table set x = x - 1 where x >= 1 

ли MySQL, в режиме повторяемого чтения, гарантия того, что все эти обновления запросы выполняются один за один раз, а не в параллельно (все одновременно)?

P.S: Оказывает ли предложение where какое-либо влияние на его параллельный или последовательный стиль?

+0

с повторяемостью чтения режиме вы имеете в виду перевод установлен REPEATABLE-READ .. см Http: // Dev. mysql.com/doc/refman/5.7/en/set-transaction.html ??? –

+0

Нет инструкции WHERE отфильтровывают записи, которые необходимо обновить. Не имеет никакого влияния, если запрос будет выполняться параллельно или нет. –

+0

. Какая блокировка используется при чтении, не должна влиять на запрос UPDATE. Чтение - это не то же самое, что обновление или вставка. Это может повлиять на выполнение других запросов, которые читаются, но если все ваши запросы будут обновляться, это не повлияет на результаты. – Hogan

ответ

1

Это будет последовательным, Таблица/записи будут заблокированы до тех пор, данное обновление не будет завершено - Пожалуйста, прочитайте ниже

Для двигателей хранения данных, таких как MyISAM, что на самом деле выполнить на уровне таблицы блокировок при выполнении DML или DDL операторы, такие утверждения в старых версиях MySQL (5.6.5 и более ранних), которые затрагивали секционированную таблицу , накладывали блокировку на стол в целом; то есть, все разделы были заблокированы до тех пор, пока заявление было завершено

Подробнее здесь - Partition and locking in mysql

+0

Отметьте как ответ, если он ответит на ваш запрос –

Смежные вопросы