sql自動化檢查和分析工具 :soar和soar-web 安裝和使用體驗

来源:https://www.cnblogs.com/itshare/archive/2020/04/05/12637519.html
-Advertisement-
Play Games

為了研究一下sql自動化檢查和分析工具,是否有網上介紹的好用,我在本地進行soar 和 soar-web的安裝和使用。 初步的實驗結果,總結如下: 1. 安裝相對來說較為麻煩,特別是soar-web的依賴包安裝,涉及到python pip相關組件的下載安裝。 2. 啟動soar-web會遇到一些奇怪 ...


為了研究一下sql自動化檢查和分析工具,是否有網上介紹的好用,我在本地進行soar 和 soar-web的安裝和使用。

初步的實驗結果,總結如下:

1. 安裝相對來說較為麻煩,特別是soar-web的依賴包安裝,涉及到python pip相關組件的下載安裝。

2. 啟動soar-web會遇到一些奇怪問題,提示 “ImportError: No module named xxx“ 沒有安裝,但是通過python -m pip list檢查是有安裝成功的。

3. soar-web的啟動腳本run.sh,不能正常啟動;但是使用python./soar-web.py install卻可以正常啟動。

4. 資料庫類型,只支持MySQL一種

 

後續:

最後,綜合感覺,soar-web的功能,距離自動化SQL檢查和優化,還有很大空間。接下來,我將繼續調研和對比剩下兩個工具:see 和 Yearning

1.see 工具

https://github.com/myide/see

2. Yearning 工具

https://github.com/cookieY/Yearning

 

一 、soar主要步驟,如下:

step 1: 下載安裝包

# prepare dir and install
mkdir -p /opt/soft/soar && mkdir -p /opt/install/soar/{log,conf}
wget -O /opt/soft/soar/soar  -c https://github.com/XiaoMi/soar/releases/download/0.11.0/soar.linux-amd64

 

step 2: 複製和安裝文件

# install server
mv /opt/soft/soar/soar /opt/install/soar

# 目錄介紹:
# 配置文件為yaml格式。一般情況下只需要配置online-dsn, test-dsn, log-output等少數幾個參數。即使不創建配置文件SOAR仍然會給出基本的啟髮式建議。
# 預設文件會按照/etc/soar.yaml, ./etc/soar.yaml, ./soar.yaml順序載入,
# 找到第一個後不再繼續載入後面的配置文件。如需指定其他配置文件可以通過-config參數指定。
# 關於資料庫許可權online-dsn需要相應庫表的SELECT許可權,test-dsn需要root最高許可權。

# 修改預設配置參數,如下
# 參考 
# # 1. 修改soar.conf的基本參數
root >> cat > /opt/install/soar/conf/soar.yaml << EOF
# 線上環境配置
online-dsn:
  addr: CNT7XMYSQLD01:13306
  schema: sakila
  user: root
  password: 1t'sB1g3rt
  disable: false
# 測試環境配置
test-dsn:
  addr: CNT7XMYSQLD01:13307
  schema: test
  user: root
  password: 1t'sB1g3rt
  disable: false
# 是否允許測試環境與線上環境配置相同
allow-online-as-test: true
# 是否清理測試時產生的臨時文件
drop-test-temporary: true
# 語法檢查小工具
only-syntax-check: false
sampling-statistic-target: 100
sampling: false
# 日誌級別,[0:Emergency, 1:Alert, 2:Critical, 3:Error, 4:Warning, 5:Notice, 6:Informational, 7:Debug]
log-level: 7
log-output: ${SOAR_LOG_DIR}/soar.log
# 優化建議輸出格式
report-type: markdown
ignore-rules:
- ""
# 黑名單中的 SQL 將不會給評審意見。一行一條 SQL,可以是正則也可以是指紋,填寫指紋時註意問號需要加反斜線轉義。
blacklist: ${SOAR_CONF_DIR}/soar.blacklist
# 啟髮式演算法相關配置
max-join-table-count: 5
max-group-by-cols-count: 5
max-distinct-count: 5
max-index-cols-count: 5
max-total-rows: 9999999
spaghetti-query-length: 2048
allow-drop-index: false
# EXPLAIN相關配置
explain-sql-report-type: pretty
explain-type: extended
explain-format: traditional
explain-warn-select-type:
- ""
explain-warn-access-type:
- ALL
explain-max-keys: 3
explain-min-keys: 0
explain-max-rows: 10000
explain-warn-extra:
- ""
explain-max-filtered: 100
explain-warn-scalability:
- O(n)
query: ""
list-heuristic-rules: false
list-test-sqls: false
verbose: true
root >> EOF

 step 3: 準備環境變數

# env parameter and path
echo '' >> /etc/profile && \
echo 'SOAR_HOME=/opt/install/soar' >> /etc/profile && \
echo 'SOAR_CONF_DIR=$SOAR_HOME/conf' >> /etc/profile && \
echo 'SOAR_LOG_DIR=$SOAR_HOME/log' >> /etc/profile && \
echo 'PATH=$PATH:$SOAR_HOME' >> /etc/profile && \
source /etc/profile

 step 4: 文件賦予許可權

chmod -R 777 $SOAR_HOME/soar

 step 5: 檢查soar全局配置生效

# 查看版本
soar -version

# 列印所有的啟髮式規則
soar -list-heuristic-rules

# 列印支持的報告格式
soar -list-report-types

 

二 、soar-web主要步驟,如下:

step 1: 安裝soar-web的依賴包

