本申請涉及計算機領域,尤其涉及一種代價估計的方法及設備。
背景技術:
::基于代價的優(yōu)化(cbo)是數(shù)據(jù)庫系統(tǒng)中一種常見的結(jié)構化查詢語句(sql)優(yōu)化方法,其中,sql操作代價的估計是cbo的核心,精確的代價估計需要精良的估計算法和完備的統(tǒng)計信息,若單純依靠現(xiàn)有的估計算法和統(tǒng)計信息模型,代價往往估計不準確,優(yōu)化效果欠佳。現(xiàn)有的數(shù)據(jù)庫系統(tǒng)不能解決代價估算的準確性和統(tǒng)計信息的完備性之間的矛盾,統(tǒng)計信息本身存在誤差,當數(shù)據(jù)集異常龐大時,收集統(tǒng)計信息需要耗費巨大的資源,對于部分統(tǒng)計信息往往采用粗略估算的方式,為后續(xù)估算引入誤差。另一方面,對于過濾、聚合等操作的代價估算,現(xiàn)有cbo方案中是假設目標數(shù)據(jù)均勻分布,對于數(shù)據(jù)傾斜的場景,估算誤差大?,F(xiàn)有技術中采用的靜態(tài)方式,收集的統(tǒng)計信息不足,對部分無法估算的操作,實現(xiàn)中往往采用經(jīng)驗值,誤差大。連接算法代價估計的精確度依賴維度表過濾率的估算,若該結(jié)果集再次參與其他連接,則會進一步放大誤差。技術實現(xiàn)要素:本申請的一個目的是提供一種代價估計的方法及設備,解決現(xiàn)有數(shù)據(jù)庫系統(tǒng)不能解決代價估算的準確性和統(tǒng)計信息的完備性之間的矛盾及現(xiàn)有數(shù)據(jù)庫系統(tǒng)不能得到全局最優(yōu)的執(zhí)行計劃的問題。根據(jù)本申請的一個方面,提供了一種代價估計的方法,所述方法包括:根據(jù)操作樹的操作類型確定對應的代價估計方式,基于所述代價估計方式及獲取到的原始統(tǒng)計信息確定所述操作類型的代價估計;確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計;根據(jù)未調(diào)整的代價估計及調(diào)整后的代價估計確定所述操作樹的累積代價估計。進一步地,所述方法還包括:根據(jù)所述累積代價估計優(yōu)化結(jié)構化查詢語言語句對應的執(zhí)行計劃。進一步地,上述方法中,所述方法包括:通過hints、配置文件及新增語法中任一種或任幾種組合方式對獲取到的原始統(tǒng)計信息進行矯正,得到矯正后的統(tǒng)計信息。進一步地,所述操作樹的操作類型包括以下至少任一項:掃表操作、過濾操作、連接操作及聚合操作。進一步地,當所述操作樹的操作類型為過濾操作時,確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計,包括:確定待調(diào)整的代價估計為所述過濾操作的代價估計,基于所述過濾操作的指定選擇確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述過濾操作的代價估計。進一步地,基于所述過濾操作的指定選擇確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述過濾操作的代價估計,包括以下任一項:若所述過濾操作的指定選擇為異值數(shù),則確定調(diào)整因子,并根據(jù)所述調(diào)整因子更新所述異值數(shù)的值,根據(jù)更新后的異值數(shù)的值調(diào)整所述過濾操作的代價估計;若所述過濾操作的指定選擇為選擇率,則從大于0且小于等于1的范圍中確定調(diào)整因子,并根據(jù)確定的調(diào)整因子更新所述選擇率的值,根據(jù)更新后的選擇率的值調(diào)整所述過濾操作的代價估計;若所述過濾操作的指定選擇為數(shù)據(jù)傾斜度,則從大于0且小于等于10的范圍中確定調(diào)整因子,并根據(jù)確定的調(diào)整因子更新所述數(shù)據(jù)傾斜度的值,根據(jù)更新后的數(shù)據(jù)傾斜度的值調(diào)整所述過濾操作的代價估計。進一步地,當所述操作樹的操作類型為連接操作時,確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計,包括:確定待調(diào)整的代價估計為所述連接操作的代價估計,基于所述連接操作的指定選擇確定調(diào)整因子,根據(jù)確定的調(diào)整因子計算代價因子,并根據(jù)所述代價因子調(diào)整所述連接操作的代價估計。進一步地,基于所述連接操作的指定選擇確定調(diào)整因子,根據(jù)確定的調(diào)整因子計算代價因子,包括以下任一項:若所述連接操作的指定選擇為連接優(yōu)先級,則確定調(diào)整因子為所述連接優(yōu)先級,根據(jù)預設的代價因子及所述優(yōu)先級確定所述連接操作的代價因子;若所述連接操作的指定選擇為連接類型,則確定調(diào)整因子為所述連接類型,計算所述連接類型的代價因子,并根據(jù)預設的代價因子及所述連接類型的代價因子確定所述連接操作的代價因子;若所述連接操作的指定選擇為數(shù)據(jù)傾斜度,則確定調(diào)整因子為所述數(shù)據(jù)傾斜度,根據(jù)所述預設的代價因子及所述數(shù)據(jù)傾斜度確定所述連接操作的代價因子;若所述連接操作的指定選擇為其他優(yōu)化,則確定其他優(yōu)化對應的調(diào)整因子,計算其他優(yōu)化對應的代價因子,根據(jù)預設的代價因子及所述其他優(yōu)化對應的代價因子確定所述連接操作的代價因子。進一步地,根據(jù)所述代價因子調(diào)整所述連接操作的代價估計,包括:根據(jù)所述代價因子與所述連接操作的代價估計的乘積更新所述連接操作的代價估計。進一步地,當所述操作樹的操作類型為聚合操作時,確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計,包括:確定待調(diào)整的代價估計為所述聚合操作的代價估計,基于所述聚合操作的指定選擇確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述聚合操作的代價估計。進一步地,基于所述聚合操作的指定選擇確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述聚合操作的代價估計,包括以下任一項:若所述聚合操作的指定選擇為聚合率,則確定調(diào)整因子為所述聚合率,更新所述聚合率的值,根據(jù)更新后的聚合率的值計算代價因子,并根據(jù)所述代價因子調(diào)整所述聚合操作的代價估計;若所述聚合操作的指定選擇為傾斜率,則確定調(diào)整因子為所述傾斜率,根據(jù)所述傾斜率及所述聚合操作的聚合率更新所述聚合率的值,根據(jù)更新后的聚合率的值計算代價因子,并根據(jù)所述代價因子調(diào)整所述聚合操作的代價估計。進一步地,根據(jù)所述調(diào)整因子調(diào)整所述聚合操作的代價估計,包括:根據(jù)所述代價因子與所述聚合操作的代價估計的乘積更新所述聚合操作的代價估計。進一步地,所述方法還包括:通過hints、配置文件及新增語法中任一種或任幾種組合方式將所述統(tǒng)計信息的數(shù)據(jù)表存在其他優(yōu)化方式的信息進行發(fā)送至所述操作樹。根據(jù)本申請另一個方面,還提供了一種代價估計的設備,所述設備包括:估算裝置,用于根據(jù)操作樹的操作類型確定對應的代價估計方式,基于所述代價估計方式及獲取到的原始統(tǒng)計信息確定所述操作類型的代價估計;優(yōu)化裝置,用于確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計;累積裝置,用于根據(jù)未調(diào)整的代價估計及調(diào)整后的代價估計確定所述操作樹的累積代價估計。進一步地,所述設備還包括:執(zhí)行裝置,用于根據(jù)所述累積代價估計優(yōu)化結(jié)構化查詢語言語句對應的執(zhí)行計劃。進一步地,所述設備包括:統(tǒng)計信息矯正裝置,用于通過hints、配置文件及新增語法中任一種或任幾種組合方式對獲取到的原始統(tǒng)計信息進行矯正,得到矯正后的統(tǒng)計信息。進一步地,所述操作樹的操作類型包括以下至少任一項:掃表操作、過濾操作、連接操作及聚合操作。進一步地,當所述操作樹的操作類型為過濾操作時,所述優(yōu)化裝置用于:確定待調(diào)整的代價估計為所述過濾操作的代價估計,基于所述過濾操作的指定選擇確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述過濾操作的代價估計。進一步地,所述優(yōu)化裝置用于以下任一項:若所述過濾操作的指定選擇為異值數(shù),則確定調(diào)整因子,并根據(jù)所述調(diào)整因子更新所述異值數(shù)的值,根據(jù)更新后的異值數(shù)的值調(diào)整所述過濾操作的代價估計;若所述過濾操作的指定選擇為選擇率,則從大于0且小于等于1的范圍中確定調(diào)整因子,并根據(jù)確定的調(diào)整因子更新所述選擇率的值,根據(jù)更新后的選擇率的值調(diào)整所述過濾操作的代價估計;若所述過濾操作的指定選擇為數(shù)據(jù)傾斜度,則從大于0且小于等于10的范圍中確定調(diào)整因子,并根據(jù)確定的調(diào)整因子更新所述數(shù)據(jù)傾斜度的值,根據(jù)更新后的數(shù)據(jù)傾斜度的值調(diào)整所述過濾操作的代價估計。進一步地,當所述操作樹的操作類型為連接操作時,所述優(yōu)化裝置用于:確定待調(diào)整的代價估計為所述連接操作的代價估計,基于所述連接操作的指定選擇確定調(diào)整因子,根據(jù)確定的調(diào)整因子計算代價因子,根據(jù)所述代價因子調(diào)整所述連接操作的代價估計。進一步地,所述優(yōu)化裝置用于以下任一項:若所述連接操作的指定選擇為連接優(yōu)先級,則確定調(diào)整因子為所述連接優(yōu)先級,根據(jù)預設的代價因子及所述優(yōu)先級確定所述連接操作的代價因子;若所述連接操作的指定選擇為連接類型,則確定調(diào)整因子為所述連接類型,計算所述連接類型的代價因子,并根據(jù)預設的代價因子及所述連接類型的代價因子確定所述連接操作的代價因子;若所述連接操作的指定選擇為數(shù)據(jù)傾斜度,則確定調(diào)整因子為所述數(shù)據(jù)傾斜度,根據(jù)所述預設的代價因子及所述數(shù)據(jù)傾斜度確定所述連接操作的代價因子;若所述連接操作的指定選擇為其他優(yōu)化,則確定其他優(yōu)化對應的調(diào)整因子,計算其他優(yōu)化對應的代價因子,根據(jù)預設的代價因子及所述其他優(yōu)化對應的代價因子確定所述連接操作的代價因子。進一步地,所述優(yōu)化裝置用于:根據(jù)所述代價因子與所述連接操作的代價估計的乘積更新所述連接操作的代價估計。進一步地,當所述操作樹的操作類型為聚合操作時,所述優(yōu)化裝置用于:確定待調(diào)整的代價估計為所述聚合操作的代價估計,基于所述聚合操作的指定選擇確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述聚合操作的代價估計。進一步地,所述優(yōu)化裝置用于以下任一項:若所述聚合操作的指定選擇為聚合率,則確定調(diào)整因子為所述聚合率,更新所述聚合率的值,并根據(jù)更新后的聚合率的值計算代價因子,并根據(jù)所述代價因子調(diào)整所述聚合操作的代價估計;若所述聚合操作的指定選擇為傾斜率,則確定調(diào)整因子為所述傾斜率,根據(jù)所述傾斜率及所述聚合操作的聚合率更新所述聚合率的值,根據(jù)更新后的聚合率的值計算代價因子,并根據(jù)所述代價因子調(diào)整所述聚合操作的代價估計。進一步地,所述優(yōu)化裝置用于:根據(jù)所述代價因子與所述聚合操作的代價估計的乘積更新所述聚合操作的代價估計。進一步地,所述設備還包括:發(fā)送裝置,用于通過hints、配置文件及新增語法中任一種或任幾種組合方式將所述統(tǒng)計信息的數(shù)據(jù)表存在其他優(yōu)化方式的信息進行發(fā)送至所述操作樹。根據(jù)本申請再一個方面,還提供了一種基于計算的設備,包括:處理器;以及被安排成存儲計算機可執(zhí)行指令的存儲器,所述可執(zhí)行指令在被執(zhí)行時使所述處理器:根據(jù)所述操作樹的操作類型確定對應的代價估計方式,基于所述代價估計方式及獲取到的原始統(tǒng)計信息確定所述操作類型的代價估計;確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計;根據(jù)未調(diào)整的代價估計及調(diào)整后的代價估計確定所述操作樹的累積代價估計。與現(xiàn)有技術相比,本申請通過根據(jù)所述操作樹的操作類型確定對應的代價估計方式,基于所述代價估計方式及獲取到的原始統(tǒng)計信息確定所述操作類型的代價估計;確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計;根據(jù)未調(diào)整的代價估計及調(diào)整后的代價估計確定所述操作樹的累積代價估計,解決了傳統(tǒng)代價優(yōu)化器存在的統(tǒng)計信息的完備性和代價估算的準確性之間的矛盾;通過矯正代價估計,提高代價優(yōu)化器代價估計的準確性,從而生成性能更好的執(zhí)行計劃。進一步地,改進sql的代價優(yōu)化器,使其感知其他優(yōu)化的效果,從而生成全局更優(yōu)的執(zhí)行計劃。附圖說明通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:圖1示出根據(jù)本申請的一個方面提供的一種代價估計的方法流程示意圖;圖2示出本申請中的一實施例的操作樹的示意圖;圖3示出根據(jù)本申請的又一個方面提供的一種代價估計的設備結(jié)構示意圖。附圖中相同或相似的附圖標記代表相同或相似的部件。具體實施方式下面結(jié)合附圖對本申請作進一步詳細描述。在本申請一個典型的配置中,終端、服務網(wǎng)絡的設備和可信方均包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡接口和內(nèi)存。內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁盤存儲或其他磁性存儲設備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。圖1示出根據(jù)本申請的一個方面提供的一種代價估計的方法流程示意圖,所述方法包括:在步驟s11中,根據(jù)操作樹的操作類型確定對應的代價估計方式,基于所述代價估計方式及獲取到的原始統(tǒng)計信息確定所述操作類型的代價估計;在步驟s12中,確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計;在步驟s13中,根據(jù)未調(diào)整的代價估計及調(diào)整后的代價估計確定所述操作樹的累積代價估計。從而解決傳統(tǒng)代價優(yōu)化器中存在的統(tǒng)計信息的完備性和代價估算的準確性之間的矛盾,進一步地,本申請所述方法包括:根據(jù)所述累積代價估計優(yōu)化結(jié)構化查詢語言語句對應的執(zhí)行計劃。本申請所述的代價估計的方法應用于數(shù)據(jù)庫系統(tǒng)中sql的優(yōu)化,提高sql的代價優(yōu)化器代價估計的準確性,從而生成性能更好的執(zhí)行計劃。在步驟s11中,根據(jù)所述操作樹的操作類型確定對應的代價估計方式,基于所述代價估計方式及所述矯正后的統(tǒng)計信息確定所述操作類型的代價估計;在此,一棵操作樹由不同的操作符構成,每一種操作符代表一類操作,基本的操作包括掃表、過濾、連接、投影、聚合、選擇等,如圖2所示的一顆典型的操作樹示意圖,調(diào)整操作樹上的不同操作,估算每一步操作的代價,最終生成一顆累積代價最小的操作樹,生成執(zhí)行計劃,而不同操作類型的代價估算方法不同,因此需要確定操作類型,采用對應的代價估計方式,進行每一步操作的代價估計。需要說明的是,在數(shù)據(jù)庫系統(tǒng)中,編譯后的sql語句會被表示為某種內(nèi)部形式,可稱為操作樹(operatortree),統(tǒng)計信息為后續(xù)代價估算的數(shù)據(jù)基礎,精良的代價估算算法依賴于完備的統(tǒng)計信息,在本申請一實施例中,獲取到的原始統(tǒng)計信息的缺失可以通過人工補充,統(tǒng)計信息和代價估算的誤差還可以通過人工矯正,通過一些額外途徑分析或獲取到數(shù)據(jù)集更加精準的信息。在本申請一實施例中,可以通過hints的方式對所述原始的統(tǒng)計信息進行矯正,得到矯正后的統(tǒng)計信息。在此,矯正cbo代價估算模型的實現(xiàn)方式有多種,可以采用sql中hints的方式為cbo提供額外信息,還可以通過添加新的語法、配置文件等方式靈活設置,在本申請實施例中,通過hints的方式僅為舉例。統(tǒng)計信息本身的誤差通過hints的方式消除,例如,若估算的ndv誤差較大,可以用如下方式矯正:/*+ndv(col)=value*/,或者矯正某一屬性的最大值:/*+max(col)=value*/。對于其他統(tǒng)計信息如表級和列級存在的誤差,也可以通過hints的方式進行矯正,通過hints方式矯正統(tǒng)計信息,從而保證了代價估算的準確性。在上述實施例中,ndv(numberofdistinctvalue,異值數(shù))從統(tǒng)計信息中得到。在本申請一實施例中,所述操作樹的操作類型包括以下至少任一項:掃表操作、過濾操作、連接操作及聚合操作。在本申請一實施例中,矯正代價優(yōu)化器中價估算模型可對操作類型中掃表操作、過濾操作、連接操作及聚合操作中的任一種或任幾種組合中的代價估算進行矯正,提高sql的代價優(yōu)化器代價估計的準確性,從而生成性能更好的執(zhí)行計劃。在步驟s12中,確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計;在此,對于過濾、聚合等操作的代價估算,通過調(diào)整因子進行調(diào)整代價估計,從而減少數(shù)據(jù)傾斜的場景的代價估算,因不同的操作類型的代價,估計算法不同,因此需要確定待調(diào)整的代價估計,可能是需要優(yōu)化過濾操作、連接操作、聚合操作等操作中的一種操作或任幾種操作,進一步地提高操作樹的代價估算的準確性。需要說明的是,調(diào)整因子包括謂詞的選擇率、連接的優(yōu)先級、連接類型、聚合率、連接率、代價因子等會影響每一操作的代價估計的因素。在步驟s13中,根據(jù)未調(diào)整的代價估計及調(diào)整后的代價估計確定所述操作樹的累積代價估計。在一實施例中,例如,掃表操作的代價估計為a,未進行調(diào)整,過濾操作時的代價估算算法進行優(yōu)化,得到調(diào)整后的代價估計b’,連接操作的代價估算算法進行優(yōu)化,得到調(diào)整后的代價估計c’,聚合操作等其他操作的代價估計均未調(diào)整,則操作樹的最終代價是由未進行優(yōu)化估算算法的操作類型的代價估計(比如代價估計a)與進行優(yōu)化估算算法的操作類型的代價估計(比如代價估計b’、c’)的累積代價估計,當然,可以理解的是,操作樹的每一操作類型的代價估算算法均可進行優(yōu)化,或部分進行優(yōu)化。其中,具體優(yōu)化操作類型的估算算法可以通過如下方式實現(xiàn):進一步地,當所述操作樹的操作類型為過濾操作時,在步驟s12中,確定待調(diào)整的代價估計為所述過濾操作的代價估計,基于所述過濾操作的指定選擇確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述過濾操作的代價估計。在本申請一實施例中,過濾操作的代價與謂詞的選擇率相關,不同形式的謂詞,其選擇率的估算算法不同,假定數(shù)據(jù)均勻分布,則恒等謂詞(例如col=value)的選擇率用該列的1/ndv估算,范圍謂詞的選擇率則可以估算為范圍占比。因此可通過調(diào)整選擇率可對過濾操作進行優(yōu)化,而選擇率與ndv有關,進而可通過矯正ndv的方式可減少估算的誤差。可通過以下方式進行實現(xiàn):進一步地,在步驟s12中,若所述過濾操作的指定選擇為異值數(shù),則確定調(diào)整因子,并根據(jù)所述調(diào)整因子更新所述異值數(shù)的值,根據(jù)更新后的異值數(shù)的值調(diào)整所述過濾操作的代價估計;若所述過濾操作的指定選擇為選擇率(selectivity),則從大于0且小于等于1的范圍中確定調(diào)整因子,并根據(jù)確定的調(diào)整因子更新所述選擇率的值,根據(jù)更新后的選擇率的值調(diào)整所述過濾操作的代價估計;若所述過濾操作的指定選擇為數(shù)據(jù)傾斜度(skew-ratio),則從大于0且小于等于10的范圍中確定調(diào)整因子,并根據(jù)確定的調(diào)整因子更新所述數(shù)據(jù)傾斜度的值,根據(jù)更新后的數(shù)據(jù)傾斜度的值調(diào)整所述過濾操作的代價估計。在本申請一實施例中,通過hints指定謂詞(predicate)的選擇率(value):/*+selectivity(predicate)=value*/和傾斜度/*+skew(table)=value*/,selectivity(predicate)的取值范圍為(0,1.0],skew(table)的取值范圍為(1.0,10.0],具體地為若指定了異值數(shù)(ndv),則改變該過濾操作的異值數(shù)的值,若指定了選擇率,則改變過濾操作的選擇率的值,若指定了數(shù)據(jù)傾斜度,則改變該過濾操作數(shù)據(jù)傾斜度的值,若指定了其他情況,進行相應處理。根據(jù)上述指定操作確定調(diào)整因子對過濾操作的代價估算進行優(yōu)化,更新過濾操作,重新計算過濾操作的代價。通過指定值(指定異值數(shù)、選擇率等的值),既節(jié)省了復雜的運算,又避免了cbo對于選擇率的錯誤估計,對過度傾斜的表,cbo可以針對性選擇連接的類型。進一步地,當所述操作樹的操作類型為連接操作時,在步驟s12中,確定待調(diào)整的代價估計為所述連接操作的代價估計,基于所述連接操作的指定選擇確定調(diào)整因子,根據(jù)確定的調(diào)整因子計算代價因子,根據(jù)所述代價因子調(diào)整所述連接操作的代價估計。在此,連接操作需要估算參與連接的數(shù)據(jù)集的規(guī)模和連接后數(shù)據(jù)集的規(guī)模,參與連接的數(shù)據(jù)集往往從原始數(shù)據(jù)集經(jīng)過過濾后得到,其數(shù)據(jù)集規(guī)模與謂詞的過濾率相關,連接后的數(shù)據(jù)集規(guī)模的估算可以通過將連接謂詞作為事實表的過濾條件處理,謂詞對維度表的過濾率即為事實表的過濾率。連接操作代價依賴于很多因素,其代價估計會直接影響到連接順序和算法的選擇,對性能的影響非常大。其中,代價因子為最終調(diào)整代價的系數(shù),在以下實施例中,代價因子與代價系數(shù)可互換使用,通過調(diào)整代價因子間接的調(diào)整代價估計,在本申請一實施例中,可以通過干預的方式,指定或者修正連接順序或者連接算法,確定代價系數(shù),從而調(diào)整連接操作的代價估計。具體地,通過以下方式實現(xiàn):在本申請一實施例中,在步驟s12中,若所述連接操作的指定選擇為連接優(yōu)先級,則確定調(diào)整因子為所述連接優(yōu)先級,根據(jù)預設的代價因子及所述優(yōu)先級確定所述連接操作的代價因子;若所述連接操作的指定選擇為連接類型,則確定調(diào)整因子為所述連接類型,計算所述連接類型的代價因子,并根據(jù)預設的代價因子及所述連接類型的代價因子確定所述連接操作的代價因子;若所述連接操作的指定選擇為數(shù)據(jù)傾斜度,則確定調(diào)整因子為所述數(shù)據(jù)傾斜度,根據(jù)所述預設的代價因子及所述數(shù)據(jù)傾斜度確定所述連接操作的代價因子;若所述連接操作的指定選擇為其他優(yōu)化,則確定其他優(yōu)化對應的調(diào)整因子,計算其他優(yōu)化對應的代價因子,根據(jù)預設的代價因子及所述其他優(yōu)化對應的代價因子確定所述連接操作的代價因子。在此,若操作符的類型是連接,表示是連接操作,則首先定義初始代價系數(shù),若指定連接優(yōu)先級,則調(diào)整代價系數(shù)(代價因子)=初始代價系數(shù)/優(yōu)先級;若指定連接類型,則計算指定連接類型的代價系數(shù)a,調(diào)整代價系數(shù)(代價因子)=初始代價系數(shù)×a;若指定數(shù)據(jù)傾斜度,則調(diào)整代價系數(shù)(代價因子)=代價系數(shù)×傾斜度;若指定其他優(yōu)化,則計算其他優(yōu)化存在情況下的代價系數(shù)b,調(diào)整代價系數(shù)(代價因子)=初始代價系數(shù)×b。進一步地,在步驟s12中,根據(jù)所述代價因子與所述連接操作的代價估計的乘積更新所述連接操作的代價估計。在此,調(diào)整好代價系數(shù)后,計算連接操作的代價,并得到代價系數(shù)和連接操作代價的乘積。需要說明的是,代價因子為最終調(diào)整代價的系數(shù),例如,根據(jù)連接的優(yōu)先級,計算一個相對應的因子,通過該因子來調(diào)整原先的連接操作的代價,再比如,掃表操作原本的代價因子為1.0,不需要調(diào)整,若指定了其他優(yōu)化,則計算相應的代價因子,通過代價因子來調(diào)整(相乘)。在本申請一優(yōu)選實施例中,對于連接操作,可以設計hints:priority(table1,table2,…)=njointype(table)=join_type;其中,priority(table1,table2,…)指定join的優(yōu)先級,取值范圍(1.0,100]。例如,設計如下的hint:/*priority(table_a,table_b)=10*/,指定數(shù)據(jù)表table_a和數(shù)據(jù)表table_b的連接優(yōu)先級。在對table_a和table_b的連接做代價估算時,根據(jù)指定的優(yōu)先級適當修正估算結(jié)果,以至生成合適的連接順序。同樣還可以為參與連接的全體數(shù)據(jù)集的子集指定連接優(yōu)先級,例如:/*+priority(table_a,table_b,table_c)=20*/,修正table_a、table_b和table_c整體作為子查詢的連接代價估算。通過這種方式,可以讓部分子集先做連接操作,而不是將其拆解開來,各自參與其他連接運算。為cbo引入估算修正,即使在估算誤差很大的情況下,優(yōu)化器依然可以生產(chǎn)性能很好的執(zhí)行計劃。需要說明的是,上述jointype(table)指定連接類型,如數(shù)據(jù)庫系統(tǒng)中的常見類型mapjoin、lookupjoin、bucketjoin等,例如/*+jointype(table_a)=mapjoin*/指定table_a可以做mapsidejoin。優(yōu)化器選擇mapsidejoin的前提是參與連接的數(shù)據(jù)集中存在規(guī)模較小的數(shù)據(jù)集,因而當對數(shù)據(jù)集規(guī)模的估算存在誤差時,可以用hints的形式確保存在適用mapsidejoin的小規(guī)模數(shù)據(jù)集。進一步地,當所述操作樹的操作類型為聚合操作時,在步驟s12中,確定待調(diào)整的代價估計為所述聚合操作的代價估計,基于所述聚合操作的指定選擇確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述聚合操作的代價估計。在本申請一實施例中,對于聚合后數(shù)據(jù)集規(guī)模的估算在優(yōu)化中有很大的作用,當聚合率高的時候,提前對參與連接的數(shù)據(jù)集去重(聚合),可以減少運算量,提高執(zhí)行效率;對于已經(jīng)去重的數(shù)據(jù)集還可以改用效率更高的連接算法,假定數(shù)據(jù)均勻分布,則常規(guī)聚合的結(jié)果估算為聚合字段的ndv,當數(shù)據(jù)傾斜時,或者其他原因造成估算誤差大時,通過以下方式進行矯正代價估算:進一步地,在步驟s12中,若所述聚合操作的指定選擇為聚合率,則確定調(diào)整因子為所述聚合率,更新所述聚合率的值,根據(jù)更新后的聚合率的值計算代價因子,并根據(jù)所述代價因子調(diào)整所述聚合操作的代價估計;若所述聚合操作的指定選擇為傾斜率,則確定調(diào)整因子為所述傾斜率,根據(jù)所述傾斜率及所述聚合操作的聚合率更新所述聚合率的值,根據(jù)更新后的聚合率的值計算代價因子,并根據(jù)所述代價因子調(diào)整所述聚合操作的代價估計。在本申請一實施例中,進行聚合操作的代價估計時,若指定了聚合率,則改變聚合操作的聚合率,若指定了傾斜率,則改變聚合操作的聚合率=原聚合率×傾斜率,進一步地,根據(jù)所述聚合率與所述聚合操作的代價估計的乘積更新所述聚合操作的代價估計,在此,更新聚合率的值后,計算聚合操作的代價,并得到操作代價與更新后的聚合率的值的乘積??梢岳斫獾氖牵梢允褂胔ints矯正代價估計,指定聚合率:aggregateration(op)=n,其中,aggregateration(op)的取值范圍為(0.1,1.0]。進一步地,所述方法還包括:通過hints、配置文件及新增語法中任一種或任幾種組合的方式將所述統(tǒng)計信息的數(shù)據(jù)表存在其他優(yōu)化方式的信息進行發(fā)送至所述操作樹。在本申請一實施例中,可以設計hint:optimizations(table)={opt1,opt2},將其它優(yōu)化的信息告知cbo,從而使得cbo可以感知其他優(yōu)化器對操作樹的優(yōu)化,將其他優(yōu)化納入到代價模型中綜合考量,進而生成全局最優(yōu)執(zhí)行計劃。在本申請一優(yōu)選實施例中,cbo整體代價估計模型的改進可以通過以下偽代碼表示:其中,getcostof(operator)表示原始cbo模型對于操作的代價估算;getcostfactorfromopt()表示從具體的參數(shù)中計算出代價因子,取值范圍(0,1.0],用來調(diào)整估算的代價,參數(shù)不同,估算方法不同,在此,通常優(yōu)化效果越好,取值越?。籫etcostfactorjointype()表示根據(jù)join類型計算出代價因子,取值范圍(0,10],用來調(diào)整估算的代價,join類型不同,估算方法不同,實際取值根據(jù)數(shù)據(jù)庫系統(tǒng)中不同join的性能來決定,性能越好的join類型,取值越?。环祷刂礳ost表示改進后的代價估算值。綜上所述,通過本申請所述的代價估計的方法,解決了傳統(tǒng)代價優(yōu)化器存在的統(tǒng)計信息的完備性和代價估算的準確性之間的矛盾;通過人工信息注入的方式(如hints),提高sql的代價優(yōu)化器代價估計的準確性,從而生成性能更好的執(zhí)行計劃;改進sql的代價優(yōu)化器,使其感知其他優(yōu)化的效果,從而生成全局更優(yōu)的執(zhí)行計劃。圖3示出根據(jù)本申請的另一個方面提供的一種代價估計的設備結(jié)構示意圖,所述設備包括:估算裝置11、優(yōu)化裝置12和累積裝置13,其中,估算裝置11,用于根據(jù)操作樹的操作類型確定對應的代價估計方式,基于所述代價估計方式及獲取到的原始統(tǒng)計信息確定所述操作類型的代價估計;優(yōu)化裝置12,用于確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計;累積裝置13,用于根據(jù)未調(diào)整的代價估計及調(diào)整后的代價估計確定所述操作樹的累積代價估計。從而解決傳統(tǒng)代價優(yōu)化器中存在的統(tǒng)計信息的完備性和代價估算的準確性之間的矛盾,進一步地,本申請所述設備包括:執(zhí)行裝置14,用于根據(jù)所述累積代價優(yōu)化結(jié)構化查詢語言語句對應的執(zhí)行計劃。本申請所述的代價估計的方法應用于數(shù)據(jù)庫系統(tǒng)中sql的優(yōu)化,提高sql的代價優(yōu)化器代價估計的準確性,從而生成性能更好的執(zhí)行計劃。估算裝置11,用于根據(jù)操作樹的操作類型確定對應的代價估計方式,基于所述代價估計方式及獲取到的統(tǒng)計信息確定所述操作類型的代價估計;在此,一棵操作樹由不同的操作符構成,每一種操作符代表一類操作,基本的操作包括掃表、過濾、連接、投影、聚合、選擇等,如圖2所示的一顆典型的操作樹示意圖,調(diào)整操作樹上的不同操作,估算每一步操作的代價,最終生成一顆累積代價最小的操作樹,生成執(zhí)行計劃,而不同操作類型的代價估算方法不同,因此需要確定操作類型,采用對應的代價估計方式,進行每一步操作的代價估計。需要說明的是,在數(shù)據(jù)庫系統(tǒng)中,編譯后的sql語句會被表示為某種內(nèi)部形式,可稱為操作樹(operatortree),統(tǒng)計信息為后續(xù)代價估算的數(shù)據(jù)基礎,精良的代價估算算法依賴于完備的統(tǒng)計信息,在本申請一實施例中,獲取到的原始統(tǒng)計信息的缺失可以通過人工補充,統(tǒng)計信息和代價估算的誤差還可以通過人工矯正,通過一些額外途徑分析或獲取到數(shù)據(jù)集更加精準的信息。在本申請一實施例中,所述設備包括統(tǒng)計信息矯正裝置(未示出),可以用于通過hints的方式對所述初步估算后的統(tǒng)計信息進行矯正,得到矯正后的統(tǒng)計信息。在此,矯正cbo代價估算模型的實現(xiàn)方式有多種,可以采用sql中hints的方式為cbo提供額外信息,還可以通過添加新的語法、配置文件等方式靈活設置,在本申請實施例中,通過hints的方式僅為舉例。統(tǒng)計信息本身的誤差通過hints的方式消除,例如,若估算的ndv誤差較大,可以用如下方式矯正:/*+ndv(col)=value*/,或者矯正某一屬性的最大值:/*+max(col)=value*/。對于其他統(tǒng)計信息如表級和列級存在的誤差,也可以通過hints的方式進行矯正,通過hints方式矯正統(tǒng)計信息,從而保證了代價估算的準確性。在上述實施例中,ndv(numberofdistinctvalue,異值數(shù))從統(tǒng)計信息中得到。在本申請一實施例中,所述操作樹的操作類型包括以下至少任一項:掃表操作、過濾操作、連接操作及聚合操作。在本申請一實施例中,矯正代價優(yōu)化器中價估算模型可對操作類型中掃表操作、過濾操作、連接操作及聚合操作中的任一種或任幾種組合中的代價估算進行矯正,提高sql的代價優(yōu)化器代價估計的準確性,從而生成性能更好的執(zhí)行計劃。優(yōu)化裝置12,用于確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計;在此,對于過濾、聚合等操作的代價估算,通過調(diào)整因子進行調(diào)整代價估計,從而減少數(shù)據(jù)傾斜的場景的代價估算,因不同的操作類型的代價,估計算法不同,因此需要確定待調(diào)整的代價估計,可能是需要優(yōu)化過濾操作、連接操作、聚合操作等操作中的一種操作或任幾種操作,進一步地提高操作樹的代價估算的準確性。需要說明的是,調(diào)整因子包括謂詞的選擇率、連接的優(yōu)先級、連接類型、聚合率、連接率、代價因子等會影響每一操作的代價估計的因素。累積裝置13,用于根據(jù)未調(diào)整的代價估計及調(diào)整后的代價估計確定所述操作樹的累積代價估計。在一實施例中,例如,掃表操作的代價估計為a,未進行調(diào)整,過濾操作時的代價估算算法進行優(yōu)化,得到調(diào)整后的代價估計b’,連接操作的代價估算算法進行優(yōu)化,得到調(diào)整后的代價估計c’,聚合操作等其他操作的代價估計均未調(diào)整,則操作樹的最終代價是由未進行優(yōu)化估算算法的操作類型的代價估計(比如代價估計a)與進行優(yōu)化估算算法的操作類型的代價估計(比如代價估計b’、c’)的累積代價估計,當然,可以理解的是,操作樹的每一操作類型的代價估算算法均可進行優(yōu)化,或部分進行優(yōu)化。其中,具體優(yōu)化操作類型的估算算法可以通過如下方式實現(xiàn):進一步地,當所述操作樹的操作類型為過濾操作時,優(yōu)化裝置12,用于確定待調(diào)整的代價估計為所述過濾操作的代價估計,基于所述過濾操作的指定選擇確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述過濾操作的代價估計。在本申請一實施例中,過濾操作的代價與謂詞的選擇率相關,不同形式的謂詞,其選擇率的估算算法不同,假定數(shù)據(jù)均勻分布,則恒等謂詞(例如col=value)的選擇率用該列的1/ndv估算,范圍謂詞的選擇率則可以估算為范圍占比。因此可通過調(diào)整選擇率可對過濾操作進行優(yōu)化,而選擇率與ndv有關,進而可通過矯正ndv的方式可減少估算的誤差。可通過以下方式進行實現(xiàn):進一步地,優(yōu)化裝置12,用于若所述過濾操作的指定選擇為異值數(shù),則確定調(diào)整因子,并根據(jù)所述調(diào)整因子更新所述異值數(shù)的值,根據(jù)更新后的異值數(shù)的值調(diào)整所述過濾操作的代價估計;若所述過濾操作的指定選擇為選擇率(selectivity),則從大于0且小于等于1的范圍中確定調(diào)整因子,并根據(jù)確定的調(diào)整因子更新所述選擇率的值,根據(jù)更新后的選擇率的值調(diào)整所述過濾操作的代價估計;若所述過濾操作的指定選擇為數(shù)據(jù)傾斜度(skew-ratio),則從大于0且小于等于10的范圍中確定調(diào)整因子,并根據(jù)確定的調(diào)整因子更新所述數(shù)據(jù)傾斜度的值,根據(jù)更新后的數(shù)據(jù)傾斜度的值調(diào)整所述過濾操作的代價估計。在本申請一實施例中,通過hints指定謂詞(predicate)的選擇率(value):/*+selectivity(predicate)=value*/和傾斜度/*+skew(table)=value*/,selectivity(predicate)的取值范圍為(0,1.0],skew(table)的取值范圍為(1.0,10.0],具體地為若指定了異值數(shù)(ndv),則改變該過濾操作的異值數(shù)的值,若指定了選擇率,則改變過濾操作的選擇率的值,若指定了數(shù)據(jù)傾斜度,則改變該過濾操作數(shù)據(jù)傾斜度的值,若指定了其他情況,進行相應處理。根據(jù)上述指定操作確定調(diào)整因子對過濾操作的代價估算進行優(yōu)化,更新過濾操作,重新計算過濾操作的代價。通過指定值(指定異值數(shù)、選擇率等的值),既節(jié)省了復雜的運算,又避免了cbo對于選擇率的錯誤估計,對過度傾斜的表,cbo可以針對性選擇連接的類型。進一步地,當所述操作樹的操作類型為連接操作時,優(yōu)化裝置12,用于確定待調(diào)整的代價估計為所述連接操作的代價估計,基于所述連接操作的指定選擇確定調(diào)整因子,根據(jù)確定的調(diào)整因子計算代價因子,根據(jù)所述代價因子調(diào)整所述連接操作的代價估計。在此,連接操作需要估算參與連接的數(shù)據(jù)集的規(guī)模和連接后數(shù)據(jù)集的規(guī)模,參與連接的數(shù)據(jù)集往往從原始數(shù)據(jù)集經(jīng)過過濾后得到,其數(shù)據(jù)集規(guī)模與謂詞的過濾率相關,連接后的數(shù)據(jù)集規(guī)模的估算可以通過將連接謂詞作為事實表的過濾條件處理,謂詞對維度表的過濾率即為事實表的過濾率。連接操作代價依賴于很多因素,其代價估計會直接影響到連接順序和算法的選擇,對性能的影響非常大。其中,代價因子為最終調(diào)整代價的系數(shù),在以下實施例中,代價因子與代價系數(shù)可互換使用,通過調(diào)整代價因子間接的調(diào)整代價估計,在本申請一實施例中,可以通過干預的方式,指定或者修正連接順序或者連接算法,確定代價系數(shù),從而調(diào)整連接操作的代價估計。具體地,通過以下方式實現(xiàn):在本申請一實施例中,優(yōu)化裝置12,用于若所述連接操作的指定選擇為連接優(yōu)先級,則確定調(diào)整因子為所述連接優(yōu)先級,根據(jù)預設的代價因子及所述優(yōu)先級確定所述連接操作的代價因子;若所述連接操作的指定選擇為連接類型,則確定調(diào)整因子為所述連接類型,計算所述連接類型的代價因子,并根據(jù)預設的代價因子及所述連接類型的代價因子確定所述連接操作的代價因子;若所述連接操作的指定選擇為數(shù)據(jù)傾斜度,則確定調(diào)整因子為所述數(shù)據(jù)傾斜度,根據(jù)所述預設的代價因子及所述數(shù)據(jù)傾斜度確定所述連接操作的代價因子;若所述連接操作的指定選擇為其他優(yōu)化,則確定其他優(yōu)化對應的調(diào)整因子,計算其他優(yōu)化對應的代價因子,根據(jù)預設的代價因子及所述其他優(yōu)化對應的代價因子確定所述連接操作的代價因子。在此,若操作符的類型是連接,表示是連接操作,則首先定義初始代價系數(shù),若指定連接優(yōu)先級,則調(diào)整代價系數(shù)(代價因子)=初始代價系數(shù)/優(yōu)先級;若指定連接類型,則計算指定連接類型的代價系數(shù)a,調(diào)整代價系數(shù)(代價因子)=初始代價系數(shù)×a;若指定數(shù)據(jù)傾斜度,則調(diào)整代價系數(shù)(代價因子)=代價系數(shù)×傾斜度;若指定其他優(yōu)化,則計算其他優(yōu)化存在情況下的代價系數(shù)b,調(diào)整代價系數(shù)(代價因子)=初始代價系數(shù)×b。進一步地,優(yōu)化裝置12,用于根據(jù)所述代價因子與所述連接操作的代價估計的乘積更新所述連接操作的代價估計。在此,調(diào)整好代價系數(shù)后,計算連接操作的代價,并得到代價系數(shù)和連接操作代價的乘積。需要說明的是,代價因子為最終調(diào)整代價的系數(shù),例如,根據(jù)連接的優(yōu)先級,計算一個相對應的因子,通過該因子來調(diào)整原先的連接操作的代價,再比如,掃表操作原本的代價因子為1.0,不需要調(diào)整,若指定了其他優(yōu)化,則計算相應的代價因子,通過代價因子來調(diào)整(相乘)。在本申請一優(yōu)選實施例中,對于連接操作,可以設計hints:priority(table1,table2,…)=njointype(table)=join_type;其中,priority(table1,table2,…)指定join的優(yōu)先級,取值范圍(1.0,100]。例如,設計如下的hint:/*priority(table_a,table_b)=10*/,指定數(shù)據(jù)表table_a和數(shù)據(jù)表table_b的連接優(yōu)先級。在對table_a和table_b的連接做代價估算時,根據(jù)指定的優(yōu)先級適當修正估算結(jié)果,以至生成合適的連接順序。同樣還可以為參與連接的全體數(shù)據(jù)集的子集指定連接優(yōu)先級,例如:/*+priority(table_a,table_b,table_c)=20*/,修正table_a、table_b和table_c整體作為子查詢的連接代價估算。通過這種方式,可以讓部分子集先做連接操作,而不是將其拆解開來,各自參與其他連接運算。為cbo引入估算修正,即使在估算誤差很大的情況下,優(yōu)化器依然可以生產(chǎn)性能很好的執(zhí)行計劃。需要說明的是,上述jointype(table)指定連接類型,如數(shù)據(jù)庫系統(tǒng)中的常見類型mapjoin、lookupjoin、bucketjoin等,例如/*+jointype(table_a)=mapjoin*/指定table_a可以做mapsidejoin。優(yōu)化器選擇mapsidejoin的前提是參與連接的數(shù)據(jù)集中存在規(guī)模較小的數(shù)據(jù)集,因而當對數(shù)據(jù)集規(guī)模的估算存在誤差時,可以用hints的形式確保存在適用mapsidejoin的小規(guī)模數(shù)據(jù)集。進一步地,當所述操作樹的操作類型為聚合操作時,優(yōu)化裝置12,用于確定待調(diào)整的代價估計為所述聚合操作的代價估計,基于所述聚合操作的指定選擇確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述聚合操作的代價估計。在本申請一實施例中,對于聚合后數(shù)據(jù)集規(guī)模的估算在優(yōu)化中有很大的作用,當聚合率高的時候,提前對參與連接的數(shù)據(jù)集去重(聚合),可以減少運算量,提高執(zhí)行效率;對于已經(jīng)去重的數(shù)據(jù)集還可以改用效率更高的連接算法,假定數(shù)據(jù)均勻分布,則常規(guī)聚合的結(jié)果估算為聚合字段的ndv,當數(shù)據(jù)傾斜時,或者其他原因造成估算誤差大時,通過以下方式進行矯正代價估算:進一步地,優(yōu)化裝置12,用于若所述聚合操作的指定選擇為聚合率,則確定調(diào)整因子為所述聚合率,更新所述聚合率的值,根據(jù)更新后的聚合率的值計算代價因子,并根據(jù)所述代價因子調(diào)整所述聚合操作的代價估計;若所述聚合操作的指定選擇為傾斜率,則確定調(diào)整因子為所述傾斜率,根據(jù)所述傾斜率及所述聚合操作的聚合率更新所述聚合率的值,根據(jù)更新后的聚合率的值計算代價因子,并根據(jù)所述代價因子調(diào)整所述聚合操作的代價估計。在本申請一實施例中,進行聚合操作的代價估計時,若指定了聚合率,則改變聚合操作的聚合率,若指定了傾斜率,則改變聚合操作的聚合率=原聚合率×傾斜率,進一步地,根據(jù)所述聚合率與所述聚合操作的代價估計的乘積更新所述聚合操作的代價估計,在此,更新聚合率的值后,計算聚合操作的代價,并得到操作代價與更新后的聚合率的值的乘積??梢岳斫獾氖牵梢允褂胔ints矯正代價估計,指定聚合率:aggregateration(op)=n,其中,aggregateration(op)的取值范圍為(0.1,1.0]。進一步地,所述設備還包括:發(fā)送裝置,用于通過hints、配置文件及新增語法中任一種或任幾種組合的方式將所述統(tǒng)計信息的數(shù)據(jù)表存在其他優(yōu)化方式的信息進行發(fā)送至所述操作樹。在本申請一實施例中,可以設計hint:optimizations(table)={opt1,opt2},將其它優(yōu)化的信息告知cbo,從而使得cbo可以感知其他優(yōu)化器對操作樹的優(yōu)化,將其他優(yōu)化納入到代價模型中綜合考量,進而生成全局最優(yōu)執(zhí)行計劃。在本申請一優(yōu)選實施例中,cbo整體代價估計模型的改進可以通過以下偽代碼表示:其中,getcostof(operator)表示原始cbo模型對于操作的代價估算;getcostfactorfromopt()表示從具體的參數(shù)中計算出代價因子,取值范圍(0,1.0],用來調(diào)整估算的代價,參數(shù)不同,估算方法不同,在此,通常優(yōu)化效果越好,取值越??;getcostfactorjointype表示根據(jù)join類型計算出代價因子,取值范圍(0,10],用來調(diào)整估算的代價,join類型不同,估算方法不同,實際取值根據(jù)數(shù)據(jù)庫系統(tǒng)中不同join的性能來決定,性能越好的join類型,取值越??;返回值cost表示改進后的代價估算值。綜上所述,通過本申請所述設備用于代價估計,解決了傳統(tǒng)代價優(yōu)化器存在的統(tǒng)計信息的完備性和代價估算的準確性之間的矛盾;通過人工信息注入的方式(如hints),提高sql的代價優(yōu)化器代價估計的準確性,從而生成性能更好的執(zhí)行計劃;改進sql的代價優(yōu)化器,使其感知其他優(yōu)化的效果,從而生成全局更優(yōu)的執(zhí)行計劃。根據(jù)本申請再一個方面,還提供了一種基于計算的設備,包括:處理器;以及被安排成存儲計算機可執(zhí)行指令的存儲器,所述可執(zhí)行指令在被執(zhí)行時使所述處理器:根據(jù)操作樹的操作類型確定對應的代價估計方式,基于所述代價估計方式及獲取到的原始統(tǒng)計信息確定所述操作類型的代價估計;確定待調(diào)整的代價估計,基于所述待調(diào)整的代價估計對應的操作類型確定調(diào)整因子,根據(jù)所述調(diào)整因子調(diào)整所述待調(diào)整的代價估計;根據(jù)未調(diào)整的代價估計及調(diào)整后的代價估計確定所述操作樹的累積代價估計。顯然,本領域的技術人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權利要求及其等同技術的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。需要注意的是,本申請可在軟件和/或軟件與硬件的組合體中被實施,例如,可采用專用集成電路(asic)、通用目的計算機或任何其他類似硬件設備來實現(xiàn)。在一個實施例中,本申請的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本申請的軟件程序(包括相關的數(shù)據(jù)結(jié)構)可以被存儲到計算機可讀記錄介質(zhì)中,例如,ram存儲器,磁或光驅(qū)動器或軟磁盤及類似設備。另外,本申請的一些步驟或功能可采用硬件來實現(xiàn),例如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。另外,本申請的一部分可被應用為計算機程序產(chǎn)品,例如計算機程序指令,當其被計算機執(zhí)行時,通過該計算機的操作,可以調(diào)用或提供根據(jù)本申請的方法和/或技術方案。而調(diào)用本申請的方法的程序指令,可能被存儲在固定的或可移動的記錄介質(zhì)中,和/或通過廣播或其他信號承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲在根據(jù)所述程序指令運行的計算機設備的工作存儲器中。在此,根據(jù)本申請的一個實施例包括一個裝置,該裝置包括用于存儲計算機程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當該計算機程序指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根據(jù)本申請的多個實施例的方法和/或技術方案。對于本領域技術人員而言,顯然本申請不限于上述示范性實施例的細節(jié),而且在不背離本申請的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本申請。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本申請的范圍由所附權利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請內(nèi)。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復數(shù)。裝置權利要求中陳述的多個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來表示名稱,而并不表示任何特定的順序。當前第1頁12當前第1頁12