專利名稱::一種sql語(yǔ)句處理方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及數(shù)據(jù)庫(kù)
技術(shù)領(lǐng)域:
,尤其涉及ー種SQL語(yǔ)句處理方法及裝置。
背景技術(shù):
:MySQL是ー種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),其使用的SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語(yǔ)言)是用于訪問(wèn)數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言。在現(xiàn)有的MySQL技術(shù)中,MySQLProxy是ー個(gè)處于客戶端和MySQL服務(wù)器端之間的一個(gè)應(yīng)用程序,作為中間層代理,負(fù)責(zé)將前臺(tái)應(yīng)用客戶端的連接請(qǐng)求轉(zhuǎn)發(fā)給后臺(tái)的數(shù)據(jù)庫(kù),并且通過(guò)使用Iua腳本,可以實(shí)現(xiàn)復(fù)雜的連接控制和過(guò)濾,從而實(shí)現(xiàn)讀寫(xiě)分離和負(fù)載平衡。對(duì)于應(yīng)用客戶端來(lái)說(shuō),MySQLProxy是完全透明的,應(yīng)用客戶端則只需要連接到MySQLProxy的監(jiān)聽(tīng)端ロ即可。隨著對(duì)于海量數(shù)據(jù)存儲(chǔ)和查詢的需要,現(xiàn)有技術(shù)中出現(xiàn)了公有云計(jì)算的分布式數(shù)據(jù)庫(kù)集群技術(shù),在實(shí)際應(yīng)用中,經(jīng)常會(huì)有大量應(yīng)用客戶端向數(shù)據(jù)庫(kù)集群請(qǐng)求進(jìn)行一些數(shù)據(jù)庫(kù)處理操作,而且,其中還可能包括ー些不良的,甚至是惡意的請(qǐng)求操作,導(dǎo)致數(shù)據(jù)庫(kù)集群的整體負(fù)載較高,降低了進(jìn)行數(shù)據(jù)庫(kù)處理操作的效率,并影響了對(duì)其他客戶端的正常請(qǐng)求的處理。然而,將MySQLProxy引入到數(shù)據(jù)庫(kù)集群技術(shù)中,也僅是能實(shí)現(xiàn)連接控制、讀寫(xiě)分離和負(fù)載平衡等,而無(wú)法對(duì)請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)處理操作的SQL語(yǔ)句的安全性進(jìn)行判定,以提高數(shù)據(jù)庫(kù)的運(yùn)行性能。
發(fā)明內(nèi)容本發(fā)明實(shí)施例提供ー種SQL語(yǔ)句處理方法及裝置,用以解決現(xiàn)有技術(shù)中存在的數(shù)據(jù)庫(kù)運(yùn)行性能較低問(wèn)題。本發(fā)明實(shí)施例提供ー種SQL語(yǔ)句處理方法,包括獲取請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)處理操作的SQL語(yǔ)句;對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,得到分析結(jié)果;根據(jù)所述分析結(jié)果,確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù),所述基準(zhǔn)行數(shù)為進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)需要查詢的數(shù)據(jù)行數(shù);當(dāng)確定的所述基準(zhǔn)行數(shù)小于行數(shù)閾值時(shí),確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作,否則,確定取消按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作。本發(fā)明實(shí)施例還提供一種結(jié)構(gòu)化查詢語(yǔ)言SQL語(yǔ)句處理裝置,包括獲取單元,用于獲取請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)處理操作的SQL語(yǔ)句;分析単元,用于對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,得到分析結(jié)果;第一確定單元,用于根據(jù)所述分析結(jié)果,確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù),所述基準(zhǔn)行數(shù)為進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)需要查詢的數(shù)據(jù)行數(shù);第二確定單元,用于當(dāng)確定的所述基準(zhǔn)行數(shù)小于行數(shù)閾值時(shí),確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作,否則,確定取消按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作。本發(fā)明有益效果包括本發(fā)明實(shí)施例提供的方法中,對(duì)于請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)處理操作的SQL語(yǔ)句,根據(jù)對(duì)該SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析的分析結(jié)果,確定按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù),并當(dāng)確定的基準(zhǔn)行數(shù)小于行數(shù)閾值時(shí),確定按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作,否則,確定取消按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作。由于該基準(zhǔn)行數(shù)為進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)需要查詢的數(shù)據(jù)行數(shù),即能夠表征按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)對(duì)數(shù)據(jù)庫(kù)負(fù)載的影響,所以當(dāng)該基準(zhǔn)行數(shù)小于行數(shù)閾值時(shí),表示該SQL語(yǔ)句不會(huì)引起數(shù)據(jù)庫(kù)系統(tǒng)負(fù)載的較大增長(zhǎng),確定按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作,否則,即當(dāng)該基準(zhǔn)行數(shù)不小于行數(shù)閾值時(shí),表示該SQL語(yǔ)句會(huì)引起數(shù)據(jù)庫(kù)系統(tǒng)負(fù)載的較大增長(zhǎng),確定取消按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作,因此能夠有效過(guò)濾掉導(dǎo)致數(shù)據(jù)庫(kù)負(fù)載較大的SQL語(yǔ)句,從而提高了數(shù)據(jù)庫(kù)運(yùn)行性能。附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)ー步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與本發(fā)明實(shí)施例一起用于解釋本發(fā)明,并不構(gòu)成對(duì)本發(fā)明的限制。在附圖中圖I為本發(fā)明實(shí)施例提供的SQL語(yǔ)句處理方法的流程圖;圖2為本發(fā)明實(shí)施例I提供的SQL語(yǔ)句處理方法的流程圖;圖3為本發(fā)明實(shí)施例2提供的SQL語(yǔ)句處理方法的流程圖;圖4為本發(fā)明實(shí)施例3提供的SQL語(yǔ)句處理裝置的結(jié)構(gòu)示意圖。具體實(shí)施例方式為了給出提高數(shù)據(jù)庫(kù)運(yùn)行性能的實(shí)現(xiàn)方案,本發(fā)明實(shí)施例提供了ー種SQL語(yǔ)句處理方法及裝置,以下結(jié)合說(shuō)明書(shū)附圖對(duì)本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說(shuō)明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說(shuō)明和解釋本發(fā)明,并不用于限定本發(fā)明。并且在不沖突的情況下,本申請(qǐng)中的實(shí)施例及實(shí)施例中的特征可以相互組合。本發(fā)明實(shí)施例提供ー種SQL語(yǔ)句處理方法,如圖I所示,包括步驟101、獲取請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)處理操作的SQL語(yǔ)句。步驟102、對(duì)該SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,得到分析結(jié)果。步驟103、根據(jù)分析結(jié)果,確定按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù),基準(zhǔn)行數(shù)為進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)需要查詢的數(shù)據(jù)行數(shù)。步驟104、當(dāng)確定的基準(zhǔn)行數(shù)小于行數(shù)閾值時(shí),確定按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作,否則,確定取消按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作。進(jìn)ー步的,在執(zhí)行步驟102之前,可以判斷該SQL語(yǔ)句的類型,并針對(duì)指定類型的SQL語(yǔ)句進(jìn)入后續(xù)的分析處理,指定類型可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,例如,將可能導(dǎo)致數(shù)據(jù)庫(kù)負(fù)載較大增長(zhǎng)的SQL語(yǔ)句的類型設(shè)置為指定類型,具體可以包括選擇類型(select)、更新類型(update)、刪除類型(delete)、創(chuàng)建索引類型(createindex)和修改表結(jié)構(gòu)類型(altertable)。進(jìn)ー步的,在上述步驟102中對(duì)該SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析時(shí),具體可以根據(jù)該SQL語(yǔ)句的類型,按照與其類型對(duì)應(yīng)的分析方式,對(duì)該SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析;也可以當(dāng)該SQL語(yǔ)句為選擇類型語(yǔ)句時(shí),按照與選擇類型語(yǔ)句對(duì)應(yīng)的分析方式,對(duì)該SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,當(dāng)該SQL語(yǔ)句非選擇類型語(yǔ)句時(shí),將該SQL語(yǔ)句轉(zhuǎn)換為選擇類型語(yǔ)句,按照與選擇類型語(yǔ)句對(duì)應(yīng)的分析方式,對(duì)轉(zhuǎn)換后的SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析。其中,由于在實(shí)現(xiàn)時(shí),相比對(duì)各種類型的SQL語(yǔ)句的分析,對(duì)SQL語(yǔ)句的類型轉(zhuǎn)換更容易,所以,采用第二種方式將SQL語(yǔ)句轉(zhuǎn)換為統(tǒng)一的選擇類型語(yǔ)句,再進(jìn)行結(jié)構(gòu)分析,能夠提高本方案的處理效率。進(jìn)一步的,本發(fā)明實(shí)施例中針對(duì)上述步驟103和步驟104的處理,也提出了更詳細(xì)的處理流程,下面結(jié)合附圖,用具體實(shí)施例對(duì)本發(fā)明提供的方法及裝置進(jìn)行詳細(xì)描述。實(shí)施例I:圖2所示為本發(fā)明實(shí)施例I提供的SQL語(yǔ)句處理方法的流程圖,具體包括如下處理步驟步驟201、獲取請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)處理操作的SQL語(yǔ)句。該SQL語(yǔ)句可以為應(yīng)用客戶端向數(shù)據(jù)庫(kù)系統(tǒng)發(fā)送的用于請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)處理操作的SQL語(yǔ)句,本發(fā)明實(shí)施例I中,在該SQL語(yǔ)句到達(dá)數(shù)據(jù)庫(kù)系統(tǒng),并按照該SQL語(yǔ)句進(jìn)行相應(yīng)處理操作之前,可以先獲取該SQL語(yǔ)句,并按照后續(xù)的處理流程對(duì)其進(jìn)行處理,以判定該SQL語(yǔ)句是否會(huì)引起數(shù)據(jù)庫(kù)系統(tǒng)負(fù)載的較大增長(zhǎng),從而確定是否按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作。其中,該數(shù)據(jù)庫(kù)系統(tǒng)可以為公有云計(jì)算的分布式數(shù)據(jù)庫(kù)集群,可以為其它類型的數(shù)據(jù)庫(kù)系統(tǒng)。步驟202、確定該SQL語(yǔ)句是否為指定類型的SQL語(yǔ)句,如果不是,進(jìn)入步驟203,如果是,進(jìn)入步驟204。其中,指定類型可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,例如,將可能導(dǎo)致數(shù)據(jù)庫(kù)負(fù)載較大的SQL語(yǔ)句的類型設(shè)置為指定類型,具體可以包括選擇類型(select)、更新類型(update)、刪除類型(delete)、創(chuàng)建索引類型(createindex)和修改表結(jié)構(gòu)類型(altertable)。步驟203、當(dāng)該SQL語(yǔ)句不是指定類型的SQL語(yǔ)句時(shí),或者,從后續(xù)的步驟212進(jìn)入本步驟,即當(dāng)該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù)小于行數(shù)閾值時(shí),表示該SQL語(yǔ)句不會(huì)引起數(shù)據(jù)庫(kù)系統(tǒng)負(fù)載的較大增長(zhǎng),所以確定按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作,具體可以將該SQL語(yǔ)句轉(zhuǎn)發(fā)至數(shù)據(jù)庫(kù)系統(tǒng),由數(shù)據(jù)庫(kù)系統(tǒng)按照該SQL語(yǔ)句進(jìn)行相應(yīng)的處理操作。步驟204、當(dāng)該SQL語(yǔ)句是指定類型的SQL語(yǔ)句時(shí),表示該SQL語(yǔ)句可能會(huì)引起數(shù)據(jù)庫(kù)系統(tǒng)負(fù)載的較大增長(zhǎng),所以需要通過(guò)對(duì)其進(jìn)行結(jié)構(gòu)分析,以便作進(jìn)一步的判定。本步驟中,首先確定該SQL語(yǔ)句是否為選擇類型語(yǔ)句,如果不是,進(jìn)入步驟205,如果是,進(jìn)入步驟206。步驟205、將該SQL語(yǔ)句轉(zhuǎn)換為選擇類型語(yǔ)句。具體可以基于該非選擇類型的SQL語(yǔ)句中用于表征類型的類型標(biāo)記,確定該SQL語(yǔ)句的類型,并根據(jù)該SQL語(yǔ)句的類型,從該SQL語(yǔ)句中提取對(duì)應(yīng)的內(nèi)容信息,并基于所提取的內(nèi)容信息生成該SQL語(yǔ)句對(duì)應(yīng)的轉(zhuǎn)換后的選擇類型的SQL語(yǔ)句。例如,針對(duì)更新類型的SQL語(yǔ)句在進(jìn)行轉(zhuǎn)換時(shí),提取的內(nèi)容信息可以包括別名、表名和條件(where)語(yǔ)句;針對(duì)刪除類型的SQL語(yǔ)句在進(jìn)行轉(zhuǎn)換時(shí),提取的內(nèi)容信息可以包括標(biāo)識(shí)、表名和條件語(yǔ)句;針對(duì)創(chuàng)建索引類型的SQL語(yǔ)句在進(jìn)行轉(zhuǎn)換時(shí),提取的內(nèi)容信息可以包括表名;針對(duì)修改表結(jié)構(gòu)類型的SQL語(yǔ)句在進(jìn)行轉(zhuǎn)換時(shí),提取的內(nèi)容信息可以包括表名。步驟206、針對(duì)由上述步驟204中確定的為選擇類型的SQL語(yǔ)句,以及上述步驟205中經(jīng)過(guò)轉(zhuǎn)換后的為選擇類型的SQL語(yǔ)句,本步驟中,按照與選擇類型語(yǔ)句對(duì)應(yīng)的分析方式,對(duì)該SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,并得到分析結(jié)果。具體的,可以通過(guò)對(duì)該SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,確定該SQL語(yǔ)句包括的各子語(yǔ)句塊的類型,以及包括的各子語(yǔ)句塊表征的基準(zhǔn)行數(shù),以及該SQL語(yǔ)句中是否包括限制(limit)參數(shù),即該SQL語(yǔ)句最外層是否附帶了限制參數(shù),以及該SQL語(yǔ)句中是否包括外排序參數(shù),即該SQL語(yǔ)句最外層是否附帶了外排序參數(shù),以及該SQL語(yǔ)句中是否包括索引參數(shù)。下面對(duì)分析結(jié)果中SQL語(yǔ)句包括的各子語(yǔ)句塊的類型和表征的基準(zhǔn)行數(shù)舉例描述如下表I所示為該SQL語(yǔ)句包括的各子語(yǔ)句塊的第一種情況。表I權(quán)利要求1.一種結(jié)構(gòu)化查詢語(yǔ)言SQL語(yǔ)句處理方法,其特征在于,包括獲取請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)處理操作的SQL語(yǔ)句;對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,得到分析結(jié)果;根據(jù)所述分析結(jié)果,確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù),所述基準(zhǔn)行數(shù)為進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)需要查詢的數(shù)據(jù)行數(shù);當(dāng)確定的所述基準(zhǔn)行數(shù)小于行數(shù)閾值時(shí),確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作,否則,確定取消按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作。2.如權(quán)利要求I所述的方法,其特征在于,在對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析之前,還包括確定所述SQL語(yǔ)句為指定類型的SQL語(yǔ)句。3.如權(quán)利要求I所述的方法,其特征在干,對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,具體包括當(dāng)所述SQL語(yǔ)句為選擇類型語(yǔ)句吋,按照與選擇類型語(yǔ)句對(duì)應(yīng)的分析方式,對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析;當(dāng)所述SQL語(yǔ)句為非選擇類型語(yǔ)句時(shí),將所述SQL語(yǔ)句轉(zhuǎn)換為選擇類型語(yǔ)句,按照與選擇類型語(yǔ)句對(duì)應(yīng)的分析方式,對(duì)轉(zhuǎn)換后的SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析。4.如權(quán)利要求I所述的方法,其特征在干,對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,得到分析結(jié)果,具體包括對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,確定所述SQL語(yǔ)句包括的各子語(yǔ)句塊的類型,以及所述各子語(yǔ)句塊表征的基準(zhǔn)行數(shù),以及所述SQL語(yǔ)句中是否包括限制參數(shù),以及所述SQL語(yǔ)句中是否包括外排序參數(shù),以及所述SQL語(yǔ)句中是否包括索引參數(shù)。5.如權(quán)利要求4所述的方法,其特征在于,根據(jù)所述分析結(jié)果,確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù),具體包括按照所述SQL語(yǔ)句所包括的各子語(yǔ)句塊從前到后的順序,對(duì)所述各子語(yǔ)句塊進(jìn)行分組,其中,每個(gè)分組中的第一個(gè)子語(yǔ)句塊的類型為簡(jiǎn)單類型或者原始類型,且每個(gè)分組中除第一個(gè)子語(yǔ)句塊外不包括簡(jiǎn)單類型和原始類型的子語(yǔ)句塊;針對(duì)每個(gè)分組包括的各子語(yǔ)句塊的類型和表征的基準(zhǔn)行數(shù),采用如下步驟確定該分組表征的基準(zhǔn)行數(shù)按照該分組包括的各子語(yǔ)句塊的先后順序,從該分組中第二個(gè)子語(yǔ)句塊開(kāi)始,依次確定每個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù),并將該分組中最后一個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)作為該分組表征的基準(zhǔn)行數(shù),其中,當(dāng)子語(yǔ)句塊的類型為聯(lián)合類型或依賴聯(lián)合類型時(shí),該子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為前ー個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)和該子語(yǔ)句塊表征的基準(zhǔn)行數(shù)的乘積,當(dāng)子語(yǔ)句塊的類型為子查詢類型、依賴子查詢類型或派生類型時(shí),該子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為前ー個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)和該子語(yǔ)句塊表征的基準(zhǔn)行數(shù)中的最小值,該分組中的第一個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為第一個(gè)子語(yǔ)句塊表征的基準(zhǔn)行數(shù);確定各分組表征的基準(zhǔn)行數(shù)的和值;根據(jù)所述SQL語(yǔ)句中是否包括限制參數(shù),以及是否包括外排序參數(shù),對(duì)所述和值進(jìn)行加減修正,得到第一修正值;根據(jù)所述SQL語(yǔ)句中是否包括索引參數(shù),對(duì)所述第一修正值進(jìn)行倍數(shù)修正,得到所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù)。6.如權(quán)利要求4所述的方法,其特征在于,在確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù)之前,還包括確定所述SQL語(yǔ)句中不包括限制參數(shù),以及所述SQL語(yǔ)句中包括外排序參數(shù)。7.如權(quán)利要求6所述的方法,其特征在于,根據(jù)所述分析結(jié)果,確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù),具體包括按照所述SQL語(yǔ)句所包括的各子語(yǔ)句塊從前到后的順序,對(duì)所述各子語(yǔ)句塊進(jìn)行分組,其中,每個(gè)分組中的第一個(gè)子語(yǔ)句塊的類型為簡(jiǎn)單類型或者原始類型,且每個(gè)分組中除第一個(gè)子語(yǔ)句塊外不包括簡(jiǎn)單類型和原始類型的子語(yǔ)句塊;針對(duì)每個(gè)分組包括的各子語(yǔ)句塊的類型和表征的基準(zhǔn)行數(shù),采用如下步驟確定該分組表征的基準(zhǔn)行數(shù)按照該分組包括的各子語(yǔ)句塊的先后順序,從該分組中第二個(gè)子語(yǔ)句塊開(kāi)始,依次確定每個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù),并將該分組中最后一個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)作為該分組表征的基準(zhǔn)行數(shù),其中,當(dāng)子語(yǔ)句塊的類型為聯(lián)合類型或依賴聯(lián)合類型時(shí),該子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為前ー個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)和該子語(yǔ)句塊表征的基準(zhǔn)行數(shù)的乘積,當(dāng)子語(yǔ)句塊的類型為子查詢類型、依賴子查詢類型或派生類型時(shí),該子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為前ー個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)和該子語(yǔ)句塊表征的基準(zhǔn)行數(shù)中的最小值,該分組中的第一個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為第一個(gè)子語(yǔ)句塊表征的基準(zhǔn)行數(shù);確定各分組表征的基準(zhǔn)行數(shù)的和值;根據(jù)所述SQL語(yǔ)句中是否包括索引參數(shù),對(duì)所述和值進(jìn)行倍數(shù)修正,得到所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù)。8.一種結(jié)構(gòu)化查詢語(yǔ)言SQL語(yǔ)句處理裝置,其特征在于,包括獲取單元,用于獲取請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)處理操作的SQL語(yǔ)句;分析単元,用于對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,得到分析結(jié)果;第一確定單元,用于根據(jù)所述分析結(jié)果,確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù),所述基準(zhǔn)行數(shù)為進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)需要查詢的數(shù)據(jù)行數(shù);第二確定單元,用于當(dāng)確定的所述基準(zhǔn)行數(shù)小于行數(shù)閾值時(shí),確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作,否則,確定取消按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作。9.如權(quán)利要求8所述的裝置,其特征在于,所述分析単元,還用于在對(duì)所述SQL語(yǔ)句進(jìn)行分析之前,確定所述SQL語(yǔ)句為指定類型的SQL語(yǔ)句。10.如權(quán)利要求8所述的裝置,其特征在于,所述分析単元,具體用于當(dāng)所述SQL語(yǔ)句為選擇類型語(yǔ)句時(shí),按照與選擇類型語(yǔ)句對(duì)應(yīng)的分析方式,對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析;以及當(dāng)所述SQL語(yǔ)句為非選擇類型語(yǔ)句時(shí),將所述SQL語(yǔ)句轉(zhuǎn)換為選擇類型語(yǔ)句,按照與選擇類型語(yǔ)句對(duì)應(yīng)的分析方式,對(duì)轉(zhuǎn)換后的SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析。11.如權(quán)利要求8所述的裝置,其特征在干,所述分析単元,具體用于對(duì)所述SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,確定所述SQL語(yǔ)句包括的各子語(yǔ)句塊的類型,以及所述各子語(yǔ)句塊表征的基準(zhǔn)行數(shù),以及所述SQL語(yǔ)句中是否包括限制參數(shù),以及所述SQL語(yǔ)句中是否包括外排序參數(shù),以及所述SQL語(yǔ)句中是否包括索引參數(shù)。12.如權(quán)利要求11所述的裝置,其特征在于,所述第一確定單元,具體用于按照所述SQL語(yǔ)句所包括的各子語(yǔ)句塊從前到后的順序,對(duì)所述各子語(yǔ)句塊進(jìn)行分組,其中,每個(gè)分組中的第一個(gè)子語(yǔ)句塊的類型為簡(jiǎn)單類型或者原始類型,且每個(gè)分組中除第一個(gè)子語(yǔ)句塊外不包括簡(jiǎn)單類型和原始類型的子語(yǔ)句塊;并針對(duì)每個(gè)分組包括的各子語(yǔ)句塊的類型和表征的基準(zhǔn)行數(shù),采用如下步驟確定該分組表征的基準(zhǔn)行數(shù)按照該分組包括的各子語(yǔ)句塊的先后順序,從該分組中第二個(gè)子語(yǔ)句塊開(kāi)始,依次確定每個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù),并將該分組中最后一個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)作為該分組表征的基準(zhǔn)行數(shù),其中,當(dāng)子語(yǔ)句塊的類型為聯(lián)合類型或依賴聯(lián)合類型時(shí),該子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為前ー個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)和該子語(yǔ)句塊表征的基準(zhǔn)行數(shù)的乘積,當(dāng)子語(yǔ)句塊的類型為子查詢類型、依賴子查詢類型或派生類型時(shí),該子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為前ー個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)和該子語(yǔ)句塊表征的基準(zhǔn)行數(shù)中的最小值,該分組中的第一個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為第一個(gè)子語(yǔ)句塊表征的基準(zhǔn)行數(shù);確定各分組表征的基準(zhǔn)行數(shù)的和值;并根據(jù)所述SQL語(yǔ)句中是否包括限制參數(shù),以及是否包括外排序參數(shù),對(duì)所述和值進(jìn)行加減修正,得到第一修正值;以及根據(jù)所述SQL語(yǔ)句中是否包括索引參數(shù),對(duì)所述第一修正值進(jìn)行倍數(shù)修正,得到所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù)。13.如權(quán)利要求11所述的裝置,其特征在于,所述第一確定單元,還用于在確定按照所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù)之前,確定所述SQL語(yǔ)句中不包括限制參數(shù),以及所述SQL語(yǔ)句中包括外排序參數(shù)。14.如權(quán)利要求13所述的裝置,其特征在干,所述第一確定單元,具體用于按照所述SQL語(yǔ)句所包括的各子語(yǔ)句塊從前到后的順序,對(duì)所述各子語(yǔ)句塊進(jìn)行分組,其中,每個(gè)分組中的第一個(gè)子語(yǔ)句塊的類型為簡(jiǎn)單類型或者原始類型,且每個(gè)分組中除第一個(gè)子語(yǔ)句塊外不包括簡(jiǎn)單類型和原始類型的子語(yǔ)句塊;并針對(duì)每個(gè)分組包括的各子語(yǔ)句塊的類型和表征的基準(zhǔn)行數(shù),采用如下步驟確定該分組表征的基準(zhǔn)行數(shù)按照該分組包括的各子語(yǔ)句塊的先后順序,從該分組中第二個(gè)子語(yǔ)句塊開(kāi)始,依次確定每個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù),并將該分組中最后一個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)作為該分組表征的基準(zhǔn)行數(shù),其中,當(dāng)子語(yǔ)句塊的類型為聯(lián)合類型或依賴聯(lián)合類型時(shí),該子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為前ー個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)和該子語(yǔ)句塊表征的基準(zhǔn)行數(shù)的乘積,當(dāng)子語(yǔ)句塊的類型為子查詢類型、依賴子查詢類型或派生類型時(shí),該子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為前ー個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)和該子語(yǔ)句塊表征的基準(zhǔn)行數(shù)中的最小值,該分組中的第一個(gè)子語(yǔ)句塊對(duì)應(yīng)的中間基準(zhǔn)行數(shù)為第一個(gè)子語(yǔ)句塊表征的基準(zhǔn)行數(shù);確定各分組表征的基準(zhǔn)行數(shù)的和值;井根據(jù)所述SQL語(yǔ)句中是否包括索引參數(shù),對(duì)所述和值進(jìn)行倍數(shù)修正,得到所述SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù)。全文摘要本發(fā)明公開(kāi)了一種SQL語(yǔ)句處理方法及裝置,包括獲取請(qǐng)求進(jìn)行數(shù)據(jù)庫(kù)處理操作的SQL語(yǔ)句;并對(duì)該SQL語(yǔ)句進(jìn)行結(jié)構(gòu)分析,得到分析結(jié)果;并根據(jù)分析結(jié)果,確定按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)所表征的基準(zhǔn)行數(shù),基準(zhǔn)行數(shù)為進(jìn)行數(shù)據(jù)庫(kù)處理操作時(shí)需要查詢的數(shù)據(jù)行數(shù);以及當(dāng)確定的基準(zhǔn)行數(shù)小于行數(shù)閾值時(shí),確定按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作,否則,確定取消按照該SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)處理操作。采用本發(fā)明實(shí)施例提供的方案,提高了數(shù)據(jù)庫(kù)運(yùn)行性能。文檔編號(hào)G06F17/30GK102915344SQ201210361178公開(kāi)日2013年2月6日申請(qǐng)日期2012年9月25日優(yōu)先權(quán)日2012年9月25日發(fā)明者叢磊,王利俊,鄭志勇申請(qǐng)人:新浪網(wǎng)技術(shù)(中國(guó))有限公司