step 1: 安裝soar-web的依賴包
# 1.1 安裝python3 和 python3-pip 和 gcc (gcc在源代碼安裝pycryptodome等python組件時候需要)
yum install -y python36 python36-pip gcc

# 檢查python3安裝結果
python -V
# 檢查pip已經安裝的python組件
python3 -m pip list
# 卸載pip組件
# python3 -m pip uninstall "packagename" 

# 1.2 flask (必須先安裝python3)
# 安裝教程:https://www.cnblogs.com/wobeinianqing/p/7650498.html
# yum install -y flask
python3 -m pip install flask


# 1.3 安裝 pymysql (必須先安裝python3)
# 安裝教程:https://blog.csdn.net/qq_37788558/article/details/73716002
# 安裝教程:https://github.com/PyMySQL/PyMySQL
python3 -m pip install PyMySQL


# 1.4 安裝 pycryptodome (必須先安裝python3)
python3 -m pip install pycryptodome
# 如果pip下載速度慢,可以用如下命令
#### 或 安裝方式2,如下
python3 -m pip install /opt/soft/soar/pycryptodome-3.9.6.tar.gz
#### 或 安裝方式3,如下
# 格式 = python3 -m pip install https://pypi.tuna.tsinghua.edu.cn/simple/simple/{包名}
# 格式 = python3 -m pip install https://pypi.doubanio.com/simple/{包名}
python3 -m pip install https://pypi.tuna.tsinghua.edu.cn/simple/pycryptodome-3.9.6.tar.gz

 

step 2: 安裝soar-web

# 2.1 下載soar-web的源代碼
wget -O /opt/soft/soar/soar-web-master.zip  -c https://codeload.github.com/xiyangxixian/soar-web/zip/master
yum install -y unzip
unzip /opt/soft/soar/soar-web-master.zip -d /opt/soft/soar/

# 2.2 安裝soar-web
mkdir -p /opt/install/soar-web && \
mv /opt/soft/soar/soar-web-master/*  /opt/install/soar-web
# 運行soar-web
chmod -R 777 /opt/install/soar-web/run.sh
bash /opt/install/soar-web/run.sh

# 2.3 或者如下方法啟動soar-web
cd /opt/install/soar-web/
python3 ./soar-web.py install

 

 

step 3:檢查埠,如下

netstat -nltp | grep 5077

 step 4:客戶端,訪問URL,如下:

地址 = http://{server-ip}:5077

 

 

  step 5: 配置資料庫源 線上環境參數 = 資料庫賬號:資料庫密碼@資料庫hostname:資料庫hostport/資料庫實例名稱

 

 

step 6:測試和使用SQL檢查

首先,選擇配置參數“mysql-CNT7XMYSQLD01”,然後輸入要檢查的SQL,如下圖:得到檢查SQL的結果

 

 

 




您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 因項目需要申請了新伺服器,故要重新配置環境。 nginx安裝: 一鍵安裝四個依賴: yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 進入/usr/local/src目錄,創建nginx文件夾 cd /usr/lo ...
  • 良許在工作中,寫過一個 Shell 腳本,這個腳本可以從 4 個 NTP 伺服器輪流獲取時間,然後將最可靠的時間設置為系統時間。 因為我們對於時間的要求比較高,需要在短時間內就獲取到正確的時間。所以我們就需要對這個腳本運行時間進行測試,看看從開始運行到正確設置時間需要花費多少時間。 其實在工作中,還 ...
  • 1、命令基礎 1.1、命令操作語法 命令 [參數] [文件] 參數,可有可無 文件,可有可無 2、基礎命令 2.1、查看當前工作目錄 pwd print name of current/workin directory 列印 名字 或 工作 目錄 2.2、切換目錄 cd cd 目錄 相對路徑與絕對路 ...
  • [TOC] 1.集群架構 | 主機名 | 角色 | IP地址 | | : : | : : | : : | | hdss7 21.host.com | flannel | 10.4.7.21 | | hdss7 22.host.com | flannel | 10.4.7.22 | 部署方法以hdss ...
  • redis 實戰-redis 事務 1.描述 redis 事務單獨的隔離操作:事務中的所有命令都會序列化、按順序執行。事務在執行過程中,不會被其他客戶端發送過來的命令請求所打斷。 redis 事務沒有隔離級別的概念:隊列中的命令沒有提交之前都不會實際的被執行,因為事務提交前任何指令都不會被實際執行, ...
  • 資料庫隔離級別 如果沒有隔離級別會出現的問題 臟讀 意思是讀取到了事務正在修改的數據,如果事務回滾,那麼拿到的數據就是錯誤的 | 時間 | 事務A | 事務B | | | | | | 1 | 開始事務 | | | 2 | 讀取quantity為5 | | | 3 | 修改quantity為4 | | ...
  • 操作系統配優化 執行計劃與鎖表查看 --查看連接信息以及連接執行的命令 SHOW PROCESSLIST --查看當前被鎖住的表 show OPEN TABLES where In_use > 0; --開啟會話級別的profile SET profiling=1 --查看所有的資料庫操作執行過程 ...
  • 在SQL Server 2012版本中,當重新啟動SQL Server實例時,表的身份值將被跳轉,而實際跳轉的值取決於身份列數據類型。 如果是整數(int)數據類型,則跳轉值為1000;如果為大整數(bigint),則跳轉值為10000。從我們的應用程式角度來看,此增量不適用於所有業務案例,尤其是當... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...