我在我的网站上运行一个laravel应用程序.由于我已经将数据库的一个表"places"扩展到大约12GB的大小,因此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


我也能看到当我 run 的时候 php artisan个 在根文件夹的终端,大约需要10秒才能显示结果

对于上面的图像,我们可以得出结论,数据库查询不需要很长时间,尽管大小.只是 bootstrap 时间占用了页面加载时间的较大部分.

但是,当我将数据库更改为较小的数据库时, bootstrap 时间返回到<1秒.我不知道问题出在哪里.

我已经try 了优化的基本方法,包括 php artisan optimize个 以及判断是否启用了OPCache

数据库配置如下:https://justpaste.it/csgo2

SELECT COUNT(*) FROM information_schema.tables; SHOW GLOBAL STATUS; SHOW GLOBAL VARIABLES;

有什么建议吗?

EDIT

这是由这两件事解决的-

  1. 正在删除 bootstrap 期间运行的计数(*)查询
  2. 从PHPMyAdmin添加了对数据库表的索引

推荐答案

花费大量时间的查询是:

SELECT * FROM 'places' WHERE category LIKE '%2184%' AND city_id= 1 LIMIT 16 OFFSET 0;

我最好的猜测是category字段没有索引.看看您的places表是否使用了category的索引.

如果您的category字段使用多个类别ID,请查看是否可以使用多对多表.这将提高性能.

如果您的category字段仅使用ategory_id,请查看是否可以将其设置为外键,这将自动为该列建立索引并提高性能.

如果该列可以引用多个表,但每条记录只引用一个id,则创建一个索引.这也会提高你的表现.

由于您还没有描述您的表定义,以下是我最好的猜测.

你还提到你的php artisan分很慢.您确定您没有执行__constructor‘S(直接或间接)中的数据库查询吗?因为这将是一个错误.您的构造函数仅用于构建类,而不是查询数据或运行任何业务逻辑.

Php相关问答推荐

将一个数字分配到一系列因素中(就像贪婪算法)

我的docker—compose lamp stack在软件更新后不工作:Containerconfig错误'''

累加平面数组中数字子集的所有组合,以生成组合及其乘积的二维数组

从订单项目中获取ACF WooCommerce产品价值

如何保存基于用户 Select 的复选框 Select 模式

laravel中获取的数据会自动更改时间戳值

使用与OpenSSL命令行兼容的AES-256-CTR为大型文件创建php代码OpenSSL加密

PHP:为什么递归需要这么长时间

未检测到laravel控制器

扩展 WooCommerce 类触发未捕获错误:未找到WC_Coupon类

Filament v3:具有 hasMany 和 BelongsTo 的关系管理器

WooCommerce:如果购物车中已存在产品,则增加购物车商品数量

如何在 Phpunit 的静态提供程序中创建测试双打?

将图像作为 PHP post 响应发送到浏览器

根据所选付款方式启用/禁用 WooCommerce 所需的 checkout 字段

WooCommerce单个产品页面上启用额外选项卡的产品元框字段

从 laravel 中的日期类型中删除时间

如何限制for循环php中的条目数

WooCommerce 按 ID 限制产品

如何从 PHP 中的字符串位置排除图像扩展名