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

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

上一篇 下一篇
Summer
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0

暂无话题~