Mysql查询-多个查询-它们是并发运行(编辑:连续)还是同时运行


Mysql Query - Multiple queries - Do they run concurrently (edit: consecutively) or simultaneously

我有一个执行php页面的cron作业。php页面只有几行,运行3个不同的查询。

关键是要清除克隆表,用主表中的所有新内容更新它,然后对该克隆表进行更新。

php页面基本是这样的:

<?php
require_once('/path/to/my/db/connection/file'); 
@session_start();
mysql_select_db($database_db, $db);
$query1 = "DELETE from table2;"
$query1_run = mysql_query($query1);
$query2 = "INSERT INTO table2 (SELECT * FROM table1);"
$query2_run = mysql_query($query2);
$query3 = "UPDATE table2 (blah blah a bunch of update syntax here)"
$query3_run = mysql_query($query3);
?>

我们正在处理一个非常大的数据库,有几百万行,所以每个查询都需要一些时间。

第一个查询运行得很快,但是第二个和第三个查询花了一分钟,每个大约3分钟。

我的问题是:我能把所有这些东西放在一个页面上吗?它会等待第一个查询执行后再继续执行第二个查询,然后再执行第三个查询吗?或者我是否需要将它们分成3个cron作业,并间隔几分钟运行它们?

要回答标题中的问题"它们是并发运行还是同时运行",答案是并发的。

拥有多个cron将要求它们知道某个进程是否完成。这会变得很混乱。将这些文件放在一个文件中是可行的方法。您可能需要设置最大执行时间,以确保脚本不会超时。找到你的php.ini文件,看看这个:Max_execution_time = XXX (seconds)

如果需要的话,将

更改为更高的值。Max_execution_time = 240 is 4 minutes

你也可以查看mysql事务,只有当所有进程完成时才提交更改。

http://dev.mysql.com/doc/refman/5.0/en/commit.html