Ale*_*lex 9 mysql database performance myisam laravel
我们有一个Laravel应用程序(版本5.4.18),它连接到MySQL(5.6.38)数据库(总共300k行),MyISAM类型.我们有api-response之类的Model::with('anothermodel')->paginate(25),并且在某些时候这个查询的执行时间已达到18秒,这是非常大的价值.我创建了一个沙盒,其中包含使用exaclty相同数据库(在同一服务器上)的副本的实时laravel环境,现在这个api-response在2.5秒内执行.如果我们尝试将沙盒laravel连接到实时DB,那么api执行再次是18s.请检查图像.
因此,如果我们假设问题出现在实时网站的数据库表中,但如果我们尝试用这个查询来衡量microtime,那么它将显示生成此查询并从数据库中获取数据所需的时间仅为0.7秒.
因此,如果我们假设问题出现在API路由或Laravel代码中,但是如果我只是将其复制到子目录(作为沙箱),那么执行相同的代码没有任何问题.
有任何想法吗?
还有一些服务器信息:Linux服务器上的PHP 7.0.29,内存为32GB.
我为你提供了 3 个解决方案:
1)使用以下命令检查、优化和修复表:
mysqlcheck -u root -p --auto-repair --check --optimize --all-databases
Run Code Online (Sandbox Code Playgroud)
2) 如果问题没有解决,请使用Newrelic等监控应用程序检查您的查询执行计划
3)有时这与特定的表无关,而是与数据库损坏有关,尝试删除并使用旧数据创建一个新表。 如何恢复/重新创建 mysql 的默认“mysql”数据库