За последние 24 часа нас посетили 18463 программиста и 1620 роботов. Сейчас ищет 1231 программист ...

Блокировки в MySQL

Тема в разделе "Прочие вопросы по PHP", создана пользователем s3dworld, 23 июн 2010.

  1. s3dworld

    s3dworld Активный пользователь

    С нами с:
    16 май 2010
    Сообщения:
    7
    Симпатии:
    0
    Всем доброго дня!

    Бродил по Интернету и наткнулся на блокировку в MySQL, когда могут параллельно несколько пользователей считывать или записывать данные в таблице. Для блокировки есть метод LOCK TABLE, для разблокировки - UNLOCK TABLE.

    Так интересно, если у меня первый пользователь зайдёт и заблокирует таблицу на чтение (то есть что никто не сможет читать кроме него), и в это же время зайдёт второй пользователь, но таблица заблокирована, то что произойдёт? Пользователь встанет в очередь, когда первый разблокирует таблицу или просто пользователь не получит данные и от MySQL придёт ответ об ошибке?
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    да
     
  3. s3dworld

    s3dworld Активный пользователь

    С нами с:
    16 май 2010
    Сообщения:
    7
    Симпатии:
    0
    Эх, это конкретно меняет дело. А то я думал что если первый пользователь заблокировал таблицу, то второму пользователю выведется код ошибки, что типа таблица пока заблокирована, и он получив этот код, сможет повторить запрос через определённое время. А оказывается что в очередь войдёт. Вон как.

    А если у меня будет три таблицы: Table1, Table2 и Table3. Если первый пользователь заблокирует Table1 и ещё не успев разблокировать, войдёт второй пользователь и захочет проделать действия с таблицей Table2, ему это удастся? Или же что-то произойдёт?
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632