新聞中心
簡介
MyBatis是一款開源的持久層框架,它封裝了JDBC操作數(shù)據(jù)庫時(shí)的常用API,并提供了ORM映射的功能,使得開發(fā)者可以使用Java對象來操作數(shù)據(jù)庫。開發(fā)者可以通過XML配置或注解方式自定義SQL語句和參數(shù)映射規(guī)則,從而使得應(yīng)用開發(fā)人員無需過多的了解數(shù)據(jù)庫,就可以開發(fā)出功能完善應(yīng)用程序。
10年積累的成都網(wǎng)站制作、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有尼瑪免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
但是天下沒有免費(fèi)的午餐,使用MyBatis也使得應(yīng)用開發(fā)人員進(jìn)行SQL調(diào)優(yōu)變得困難。通過MyBatis開發(fā)的應(yīng)用程序,傳統(tǒng)方式下需要通過模擬應(yīng)用的接口調(diào)用、啟動(dòng)數(shù)據(jù)庫的SQL日志、獲取應(yīng)用的SQL查詢語句、對獲取的SQL進(jìn)行優(yōu)化,這讓整個(gè)SQL調(diào)優(yōu)的流程復(fù)雜且費(fèi)時(shí)。
PawSQL為了方便應(yīng)用開發(fā)人員進(jìn)行SQL性能調(diào)優(yōu),提供了基于Mybatis的mapper文件創(chuàng)建SQL優(yōu)化任務(wù)的功能,讓應(yīng)用開發(fā)人員在頁面上通過鼠標(biāo)操作,完成其應(yīng)用的SQL性能優(yōu)化。
工作原理
Mapper文件
在 MyBatis 中,Mapper 文件是一種用于配置 SQL 語句和 SQL 操作的配置文件。
Mapper 文件通常包含四個(gè)主要部分:
- 命名空間,用于指定對應(yīng)操作的實(shí)體類或其接口類的全路徑名。
- SQL語句片段,可以通過 select、insert、update、delete 等標(biāo)簽來定義不同的 SQL 語句。
- 映射語句定義,可以通過映射語句來將操作的參數(shù)和返回值與上述 SQL 語句進(jìn)行綁定的方式。
- 流程控制標(biāo)簽,如
、where、foreach等標(biāo)簽,根據(jù)不同的條件動(dòng)態(tài)生成SQL語句,以便滿足不同的需求。
通過使用 Mapper 文件,應(yīng)用開發(fā)人員可以實(shí)現(xiàn)簡便、靈活的 SQL 操作,同時(shí)也能更好地維護(hù) SQL 與 Java 代碼之間的解耦。
Mapper文件=>SQL語句
為了對Mapper中的SQL進(jìn)行優(yōu)化,我們需要對Mapper文件進(jìn)行解析,排列組合所有可能的合法SQL語句,并對其中的變量進(jìn)行替換,以便生成合法的SQL語句,并進(jìn)行優(yōu)化。
- SQL片段排列組合
譬如對于以下的mapper文件:
由于
select * as cnt from customer where c_phone like '139%';
select * as cnt from customer where c_nationkey = #{nationkey} and c_phone like '139%';
select * as cnt from customer where c_mktsegment = #{C_MKTSEGMENT};
select * as cnt from customer where c_nationkey = #{nationkey} and c_mktsegment = #{C_MKTSEGMENT};
通過排列組合方式產(chǎn)生的SQL,有可能會(huì)有一些SQL永遠(yuǎn)不會(huì)在真實(shí)的生產(chǎn)環(huán)境中出現(xiàn)。但這些SQL可能會(huì)對SQL優(yōu)化的過程產(chǎn)生影響,譬如推薦了一些無用的索引,或是索引中出現(xiàn)了一些不會(huì)被使用的列。所以用戶需要根據(jù)自己具體的業(yè)務(wù)場景,在PawSQL的SQL篩選預(yù)覽頁面,排除掉那些不會(huì)真實(shí)出現(xiàn)的SQL組合。
- 變量替換
對于mapper文件中的變量,我們會(huì)根據(jù)它所在的上下文,推測其數(shù)據(jù)類型,并根據(jù)數(shù)據(jù)庫的統(tǒng)計(jì)信息(如有)選擇一個(gè)合適常量來進(jìn)行替換。譬如對于以上的四個(gè)SQL,我們會(huì)將#{nationkey}替換為整型常量,而將#{C_MKTSEGMENT}替換為字符串常量,所以最終提交到PawSQL優(yōu)化引擎的是這樣的SQL。
select * as cnt from customer_n where c_phone like '139%';
select * as cnt from customer_n where c_nationkey = 128 and c_phone like '139%';
select * as cnt from customer_n where c_mktsegment = 'A234913';
select * as cnt from customer_n where c_nationkey = 16 and c_mktsegment = 'B123498';
上手指南 - Mapper文件錄入SQL
我們知道,使用PawSQL進(jìn)行SQL優(yōu)化分為三步:
第一步定義工作空間,
第二步錄入待優(yōu)化SQL,使用Mapper文件進(jìn)行SQL優(yōu)化發(fā)生在此步中。
第三步配置優(yōu)化選項(xiàng)、進(jìn)行優(yōu)化。
PawSQL目前支持六種SQL錄入方式,包括本文介紹的Mapper文件。
- 這里我們選擇Mapper文件的錄入方式, 點(diǎn)擊上傳按鈕上傳對應(yīng)的Mapper.xml文件。
- 點(diǎn)擊創(chuàng)建查詢語句集按鈕來到'待優(yōu)化SQL預(yù)覽'頁面,在此頁面中,您需要排查一些永遠(yuǎn)都不會(huì)出現(xiàn)的SQL組合,以避免生成無效的優(yōu)化建議。
- 后續(xù)的步驟是一致的,點(diǎn)擊下一步,完成SQL優(yōu)化任務(wù)的執(zhí)行。
以上就是使用Mapper文件創(chuàng)建PawSQL優(yōu)化的全部內(nèi)容了, 到這里創(chuàng)建自己的賬號(hào)快去試試吧!
關(guān)于PawSQL
PawSQL專注數(shù)據(jù)庫性能優(yōu)化的自動(dòng)化和智能化,支持MySQL,PostgreSQL,Opengauss等,提供的SQL優(yōu)化產(chǎn)品包括
- PawSQL Cloud,在線自動(dòng)化SQL優(yōu)化工具,支持SQL審查,智能查詢重寫、基于代價(jià)的索引推薦,適用于數(shù)據(jù)庫管理員及數(shù)據(jù)應(yīng)用開發(fā)人員,
- PawSQL Advisor,IntelliJ 插件, 適用于數(shù)據(jù)應(yīng)用開發(fā)人員,可以IDEA/DataGrip應(yīng)用市場通過名稱搜索“PawSQL Advisor”安裝。
- PawSQL Engine, 是PawSQL系列產(chǎn)品的后端優(yōu)化引擎,可以獨(dú)立安裝部署,并通過http/json的接口提供SQL優(yōu)化服務(wù)。PawSQL Engine以docker鏡像的方式提供部署安裝。
網(wǎng)站標(biāo)題:針對Mapper文件的SQL優(yōu)化
分享鏈接:http://www.5511xx.com/article/cddjshj.html


咨詢
建站咨詢

