我正在尝试构建一个为长时间运行的页面加载的进度条(是的索引是明显的解决方案,但目前数据集/模式禁止分区/正确索引)所以我打算在查询注释中使用GUID / uniqueID来跟踪通过ajax使用SHOW_FULL_PROCESSLIST进行编程 - 但如果按顺序执行顺序查询,那么关键在于,有人知道吗?
答案 0 :(得分:3)
MySQL作为数据库服务器使用多个线程来处理多个正在运行的查询。它在从客户端接收查询时分配一个线程,即PHP连接或ODBC连接等。
但是,既然你提到了mysql_query,我认为你脑子里可以有两件事:
如果多次调用mysql_query()来传递各种命令,那么在完成上一个查询完成后,MySQL将通过每个查询并将结果返回给PHP。所以,当然MySQL似乎会按顺序工作,尽管它实际上是等待MySQL发送查询的PHP直到一个查询完成。
在MySQL5和PHP5中有一个名为(mysqli_multi_query()
)的函数,您可以使用该函数一次将多个查询传递给MySQL,而无需等待1个查询结束。该函数将在同一结果对象中一次性返回所有结果。 MySQL将一次实际使用多线程,在这种情况下,等待时间运行所有的查询基本上是少,你也倾向于使用可更好的为所有的查询将运行独立的线程,服务器资源
答案 1 :(得分:1)
正如巴贝奇曾经说过的那样,“我无法正确地理解那些可能引发这样一个问题的想法混乱。”对mysql_query
的调用,如对任何其他函数的调用,按照在程序流程中到达的顺序执行。
答案 2 :(得分:0)
文件中的顺序大多无关紧要。重要的是执行顺序。
<?php
myCmdFour();
myCmdTwo();
myCmdThree();
myCmdTwo();
function myCmdTwo() {
mysql_query(...);
}
function myCmdThree() {
mysql_query(...);
}
function myCmdFour() {
mysql_query(...);
}
myCmdFour();
myCmdThree();
myCmdTwo();
myCmdTwo();
?>
虽然任何拥有这样的PHP文件的人都需要认真重新思考。