当前位置: 首页 > 后端技术 > PHP

laravel-soar(2.x)-自动监听输出SQL优化建议,辅助laravel应用SQL优化

时间:2023-03-29 19:24:13 PHP

laravel-soar-自动监听输出SQL优化建议,辅助laravel应用SQL优化。源码https://github.com/guanguans/laravel-soar功能支持启发式算法语句优化建议,索引优化建议支持EXPLAIN丰富信息解释自动监控输出SQL优化建议Debugbar,Soarbar,JSON,Clockwork,Console,Dump、日志和自定义输出器(多场景输出)支持查询生成器生成SQL。建议安装$composerrequireguanguans/laravel-soar--dev-vvv配置注册服务laravel$phpartisanvendor:publish--provider="Guangans\\LaravelSoar\\SoarServiceProvider"lumen在Register下添加如下代码片段bootstrap/app.php文件中的服务提供者部分:$app->register(\Guangans\LaravelSoar\SoarServiceProvider::class);使用(示例代码)自动监控输出SQL优化建议Json响应(完整示例){"message":"ok","soar_scores":[{"Summary":"[☆☆☆☆☆|0min|3.56ms|select*来自`users`,其中`name`='soar'按具有`created_at`的`name`>'2022-04-1918:24:33']","HeuristicRules":[...{"Item":“GRP.001”,“严重性”:“L2”,"Summary":"不建议对等价查询列使用GROUPBY","Content":"GROUPBY中的列在前面的WHERE条件中使用等价查询,此类列使用GROUPBY没有意义","Case":"selectfilm_id,titlefromfilmwhererelease_year='2006'groupbyrelease_year","Position":0},...],"IndexRules":[{"Item":"IDX.001","Severity":"L2","Summary":"为laravel库的users表添加索引","Content":"为列名添加索引;为created_at列添加索引;since没有开启数据采样,每一列在索引中的顺序需要自己调整。","Case":"ALTERTABLE`laravel`.`users`添加索引`idx_name_created_at`(`name`(191),`created_at`);\n","Position":0}],"Explain":[],"回溯":["#13/app/Admin/Controllers/HomeController.php:74","#55/Users/yaozm/Documents/develop/laravel-soar/src/Http/Middleware/OutputSoarScoreMiddleware.php:45","#76/public/index.php:55","#77/server.php:21"]},...]}SoarbarDebugbarClockworkConsoleDumpLog自定义输出实现该接口[//\广安\LaravelSoar\欧tputs\ClockworkOutput::class,//\Guangans\LaravelSoar\Outputs\ConsoleOutput::class,//\Guangans\LaravelSoar\Outputs\DumpOutput::class=>['exit'=>false],\Guangans\LaravelSoar\Outputs\JsonOutput::class,\Guangans\LaravelSoar\Outputs\LogOutput::class=>['channel'=>'daily'],\Guangans\LaravelSoar\Outputs\DebugBarOutput::class,\Guangans\LaravelSoar\Outputs\SoarBarOutput::类,],...];Soar实例和方法soar();//获取Soar实例app('soar');//获取Soar实例/***Soar门面。**@methodstaticstringscore(string$sql)//SQL分数*@methodstaticarrayarrayScore(string$sql)//SQL数组格式分数*@methodstaticstringjsonScore(string$sql)//SQLjson格式分数*@methodstaticstringhtmlScore(string$sql)//SQLhtml格式的分数*@methodstaticstringmdScore(string$sql)//SQLmarkdown格式的分数*@methodstaticstringexplain(string$sql)//解释解释信息*@methodstaticstringmdExplain(string$sql)//markdown格式的解释信息explain*@methodstaticstringhtmlExplain(string$sql)//html格式的解释信息explain*@methodstaticnull|stringsyntaxCheck(string$sql)//语法检查*@methodstaticstringfingerPrint(string$sql)//SQL指纹*@methodstaticstringpretty(string$sql)//格式化SQL*@methodstaticstringmd2html(string$sql)//markdowntohtml*@methodstaticstringhelp()//Soar帮助*@methodstaticnull|stringexec(string$command)//执行任何Soar命令*@methodstaticstringgetSoarPath()//获取Soar路径*@methodstaticarraygetOptions()//获取Soar配置选项*@methodstaticSoarsetSoarPath(string$soarPath)//设置Soar路径*@methodstaticSoarsetOption(string$key,$value)//设置Soar配置选项*@methodstaticSoarsetOptions(array$options)//批量设置Soar配置选项**@see\Guangans\SoarPHP\Soar*@see\Guangans\劳拉velSoar\Soar*/classSoar{}查询构建器方法命名空间Illuminate\Database\Eloquent{/***@methodstringtoRawSql()*@methodvoiddumpRawSql()*@methodvoidddRawSql()*@methodarraytoSoarArrayScore()*@methodvoiddumpSoarArrayScore()*@methodvoidddSoarArrayScore()*@methodstringtoSoarJsonScore()*@methodvoiddumpSoarJsonScore()*@methodvoidddSoarJsonScore()*@methodstringtoSoarHtmlScore()*@methodvoidechoSoarHtmlScore()*@methodvoidexitSoarHtmlScore()*@methodstringtoSoarHtmlExplain()*@methodvoidechoSoarHtmlExplain()*@methodvoidexitSoarHtmlExplain()**@see\Guanguans\LaravelSoar\Support\Macros\QueryBuilderMacro*/classBuilder{}}