我在我的网站上运行了一个laravel应用程序。自从我将数据库中的一个表“places”扩展到大约12 GB大小后,HomePage的启动时间急剧增加到~12秒,SearchPage查询“places”表的启动时间增加到~15秒。
下面的2张图片来自主页的图片栏
Image from HomePage DebugBar Timeline
Image from HomePage DebugBar Queries的
下面的2张图片来自SearchPage的搜索栏
Image from SearchPage DebugBar Timeline的
Image from SearchPage DebugBar Queries的
我还可以看到,当我在根文件夹的终端运行php artisan
时,它需要大约10秒才能显示结果
对于上面的图片,我们可以得出结论,数据库查询并不需要很长时间,尽管大小。只是引导时间占用了页面加载时间的更大部分。
但是,当我将数据库更改为小数据库时,启动时间又回到了<1秒。
我尝试了基本的优化方法,包括php artisan optimize
和检查是否启用了OPCache
下面是数据库的配置:https://justpaste.it/csgo2SELECT COUNT(*) FROM information_schema.tables; SHOW GLOBAL STATUS; SHOW GLOBAL VARIABLES;
个
有什么建议吗?
已编辑
这是由这两件事决定的-
1.删除引导期间运行的SQL(*)查询
1.在数据库表上添加PHPMyAdmin中的索引
2条答案
按热度按时间ecbunoof1#
需要花费大量时间的查询是:
字符串
我最好的猜测是
category
字段没有索引。看看你的places
表是否为category
使用了索引。如果你的
category
字段使用多个类别id,看看你是否可以使用多对多的表来代替。这将提高性能。如果
category
字段只使用category_id,看看是否可以将其设置为外键,这将自动索引该列并提高性能。如果该列可以引用多个表,但每个记录只引用一个id,那么创建一个索引。这也会提高性能。
由于您还没有描述表的定义,因此这些是我最好的猜测。
你还提到你的
php artisan
很慢。你确定你没有在__constructor
中执行数据库查询(直接或间接)吗?因为这将是一个错误。你的构造函数只是构建你的类,而不是查询数据或运行任何业务逻辑。9w11ddsr2#
如果你在开发模式下运行,我可以理解,但如果你在生产模式下运行,这可能是你的应用程序的一个严重问题。
在.env文件集中:
字符串
你能跑吗:
型
所有这些命令,只是为了比较是否有重大变化。