[發明專利]一種提示子句指定方法、裝置、設備及存儲介質有效
| 申請號: | 201810619012.0 | 申請日: | 2018-06-15 |
| 公開(公告)號: | CN108959454B | 公開(公告)日: | 2020-12-04 |
| 發明(設計)人: | 萬偉;朱仲穎;張欽 | 申請(專利權)人: | 上海達夢數據庫有限公司 |
| 主分類號: | G06F16/242 | 分類號: | G06F16/242 |
| 代理公司: | 北京品源專利代理有限公司 11332 | 代理人: | 孟金喆 |
| 地址: | 201203 上海*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 提示 子句 指定 方法 裝置 設備 存儲 介質 | ||
本發明實施例公開了一種提示子句指定方法、裝置、設備及存儲介質。該方法包括:建立關于SQL語句與提示子句的對應關系的哈希表;根據哈希表為目標SQL語句指定與之匹配的目標提示子句,通過本發明的技術方案,以實現在應用系統處于運行并對外提供服務的狀態時,直接對應用系統內的SQL語句指定提示子句。
技術領域
本發明實施例涉及數據庫技術,尤其涉及一種提示子句指定方法、裝置、設備及存儲介質。
背景技術
結構化查詢語言(Structured Query Language,SQL語言)是最重要也是最常用的關系數據庫操作語言,SQL語句在數據庫中一般要經過詞法、語法、語義分析,然后由優化器生成執行計劃,最后由執行器執行計劃。在一般情況下,優化器會探測各種可能的執行計劃并計算比較每個執行計劃的代價,然后選出相對最優的執行計劃,但有時,由于優化器的代價估算不夠準確,或用戶進行的一些不合適的系統配置會導致優化器沒有探測到最優的執行計劃。提示子句被一些數據庫用來作為解決這種情況的手段,它讓用戶可以在一定程度上人工干預執行計劃的生成。
一般來說,提示子句HINT都是寫在SQL語句中的,數據庫管理系統在語法語義分析時將所有HINT信息取出來,并在優化器生成執行計劃時根據這些HINT信息確保執行計劃樹的對應部分生成用戶預期的執行計劃節點。但是在有些情況下,上述方式顯得不夠靈活。例如,實際項目應用過程中,對于一部分執行起來性能低下的SQL語句,可以通過增加或修改HINT的方式讓優化器生成更優的執行計劃。但是這時應用系統處于運行并對外提供服務的狀態,直接修改應用內的SQL語句要先停止應用、中斷服務,代價較高。
發明內容
本發明實施例提供一種提示子句指定方法、裝置、設備及存儲介質,以實現在應用系統處于運行并對外提供服務的狀態時,直接對應用系統內的SQL語句指定提示子句。
第一方面,本發明實施例提供了一種提示子句指定方法,包括:
建立關于SQL語句與提示子句的對應關系的哈希表;
根據所述哈希表為目標SQL語句指定與之匹配的目標提示子句。
進一步的,還包括:
獲取函數名稱為目標函數名稱的系統函數,其中,所述系統函數包括第一參數和第二參數;
根據所述第一參數查找所述哈希表,獲取與所述第一參數對應的哈希槽;
若所述哈希槽中存在與所述第一參數相同的SQL語句,則將所述哈希表中的與所述第一參數相同的SQL語句對應的提示子句替換為所述第二參數。
進一步的,還包括:
若所述哈希槽中不存在與所述第一參數相同的SQL語句,則將所述SQL語句與所述第二參數存儲至所述哈希槽。
進一步的,根據所述第一參數查找哈希表,獲取與所述第一參數對應的哈希槽包括:
獲取所述第一參數的哈希值;
根據所述哈希值查找哈希表,獲取與所述哈希值對應的哈希槽。
進一步的,還包括:依次判斷所述第二參數中的提示子句是否屬于提示子句列表,其中,所述第二參數至少包括一個提示子句;
若所述第二參數中的提示子句均屬于所述提示子句列表,相應的,若所述哈希槽中存在與所述第一參數相同的SQL語句,則將所述哈希表中的與所述第一參數相同的SQL語句對應的提示子句替換為所述第二參數包括:
若所述哈希槽中存在與所述第一參數相同的SQL語句,則將所述哈希表中的與所述第一參數相同的SQL語句對應的提示子句替換為所述第二參數;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海達夢數據庫有限公司,未經上海達夢數據庫有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201810619012.0/2.html,轉載請聲明來源鉆瓜專利網。





