9.7. 减少 SQL 查询(上)

减少 SQL 查询

上一节我们已经榨干了 Web 服务器的性能,但不管我们用多大的并发,吞吐量总是在 580 左右,这是因为影响吞吐量的不仅仅是 PHP-FPM 进程数量,还有代码执行效率,而 SQL 查询是影响执行效率的一个重要因素,所以接下来我们将尽可能地减少秒杀接口的 SQL 查询数量。

1. 开启 SQL 日志

为了更清楚地了解在一次秒杀请求过程中发生了哪些 SQL 查询,我们需要先开启 SQL 日志。

app/Providers/AppServiceProvider.php

use Illuminate\Support\Str;
.
.
.
    public function boot()
    {
        .
        .
        .
        // 只在本地开发环境启用 SQL 日志
        if (app()->environment('local')) {
            \DB::listen(function ($query) {
                \Log::info(Str::replaceArray('?', $query->bindings, $query->sql));
            });
        }
    }
.
.
.

由于我们的业务规则不允许一个用户同时存在两个未支付的秒杀订单,所以先在数据库中删掉之前创建的秒杀订单:

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0

暂无话题~