「分散式技術專題」SQL 解析的 AP/TP 判別

Hubble資料庫發表於2023-02-13

通常 SQL語句可以分為分為四大類: 資料查詢語言 DQL,資料操縱語言DML,資料定義語言DDL,資料控制語言DCL。

但在資料的操作上,可以根據 SQL對於IO、CPU、記憶體等資源的消耗可以分為 AP的SQL和TP的SQL。


通常情況下單個 TP的SQL語句對於資源的消耗是非常的少的。而AP的SQL會消耗量的IO、記憶體、CPU等資源。過程如下圖:

ap_tp_decide

SQL的判別可以從幾個點入手:

1)基於規則的判別。

SQL語法可以解析為抽象語法解析樹,透過觀察者模型對語法解析數進行規則分析,提取出SQL語法的關鍵資訊點可以進行簡單的做甄別出SQL的類別。如TP 類SQL會有事務級別的插入、修改、刪除等操作,也會有指定條件的簡單查詢等操。AP類SQL通常會有大量的分類統計與語法巢狀,根據類似SQL的規則的甄別可以通常可以判斷出70%左右的SQL的類別。對於無法做到甄別的可以再透過演算法模型做進一步判別

2)基於演算法模型的判別。

基於演算法模型的判別需要從幾個步驟入手:訓練集、驗證集資料準備與標註、特徵變數處理、訓練模型選擇、模型引數最佳化、驗證準確性、根據驗證準確性做進一步最佳化。

訓練集、驗證集準備:

開啟資料庫的日誌記錄功能,把 SQL語句以及對應的資源消耗等記錄記錄下來,用做演算法模型需要使用的資料,並把資料分成訓練集合驗證集。

特徵變數處理:

可以對資料的特徵變數進行進一步加工處理,如對 SQL可以進一步處理為語法樹,根據語法樹展開放入到特徵變數中去。

訓練模型選擇:

本次做的處理是分類模型,是對 SQL語句或者SQL解析後的語法樹進行分類,所以我們可以選擇分類模型來處理這個事情,但由於資料庫對於效能要求很高,所以在選擇時也要從模型呼叫的效能做為考慮。

模型引數最佳化:

通常指的就是模型調參,這個是一個演算法模型的常規做法根據不同的引數進行最佳化。

驗證準確性:

把資料代入到驗證集中對資料做進一步校驗,驗證演算法的準確度。


以上為 SQL 解析的 AP/TP 判別, 「分散式技術專題」是國產資料庫 hubble 團隊精心整編,專題會持續更新,歡迎大家保持關注。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70026685/viewspace-2935007/,如需轉載,請註明出處,否則將追究法律責任。

相關文章