2013-07-25 5 views
0

Я пытаюсь создать базу данных, которая будет использоваться для хранения результатов на некоторых тестах. Проблема в том, что эти тесты выполняются параллельно и раздельно, и после того, как каждый из них заканчивается, он будет передавать результаты в базу данных. Теперь я знаю, что MySQL предназначен для обработки таких ситуаций, и некоторые двигатели, такие как InnoDB, могут выполнять блокировку на уровне строк.MySQL многократные процессы записи

  1. Если процесс будет доступ к заблокированной таблице или записи, не будет ли это процесс будет заблокирован и опрос до таблицы или запись разблокирована или будет кэшировать запрос, и процесс может прекратить нормально?
  2. Когда процесс попытается подключиться к серверу, когда он выключен, что произойдет, или это просто до меня, чтобы справиться с этим?

Любая помощь очень ценится.

ответ

1

Номер 2 зависит от вас, что вы будете делать, если mysql_connect() или что вы используете для подключения к базе данных, создаст исключение. Проблема номер 1 будет разрешена на уровне MySQL, в зависимости от того, что ваш процесс должен делать с заблокированной таблицей или строкой. Обычно это приводит к временной задержке запроса для доступа к данным в заблокированных областях, но может возвращать ошибку вне времени, если другой процесс блокирует таблицу/строку в течение длительного периода времени. Также возможна взаимная блокировка, например, процесс A блокирует строку 1, а процесс B блокирует строку 2, а A хочет, чтобы данные из строки 2 и B запрашивали данные из строки 1. Это называется «взаимоблокировка», и один из процессов выбран как жертва тупика, и его запрос возвращает сбой.

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