9.7. 减少 SQL 查询(上)

本教程最新版为 8.x,当前版本已放弃维护,请阅读最新版本!

减少 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 网站上。

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

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0

暂无话题~