laravel-soar(2.x)|laravel-soar(2.x) - 自动监控输出 SQL 优化建议、辅助 laravel 应用 SQL 优化
laravel-soar - 自动监控输出 SQL 优化建议、辅助 laravel 应用 SQL 优化。源码 https://github.com/guanguans/laravel-soar
功能
- 支持启发式算法语句优化建议、索引优化建议
- 支持 EXPLAIN 信息丰富解读
- 自动监控输出 SQL 优化建议
- Debug bar、Soar bar、JSON、Clockwork、Console、Dump、Log、自定义输出器(多种场景输出)
- 支持查询构建器生成 SQL 优化建议
$ composer require guanguans/laravel-soar --dev -vvv
配置 注册服务
laravel
$ php artisan vendor:publish --provider="Guanguans\\LaravelSoar\\SoarServiceProvider"
lumen 将以下代码段添加到
bootstrap/app.php
文件中的 Register Service Providers
部分下:$app->register(\Guanguans\LaravelSoar\SoarServiceProvider::class);
使用(示例代码) 自动监控输出 SQL 优化建议
- Json 响应(完整示例)
{
"message": "ok",
"soar_scores": [
{
"Summary": "[☆☆☆☆☆|0分|3.56ms|select * from `users` where `name` = 'soar' group by `name` having `created_at` > '2022-04-19 18:24:33']",
"HeuristicRules": [
...
{
"Item": "GRP.001",
"Severity": "L2",
"Summary": "不建议对等值查询列使用 GROUP BY",
"Content": "GROUP BY 中的列在前面的 WHERE 条件中使用了等值查询,对这样的列进行 GROUP BY 意义不大。",
"Case": "select film_id, title from film where release_year='2006' group by release_year",
"Position": 0
},
...
],
"IndexRules": [
{
"Item": "IDX.001",
"Severity": "L2",
"Summary": "为laravel库的users表添加索引",
"Content": "为列name添加索引;
为列created_at添加索引;
由于未开启数据采样,各列在索引中的顺序需要自行调整。",
"Case": "ALTER TABLE `laravel`.`users` add index `idx_name_created_at` (`name`(191),`created_at`) ;
\n",
"Position": 0
}
],
"Explain": [],
"Backtraces": [
"#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"
]
},
...
]
}
- Soar bar
文章图片
- Debug bar
文章图片
- Clockwork
文章图片
- Console
文章图片
- Dump
文章图片
- Log
文章图片
- 自定义输出器
【laravel-soar(2.x)|laravel-soar(2.x) - 自动监控输出 SQL 优化建议、辅助 laravel 应用 SQL 优化】
config/soar.php
文件中配置输出器即可 [
// \Guanguans\LaravelSoar\Outputs\ClockworkOutput::class,
// \Guanguans\LaravelSoar\Outputs\ConsoleOutput::class,
// \Guanguans\LaravelSoar\Outputs\DumpOutput::class => ['exit' => false],
\Guanguans\LaravelSoar\Outputs\JsonOutput::class,
\Guanguans\LaravelSoar\Outputs\LogOutput::class => ['channel' => 'daily'],
\Guanguans\LaravelSoar\Outputs\DebugBarOutput::class,
\Guanguans\LaravelSoar\Outputs\SoarBarOutput::class,
],
...
];
Soar 实例及方法
soar();
// 获取 Soar 实例
app('soar');
// 获取 Soar 实例/**
* Soar 门面.
*
* @method static string score(string $sql)// SQL 评分
* @method static array arrayScore(string $sql)// SQL 数组格式评分
* @method static string jsonScore(string $sql)// SQL json 格式评分
* @method static string htmlScore(string $sql)// SQL html 格式评分
* @method static string mdScore(string $sql)// SQL markdown 格式评分
* @method static string explain(string $sql)// explain 解读信息
* @method static string mdExplain(string $sql)// markdown 格式 explain 解读信息
* @method static string htmlExplain(string $sql)// html 格式 explain 解读信息
* @method static null|string syntaxCheck(string $sql) // 语法检查
* @method static string fingerPrint(string $sql)// SQL 指纹
* @method static string pretty(string $sql)// 格式化 SQL
* @method static string md2html(string $sql)// markdown 转 html
* @method static string help()// Soar 帮助
* @method static null|string exec(string $command)// 执行任意 Soar 命令
* @method static string getSoarPath()// 获取 Soar 路径
* @method static array getOptions()// 获取 Soar 配置选项
* @method static Soar setSoarPath(string $soarPath)// 设置 Soar 路径
* @method static Soar setOption(string $key, $value)// 设置 Soar 配置选项
* @method static Soar setOptions(array $options)// 批量设置 Soar 配置选项
*
* @see \Guanguans\SoarPHP\Soar
* @see \Guanguans\LaravelSoar\Soar
*/
class Soar{}
查询构建器方法
namespace Illuminate\Database\Eloquent {
/**
* @method string toRawSql()
* @method voiddumpRawSql()
* @method voidddRawSql()
* @method arraytoSoarArrayScore()
* @method voiddumpSoarArrayScore()
* @method voidddSoarArrayScore()
* @method string toSoarJsonScore()
* @method voiddumpSoarJsonScore()
* @method voidddSoarJsonScore()
* @method string toSoarHtmlScore()
* @method voidechoSoarHtmlScore()
* @method voidexitSoarHtmlScore()
* @method string toSoarHtmlExplain()
* @method voidechoSoarHtmlExplain()
* @method voidexitSoarHtmlExplain()
*
* @see \Guanguans\LaravelSoar\Support\Macros\QueryBuilderMacro
*/
class Builder
{
}
}
推荐阅读
- Windows 8.1专业版系统下完成开机自动登录的技巧
- 这里的姿态控制系统和电源的自动控制系统就属于嵌入式系统
- 使用Mybatis-Generator自动生成DaoModelMapping相关文件
- Android相机实时自动对焦的完美实现
- 最新的19种最佳自动化测试工具合集(哪个更好())
- 最新52种最佳DevOps工具合集(自动化、监控等)
- 使用有限自动机进行字符串匹配
- Windows8.1专业版自带截图工具自动保存图片的技巧
- 雨林木风Win8.1纯净版开机自动扫描驱动器的关闭技巧
- 电脑自动开机升级图文详细教程