索引推薦神器Paw Index Advisor - 配置
Paw Index Advisor是PawSQL團隊開發(fā)的面向數(shù)據(jù)庫應用開發(fā)人員和DBA等數(shù)據(jù)庫運維人員的自動化、智能化、基于代價的索引推薦工具。
上一篇(一個優(yōu)秀的數(shù)據(jù)庫索引推薦IDEA插件)簡要介紹了Paw Index Advisor的能力,這次小編詳細介紹一下索引推薦神器Paw Index Advisor的配置項及相關注意事項。
Paw Index Advisor的配置頁面如下:
Query Type(查詢類型):
指定輸入待分析SQL的類型,目前支持兩種查詢語句格式,
- SQL files,原生SQL文件, 支持ansi標準的SQL語法;詳細的語法及語法對應的索引推薦將在后一個章節(jié)(Paw Index Advisor使用手冊(2)-語法支持)中詳細描述。
- Mapper files,從Mybatis的mapper配置文件里提取SQL, 并通過解析獲取所有可能的SQL組合。Paw Index Advisor通過一個智能的引擎,能夠?qū)apper文件中的占位符根據(jù)其上下文推斷其數(shù)據(jù)類型并對其賦于一個合法的常量,從而使其能夠生產(chǎn)合法的SQL語句,以便進行后續(xù)的查詢語句結(jié)構(gòu)分析。Mapper files作為輸入對于應用開發(fā)人員非常重要,因為在應用開發(fā)初期,開發(fā)人員對于前端的輸入組合無法完全掌握,所能組合的SQL業(yè)務無法確定,此選項可以確保對于所有的組合,都能夠合適的索引推薦出來以提升性能。
注意:由于Mapper配置文件可能書寫不夠規(guī)范,導致組合出的某些SQL語句在真實的場景下永遠不會出現(xiàn),進而推薦出無用的索引。所以建議在程序上線后,或是在UAT測試階段,通過querylog抓取真實的SQL作為輸入,再一次使用Paw Index Advisor.
Database Vendor(數(shù)據(jù)庫類型):
指定連接的數(shù)據(jù)庫類型,目前支持MySQL,PostgreSQL,Opengauss三種數(shù)據(jù)庫類型。其他基于遵循MySQL/PostgreSQL客戶端協(xié)議的數(shù)據(jù)庫理論上也可以支持,但未經(jīng)過全面測試。
數(shù)據(jù)庫連接信息,數(shù)據(jù)庫連接信息作用有兩個:
- 用來獲取SQL對應的數(shù)據(jù)庫對象,包括數(shù)據(jù)庫表,列定義,以及表上現(xiàn)有的索引信息。表和列定義用來解析輸入的SQL,現(xiàn)有的索引信息后續(xù)會被用來進行推薦索引和現(xiàn)有索引的排重。
- 數(shù)據(jù)庫連接信息用來對推薦的索引進行what-if 驗證,以確保推薦的索引在實際的SQL執(zhí)行計劃中能夠被選中,從而提升SQL的查詢性能。
- Database host/port: 數(shù)據(jù)庫地址及端口
- ?User:數(shù)據(jù)庫用戶名:
- Password:數(shù)據(jù)庫用戶密碼
- DefaultDB: 默認數(shù)據(jù)庫名稱,鏈接默認的數(shù)據(jù)庫名稱
- Database/schema List: 數(shù)據(jù)庫列表(MySQL)或是模式列表(PostgreSQL/Opengauss).
- Deduplicate with existing indice(是否和現(xiàn)有的索引進行排重):選擇此選項的場景是不考慮刪除現(xiàn)有的索引,因為輸入的SQL只是并不能代表這個數(shù)據(jù)庫上所有的SQL場景。所以只考慮新增對輸入SQL有幫助的索引。
如果能夠確保輸入的SQL包含此數(shù)據(jù)庫所有的查詢,那么只保留推薦的索引就可以了,這種情況下可以不選擇此選項,并且使用新推薦的索引代替現(xiàn)有的索引。
- What-if analysis validation(是否對推薦的索引進行what-if驗證):確保推薦的索引在實際的SQL執(zhí)行計劃中能夠被選中,從而避免推薦無效索引。
注意:此選項應避免在生產(chǎn)庫上使用,因為對于沒有內(nèi)置what-if(內(nèi)置虛擬索引)的數(shù)據(jù)庫(MySQL/Postgres皆是)來說,Paw Index Advisor是通過創(chuàng)建推薦索引并進行explain分析執(zhí)行計劃,然后刪除推薦索引的方式來做的。這個過程在生產(chǎn)庫上會消耗一定的資源,且執(zhí)行時間會比較長,可能對生產(chǎn)庫上的業(yè)務運行產(chǎn)生影響。
本次內(nèi)容小編就介紹到這里了,PawSQL專注數(shù)據(jù)庫性能優(yōu)化,