Как обновить одну и ту же строку mysql из нескольких сценариев одновременно? - PullRequest
0 голосов
/ 12 сентября 2010

Я разрабатываю несколько сценариев php, и мне нужно обновить строку mysql, чтобы отслеживать некоторый прогресс. Я прочитал, что я должен использовать InnoDB для этого, но я не могу найти полный пример, который я могу понять. Друг сказал мне, что он использует этот PHP-код:

mysql_query("SET AUTOCOMMIT=0;");
mysql_query("START TRANSACTION;");
mysql_query("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;");

// UPDATE QUERY HERE

mysql_query("COMMIT;");
mysql_query("UNLOCK TABLES;");      
mysql_query("SET AUTOCOMMIT=1;");

Он сказал мне, что попробовал другие методы, но все, кроме этого кода, через некоторое время перегрузило его сервер.

Может кто-нибудь сказать мне, будет ли этот код делать то, что мне нужно, или есть ли лучший способ сделать это?

1 Ответ

1 голос
/ 12 сентября 2010

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

...