我正在使用 PHP 和 mysql 在我的本地开发一个脚本,我正在处理大数据(大约有 200 万条记录用于科学研究)
一些我一生需要调用一次的查询(分析数据并准备一些数据);但是需要很长时间,例如:现在我的脚本分析了一些数据超过 4 小时
我知道我在优化我的数据库时可能会遇到一些问题 我不是专家
例如,我刚刚发现“索引”对于加快查询速度很有用
然而,即使索引了一些列,我的脚本仍然很慢
知道如何加速我的脚本(在 PHP 和 mysql 中)
我使用 XAMPP 作为服务器包
非常感谢帮助
此致
更新1:
我的慢速脚本的一部分,需要 4 个多小时来处理
$sql = "select * from urls";//10,000 record of cached HTML documents
$result = $DB->query($sql);
while($row = $DB->fetch_array($result)){
$url_id = $row["id"];
$content = $row["content"];
$dom = new DOMDocument();
@$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
$row = $xpath->evaluate("/html/body//a");
for($i = 0; $i < $row->length; $i++) {
// lots of the code here to deal with the HTML documents and some update and insert and select queries which query another table which has 1 million record
}
更新2:
我的查询中没有“JOIN”,甚至没有“IN”
它们是非常简单的查询
不知道!我不知道怎么知道是什么导致了缓慢?
是 PHP 还是 MYSQL?
最佳答案
首先,为了能够有效地优化,您需要知道需要花费什么时间:
有了这些信息,您就可以尝试找出:
仍然:这是一个非常具体的问题,答案也可能非常具体-这意味着如果您想要的不仅仅是一般答案,则可能需要更多信息......
编辑后编辑
由于您只有简单的查询,因此事情可能会更容易一些......也许吧。
select * from a where x = 12
”和“select * from a where x = 14
”属于同一类型:相同的选择,相同的表,相同的where子句——只有值改变了EXPLAIN
会有所帮助microtime
来自 PHP 将帮助您找出哪些是在此之前,要查明 PHP 是否工作太多,或者它是否是 MySQL,一个简单的方法是在 Linux 上使用“top”命令,或“进程管理器”(我不是在 Windows 上,也不要用英语使用它——真名可能是别的东西)。
如果 PHP 占用了 100% 的 CPU,那么您就是罪魁祸首。如果 MySQL 正在吃掉所有的 CPU,那么你也有罪魁祸首。
当您知道其中哪一个工作过多时,这是第一步:您知道首先要优化什么。
我从你的代码部分看到你是:
如果您有一个多核 CPU,一个想法(如果我看到 PHP 正在消耗大量 CPU,我会尝试)将并行化。
例如,您可以同时运行两个 PHP 脚本实例:
select * from urls where id < 5000
” select * from urls where id >= 5000
” 您将在网络(可能不是问题)和数据库(数据库知道如何处理并发,使用它的 2 个脚本通常不会太多)上获得更多的并发性,但是您将能够在同一时间内处理几乎两倍相同数量的文件。
如果您有 4 个 CPU,将 urls-list 分成 4 个(甚至更多;通过反复试验找出)部分也可以。
关于php - 如何加速Mysql和PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1434822/