У меня вопрос относительно коммитов и транзакций mysql.
У меня есть несколько операторов php, которые выполняют запросы mysql.
Могу ли я сказать следующее?
mysql_query("START TRANSACTION");
//more queries here
mysql_query("COMMIT");
Что именно это сделает? Как это помогает? Для обновлений, удалений и вставок я также обнаружил, что это блокирует другие запросы от чтения:
mysql_query("LOCK TABLES t1 WRITE, t2 WRITE");
//more queries here
mysql_query("UNLOCK TABLES t1, t2");
Будет ли это блокировать другие запросы любой природы или только запись/выбор?
Другой вопрос: скажем, один запрос выполняется и блокирует другие запросы. Другой запрос пытается получить доступ к заблокированным данным — и видит, что они заблокированы. Как это происходит? Ожидает ли он, пока данные снова не будут разблокированы, и повторно выполняет запрос? Это просто не удается и нужно повторить? Если да, то как я могу проверить?
Большое спасибо!
Dennis