ahm*_*med 6 php mysql sql optimization
我正在使用PHP和mysql在我的localhst中开发一个脚本,我正在处理大数据(大约有2百万条用于科学研究的记录)
我需要在生活中调用一些查询(分析数据并准备一些数据); 但是例如需要很长时间:现在我的脚本正在分析一些数据超过4个小时
我知道我的数据库优化可能会有一些问题我不是专家
例如,我只是发现"索引"对于加速查询很有用,但即使索引某些列我的脚本仍然很慢
任何想法如何加快我的脚本(在PHP和MySQL中)
我使用XAMPP作为服务器包
非常感谢您的帮助
最好的祝福
更新1:
$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
}
Run Code Online (Sandbox Code Playgroud)
更新2:
我的quires中没有"JOIN"甚至"IN"
它们是非常简单的查询
而且不知道!我不知道怎么知道导致缓慢的原因是什么?
是PHP还是MYSQL?
Pas*_*TIN 13
首先,为了能够有效地进行优化,您需要知道花时间:
有了这些信息,您可以尝试弄清楚:
仍然:这是一个非常具体的问题,答案可能也非常具体 - 这意味着如果你想要的不仅仅是一般性答案,那么可能需要更多的信息......
编辑后进行编辑
因为你只有简单的查询,事情可能会更容易......也许吧.
select * from a where x = 12"和" select * from a where x = 14"具有相同的类型:相同的select,相同的表,相同的where子句 - 只有值更改EXPLAIN会有所帮助
microtimePHP将帮助您找出那些是什么
在此之前,要了解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个(甚至更多;通过反复试验找出)部分也会这样做.
| 归档时间: |
|
| 查看次数: |
11405 次 |
| 最近记录: |