首页 > 其他分享 >soar常用命令(抄)

soar常用命令(抄)

时间:2024-05-09 21:13:45浏览次数:11  
标签:echo --- 常用命令 report type select soar

https://github.com/XiaoMi/soar/blob/master/doc/cheatsheet.md?plain=1

常用命令

目录

基本用法

echo "select title from sakila.film" | ./soar -log-output=soar.log

指定输入源

# 从文件读取SQL
./soar -query file.sql

# 从管道读取SQL
cat file.sql | ./soar

指定配置文件

vi soar.yaml
# yaml format config file
online-dsn:
    addr:     127.0.0.1:3306
    schema:   sakila
    user:     root
    password: "1t'sB1g3rt"
    disable:  false

test-dsn:
    addr:     127.0.0.1:3306
    schema:   sakila
    user:     root
    password: "1t'sB1g3rt"
    disable:  false
echo "select title from sakila.film" | ./soar -test-dsn="root:1t'[email protected]:3306/sakila" -allow-online-as-test -log-output=soar.log

打印所有的启发式规则

soar -list-heuristic-rules

忽略某些规则

soar -ignore-rules "ALI.001,IDX.*"

打印支持的报告格式

soar -list-report-types

以指定格式输出报告

soar -report-type json

语法检查工具

echo "select * from tb" | soar -only-syntax-check
echo $?
0

echo "select * frm tb" | soar -only-syntax-check
At SQL 1 : syntax error at position 13 near 'frm'
echo $?
1

慢日志进行分析示例

pt-query-digest slow.log > slow.log.digest
# parse pt-query-digest's output which example script
python2.7 doc/example/digest_pt.py slow.log.digest > slow.md

SQL指纹

echo "select * from film where col='abc'" | soar -report-type=fingerprint

输出

select * from film where col=?

将 UPDATE/DELETE/INSERT 语法转为 SELECT

echo "update film set title = 'abc'" | soar -rewrite-rules dml2select,delimiter  -report-type rewrite

输出

select * from film;

合并多条ALTER语句

echo "alter table tb add column a int; alter table tb add column b int;" | soar -report-type rewrite -rewrite-rules mergealter

输出

ALTER TABLE `tb` add column a int, add column b int ;

SQL美化

echo "select * from tbl where col = 'val'" | ./soar -report-type=pretty

输出

SELECT
  *
FROM
  tbl
WHERE
  col  = 'val';

EXPLAIN信息分析报告

soar -report-type explain-digest << EOF
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
|  1 | SIMPLE      | film  | ALL  | NULL          | NULL | NULL    | NULL | 1131 |       |
+----+-------------+-------+------+---------------+------+---------+------+------+-------+
EOF
##  Explain信息

| id | select\_type | table | partitions | type | possible_keys | key | key\_len | ref | rows | filtered | scalability | Extra |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1  | SIMPLE | *film* | NULL | ALL | NULL | NULL | NULL | NULL | 0 | 0.00% | ☠️ **O(n)** |  |


### Explain信息解读

#### SelectType信息解读

* **SIMPLE**: 简单SELECT(不使用UNION或子查询等).

#### Type信息解读

* ☠️ **ALL**: 最坏的情况, 从头到尾全表扫描.

markdown 转 HTML

通过指定-report-css, -report-javascript, -markdown-extensions, -markdown-html-flags这些参数,你还可以控制HTML的显示格式。

cat test.md | soar -report-type md2html > test.html

清理测试环境残余的临时库表

如配置了-drop-test-temporary=falsesoar异常中止,-test-dsn中会残余以optimizer_为前缀的临时库表。手工清理这些库表可以使用如下命令。

注意:为了不影响正在进行的其他SQL评审,-cleanup-test-database中会删除1小时前生成的临时库表。

./soar -cleanup-test-database

标签:echo,---,常用命令,report,type,select,soar
From: https://www.cnblogs.com/route/p/18183065

相关文章

  • Drozer常用命令
    drozer常用命令基础命令adb端口转发,dozer连接adbforwardtcp:31415tcp:31415drozerconsoleconnect进入dozer输入list或ls,查看dozer所有模块list查找安装包runapp.package.list-f查看安装包信息runapp.package.info-a安装包名查看暴露的......
  • go学习笔记——常用命令
    1.查找go依赖go依赖可以去下面网站查找packagehttps://pkg.go.dev/比如https://pkg.go.dev/github.com/confluentinc/confluent-kafka-go#section-readme2.go切换源#启用GoModules功能goenv-wGO111MODULE=on#切换源goenv-wGOPROXY=https://goproxy.io......
  • Linux常用命令
    1.chmod777test.txt读,r:4写,w:2执行,x:1所以全部权限是7,因为需要分别设置所有者,所在组,其他人的权限所以是777.2.处理目录ls(英文全拼:listfiles):列出目录及文件名cd(英文全拼:changedirectory):切换目录pwd(英文全拼:printworkdirectory):显示目前的目录mkdir(英文全拼:makedi......
  • MongoDB基本常用命令
    MongoDB基本常用命令数据库操作选择和创建数据库选择和创建数据库的语法格式:use数据库名称如果数据库不存在则自动创建,例如,以下语句创建articledb数据库:usearticledb查看有权限查看的所有的数据库命令showdbs或showdatabases注意:在MongoDB中,集合只有在内......
  • Linux常用命令:echo、cat、tail详解
    Linux常用命令:echo、cat、tail详解Linux常用命令:echo、cat、tail详解在Linux系统中,命令行工具是非常强大的。其中,echo、cat和tail这三个命令在日常的系统管理和文本处理中经常被使用。下面,我们将逐一探讨这三个命令的详细用法和常见示例。1.echo命令echo是一个常用的输出......
  • Linux常用命令
    Linux是一种开源的类Unix操作系统,它在全球范围内得到了广泛的应用。作为一名IT技术专家,掌握Linux的常用命令对于提高工作效率和解决问题至关重要。在这篇博客中,我将为您介绍一些常用的Linux命令及其用法。1.ls:列出目录中的文件和文件夹ls命令用于列出当前目录下的文件和文件......
  • Redis常用命令
    Redis数据类型: String字符串Lists列表Sets集合Sortedsets有序集合Hashs哈希表 常用命令#插入数据setnamephp#读取getname#删除键值delname#验证键值是否存在existsname#setnx;,设置key对应的值为string类型的value。如果key已经存在,返回......
  • Linux常用命令
    Linux常用命令目录Linux常用命令用户相关修改密码创建用户基本命令查看手册对输出进行搜索对输出进行分页后台运行程序列出所有进程关闭特定进程让程序以服务的形式运行关机重启文件和目录相关查看文件内容查看目录文件列表修改权限修改所属用户修改所属组软件相关安装软件查看已......
  • FFmpeg常用命令案例记录
    音频转换mp3为ogg格式ffmpeg-iinput.mp3-c:alibvorbisoutput.ogg降低音量(例如50%)ffmpeg-iinput.mp3-af"volume=0.5"output.mp3视频转换mkv为mp4并进行无损压缩ffmpeg-iinput.mkv-c:vlibx264-crf18-presetslow-c:acopyoutput.mp4转换4K为10......
  • Linux bash常用命令案例记录
    scp(iftheprivatekeyisid_rsa,[-i]canberemoved)scp-ikey-Pportlocalfileuser@ip:pathbacktothebeginningoflineCtrl+agototheendoflineCtrl+ecutcharacterfromcurrentpositiontothebeginningCtrl+ucutchara......