>  기사  >  백엔드 개발  >  PHP写代码直接处理MySQL中的大量数据,卡死

PHP写代码直接处理MySQL中的大量数据,卡死

WBOY
WBOY원래의
2016-06-06 20:34:521179검색

有时候需要独立处理数据库中的大量数据,这个时候就自己写代码去处理,但是执行的时候,很耗资源,这个一执行,基本上网站的其它功能就全都卡在那里,动不了了,大家有什么好的解决方案吗?

实际情况是这样的,公司A系统中,有电话录音文件,这些录音文件,需要和B系统中的用户关联起来,所以,录音文件的文件名中包含了用户的电话号码,通过电话号码,在B系统中的数据库查找顾客ID,然后关联,大概有十几万条通话记录吧。PHP写了一段代码来处理,但是一执行,就系统的其它功能就卡住了,动不了

回复内容:

有时候需要独立处理数据库中的大量数据,这个时候就自己写代码去处理,但是执行的时候,很耗资源,这个一执行,基本上网站的其它功能就全都卡在那里,动不了了,大家有什么好的解决方案吗?

实际情况是这样的,公司A系统中,有电话录音文件,这些录音文件,需要和B系统中的用户关联起来,所以,录音文件的文件名中包含了用户的电话号码,通过电话号码,在B系统中的数据库查找顾客ID,然后关联,大概有十几万条通话记录吧。PHP写了一段代码来处理,但是一执行,就系统的其它功能就卡住了,动不了

这种情况,大部分应该是SQL语句性能问题造成的,你可以尝试优化一下你的sql,附上一篇文章:MySQL性能优化的最佳20+条经验

不知道你这个是属于自动任务还是?如果是自动任务建议放在大半夜用户访问量比较少的情况下执行.不是的话不知道是读的多还是写的多呢?写的多那你估计把表给锁死了

优化一下你的sql吧,先确定瓶颈在哪?一般不在PHP哦。

跟朋友讨论的时候,然后突然想到,录音文件中是包含了录音时间的,同时每条录音,都有相应的服务信息提交到系统中,那么就可以先收集这些录音文件的时间,然后排序,取出时间段,再根据这个时间段,去读这段时间内相应的服务记录的user_id,关联读取电话号码,然后再进行文件操作,这样就可以大大降低访问数据库的频率
这样或许才是正确的思路吧

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.