VPS参考测评推荐
专注分享VPS主机优惠信息
衡天云优惠活动
华纳云优惠活动
荫云优惠活动

创建mysql索引极大地优化了php应用程序的性能(创建MySQL索引极大地优化了PHP应用程序的性能模块)

主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情!
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作

本文为您带来了一些关于mysql的知识,其中主要介绍了索引大大优化php应用程序性能的相关内容。下面就让我们一起来看看吧,希望能帮到你。

创建mysql索引极大地优化了php应用程序的性能(创建MySQL索引极大地优化了PHP应用程序的性能模块)

起因前两个月,一个朋友想做一个项目,出于快速上线推广的目的,他直接购买了一家公司的源代码,让卖家在网上部署。看到源代码后,我直接对朋友说:是个小坑。这个源代码的质量有点差,用户计数后可能会出现严重的性能问题。

我做出这样的评价是有依据的:

作为一个接近实时的应用程序,核心代码用PHP编写,通过数据库表记录控制许多场景的并发和重复请求。

PHP开发不是问题,但另一位工程师似乎不知道有CLI模式,但程序一直通过crontab运行,因此每分钟都会执行几十个curl计划任务。

代码中有许多由class1.php和class1.php复制和备份的文件,很难一眼就知道它们的存在目的;

循环读取数据库的代码很多,命名规则混乱。

当然,能赚钱的代码是好代码(对方通过这些代码赚钱),我也没多费心。最初的想法是4核8G的配置跑10000个客户应该很难,跑5000个就可以了。

转折点出现在本周。突然频繁收到阿里云的报警短信和邮件,说CPU过高。祝营销顺利,用户数量大增?问朋友,只有不到300个用户!

01.png

这时我才意识到这组代码的实际性能比我想象的要差,并且存在严重的性能问题。按照这个资源消耗速度,升级硬件是个无底洞,性能优化才是正道。

我拿到了两个月性能优化的代码。我偶尔会在闲暇时看看它,我已经大致了解了它的结构和主要功能。现在出现了严重的性能问题,是时候尝试一些性能优化了。

鉴于数十个计划任务持续运行,不断驱动系统运行,首先了解计划任务的相关功能。根据我自己的理解,我首先暂停了20多个不必要的计划任务。无用的计划任务暂停后,系统的整体CPU利用率下降到60%以上,烦人的提醒消息和电子邮件终于停止了。等了一天,朋友没有反馈,功能受影响,说明思路和拍摄点是对的。

但是200多个用户这样消耗资源,肯定有问题。今天,我在空闲时登录了服务器,并执行了top命令。我发现mysql进程一直占用超过200%的CPU资源。看完源代码后,我知道MySQL占用大量资源是有原因的,也是可能的,但我仍然想看看它为什么会消耗这么多资源。

登录MySQL服务器,查看是否打开了slow log:show variables like“% slow %”功能;,发现慢速查询日志已打开:

02.png

然后检查日志,发现日志中出现了一条sql语句:

03.png

如您所见,该sql语句的执行扫描了380,000多行记录。该语句涉及的两个表有600多条记录,另一个有4万多条记录,这相当于多次扫描4万多张表。难怪它特别慢。

然后检查两个表的索引,除了作为主键的自增id之外,没有创建其他索引。使用explain执行语句,显示没有使用索引:

04.png

接下来,在两个表上的查询条件的uid和session_id列上创建索引。创建索引后,肉眼可见的CPU占用率和系统负载会减少。使用explain再次执行查询语句,索引信息已被使用,扫描的行数大大减少:

05.png

经过上述优化后,当前应用的整体CPU利用率约为5%,MySQL的CPU利用率约为15%,系统负载从4降低到0.3。最后,我暂时不用担心性能问题,即使服务器配置降低到1核CPU,我也能坚持住。

进一步看代码,结合日志,创建索引,修改一些查询语句,CPU利用率降到了6%左右,终于暂时不用担心性能问题了。

总结工程师不仅要写“可用”的代码,还要在开发项目中写“可用”的代码。在本例中,通过创建两个索引,可以大大提高系统性能,也就是说,代码可以从“可用”变为“易于使用”。

文中提到的性能优化偏向于运维,代码中的性能优化还未触及。但一个总的原则不会错:多使用缓存,尽可能减少对慢速IO设备的同步读取。

推荐学习:mysql视频教程和PHP视频教程。

这几篇文章你可能也喜欢:

本文由主机参考刊发,转载请注明:创建mysql索引极大地优化了php应用程序的性能(创建MySQL索引极大地优化了PHP应用程序的性能模块) https://zhujicankao.com/115321.html

【腾讯云】领8888元采购礼包,抢爆款云服务器 每月 9元起,个人开发者加享折上折!
打赏
转载请注明原文链接:主机参考 » 创建mysql索引极大地优化了php应用程序的性能(创建MySQL索引极大地优化了PHP应用程序的性能模块)
主机参考仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决!请查阅:特别声明

评论 抢沙发

评论前必须登录!