我有一个工具,它将一个字符串与数据库中平均25万个字符串进行比较。比较过程中使用了两个表-categories和categories\u string。在字符串表中大约有250万行,而pivot-categories\u字符串包含700万行。
我的查询非常简单,选择strings列,连接pivot表,添加where子句来指定category,并将limit设置为10000。我在一个循环中运行这个查询,每个批处理是10000个字符串。为了更快地执行整个脚本,我使用seek方法,而不是mysql offset,后者在很大的偏移量上太慢了。然后,通过简单文本、levenshtein等常用算法对每批数据进行比较。这部分很简单。
问题从这里开始。
在我的笔记本电脑(联想x230)上,比较250k字符串的整个过程需要7,4秒来加载sql,13,3秒来比较所有行。然后对视图进行0,1秒的排序和转换。
我也有小型专用服务器。相同的php版本,相同的mysql。web服务器不重要,因为我现在从命令行运行它。在我的笔记本电脑上,总共需要+20秒,在服务器上它是。。。120秒。
那么,对于长时间运行的php程序来说,影响执行时间的最重要因素是什么呢?我所能想到的就是cpu,在专用服务器上更差的是intel(r)atom(tm)cpu n2800@1.86ghz。内存消耗相当低,约为2-4%。然而,我的笔记本电脑和服务器的cpu使用率分别为60%和99.7-100%。
在这种情况下,cpu是最重要的因素吗?有没有什么方法可以把它分成几个总的来说花费更少的过程?不管怎样,如何监视cpu使用率,脚本的哪一部分是最消耗的。
暂无答案!
目前还没有任何答案,快来回答吧!