XiaoMi/soar最適化ツール-コマンドバージョン
4219 ワード
小米-DBAオープンソースSoar
https://github.com/XiaoMi/soar
soarデータベースプロファイルのロード
デフォルトファイルは/etc/soarに従います.yaml, ./etc/soar.yaml, ./soar.yamlは順番にロードし、最初のプロファイルを見つけてから後のプロファイルをロードしない
共通コマンド
基本的な使い方
入力ソースの指定
プロファイルの指定
すべてのイニシアチブルールを印刷
構文チェックツール
スロー・ログの分析例
SQL指紋
しゅつりょく
UPDATE/DELETE/INSERT構文をSELECTに変換
しゅつりょく
複数のALTER文のマージ
しゅつりょく
SQL美化
しゅつりょく
EXPLAIN情報分析レポート
markdown変換HTML
-report-css、-report-javascript、-markdown-extensions、-markdown-html-flagsのパラメータを指定することで、HTMLの表示フォーマットを制御することもできます.
テスト環境の残りのテンポラリ・ライブラリ・テーブルのクリーンアップ
注意:1時間前に生成されたテンポラリ・ライブラリ・テーブルは、進行中の他のSQLレビューに影響を与えないように、
SQL採点ルール
https://github.com/XiaoMi/soar
soarデータベースプロファイルのロード
デフォルトファイルは/etc/soarに従います.yaml, ./etc/soar.yaml, ./soar.yamlは順番にロードし、最初のプロファイルを見つけてから後のプロファイルをロードしない
共通コマンド
基本的な使い方
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
構文チェックツール
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=false
またはsoar
の異常停止が構成されている場合、-test-dsn
には、optimizer_
を接頭辞とするテンポラリ・ライブラリ・テーブルが残ります.これらのライブラリテーブルを手動でクリーンアップするには、次のコマンドを使用します.注意:1時間前に生成されたテンポラリ・ライブラリ・テーブルは、進行中の他のSQLレビューに影響を与えないように、
-cleanup-test-database
から削除されます../soar -cleanup-test-database
SQL採点ルール
Severity , 。 100 , 0 。
L0 ,L1 5 ,L2 10 , 5 。 L1, L2
, 15 。
: markdown html -report-type ,
。