Я работал над "алгоритмом обхода дерева предзаказов" в рамках моей повседневной задачи. Я столкнулся с тем, что для MySQL нам нужно заблокировать таблицу и после вставки или удаления какой-либо записи, нам нужно разблокировать определенную таблицу (я преуспел в своей задаче)... Мне просто интересно, почему мы это делаем? Помимо этого случая, где, по-вашему, это может быть использовано в случае его частого использования?
Вам нужно заблокировать таблицу, если вы не хотите, чтобы ее содержимое менялось, пока вы делаете то, что вы есть.
Итак, в вашем случае я предполагаю, что вы не хотите, чтобы таблица менялась, пока вы совершаете обход (я предполагаю, что ваши данные таблицы образуют какое-то дерево).
Итак, у вас есть один из следующих вариантов: LOCK the table, COPY его содержимое в другую таблицу, UNLOCK и работу с копией.
Если ваша оригинальная таблица достаточно мала, вы можете даже сделать свою временную таблицу в памяти.
Остерегайтесь: блокировка таблиц может привести к тому, что другие скрипты, которые используют таблицу, ждут! Убедитесь, что ваши операции не занимают много времени.