Я не гуру базы данных, поэтому мне интересно, нужна ли блокировка таблицы в следующих обстоятельствах:
- У нас есть веб-приложение, которое позволяет пользователям добавлять записи в базу данных через HTML-форму
- Каждая добавляемая пользователем запись должна иметь уникальный URL
- URL должен генерироваться на лету, путем извлечения самого последнего идентификатора из базы данных, добавления его и добавления его во вновь созданную запись
- Приложение работает на ExpressionEngine (я упоминаю об этом только в том случае, если это облегчает понимание моей ситуации для тех, кто знаком с платформой EE)
Соответствующие столбцы БД
(exp_channel_titles)
- entry_id (первичный ключ, auto_increment)
- url_title (должен быть уникальным)
Мое гипотетическое решение - здесь требуется блокировка таблицы?
Допустим, в таблице 100 записей, и каждая запись в таблице имеет url_title, например entry_1, entry_2, entry_3 и т. Д., Вплоть до entry_100. Каждый раз, когда пользователь добавляет запись, мой скрипт будет делать что-то вроде этого:
- Запрос (SELECT) таблицы для определения последнего entry_id и присвоения его переменной $ last_id
- Добавьте 1 к возвращенному значению и присвойте сумму переменной $ new_id
- ВСТАВЬТЕ новую запись, установив в поле url_title самой последней записи значение entry_ $ new_id (таким образом, 101-я запись в таблице будет иметь url_title entry_101 )
Поскольку мои знания базы данных ограничены, я не знаю, нужно ли мне беспокоиться о блокировке здесь. Что если тысячи людей попытаются добавить записи в базу данных в течение 10 секунд? MySQL автоматически обрабатывает это или мне нужно блокировать таблицу при добавлении каждой новой записи, чтобы убедиться, что каждая запись имеет правильный идентификатор?
Запуск на движке MyISAM, если это имеет значение.