2010-09-11 5 views
0

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

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

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

+1

Вы имеете в виду, что мне даже не нужно использовать код, который я разместил, и я могу просто ОБНОВИТЬ строку из нескольких сценариев, не беспокоясь, попытаются ли они сделать это одновременно? (Мне просто нужно добавить столбец + 1 в столбец строки, чтобы не требовался порядок, но мне нужно прочитать значение столбца) – jarkam

+1

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

+1

Если на 100 разных сценариях вы увеличиваете одно и то же поле в одно и то же (или почти одинаковое) время, вы можете быть уверены, что конечное значение поля будет на 100 больше, чем оно было (после того, как все 100 операторов выполнены , конечно.) –

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