Когда нужно беспокоиться о контроле параллелизма PHP mysql


У меня есть вопрос о контроле параллелизма и о том, когда об этом беспокоиться. Я создал сайт PHP/MySQL (InnoDB). Я знаю о том, как избежать проблем с транзакциями, но тогда есть контроль параллелизма.

Мой сайт - это электронная коммерция, на которой хранятся товары, вставленные пользователем, так что в качестве примера. Когда пользователь вставляет новый элемент на сайт, БД создает идентификатор продукта в качестве первичного ключа (автоматически увеличивается БД) и сохраняет другие данные об этом продукте, отправленные через форма. Я использую подготовленные заявления.

Нужно ли мне беспокоиться о том, что два или более пользователей делают это одновременно? Есть ли вероятность, что отправка двух или более элементов одновременно приведет к искажению данных в разных строках?

Чтобы иметь возможность вставлять продукты, пользователь должен войти в систему с помощью сеансов, если это имеет значение для вопроса.

Заранее спасибо, Маркус.

Author: Markus, 2012-11-15

2 answers

Если они не пишут в одну и ту же строку, я не понимаю, почему у вас могут возникнуть проблемы с параллелизмом. Даже если они записывали в одну и ту же строку, InnoDB имеет блокировку на уровне строк , что означает, что строка будет заблокирована до тех пор, пока пользователь не закончит запись в нее, оставляя последующих пользователей "ждать", пока блокировка не будет снята. Что касается возможности "конфликтующих запросов на вставку": если вы вставляете новые данные в таблицу, в которой используется автоматическое увеличение первичный ключ, вы гарантированно получаете уникальный идентификатор каждый раз, что означает, что параллелизм никогда не должен быть проблемой при вставке.

 3
Author: Wayne Whitty, 2012-11-15 17:58:35

Вы можете выполнить быструю блокировку таблиц, особенно полезную при обновлениях

 2
Author: AsConfused, 2012-11-15 17:54:31