TWI686707B - 資料庫存取方法及裝置 - Google Patents
資料庫存取方法及裝置 Download PDFInfo
- Publication number
- TWI686707B TWI686707B TW108106470A TW108106470A TWI686707B TW I686707 B TWI686707 B TW I686707B TW 108106470 A TW108106470 A TW 108106470A TW 108106470 A TW108106470 A TW 108106470A TW I686707 B TWI686707 B TW I686707B
- Authority
- TW
- Taiwan
- Prior art keywords
- execution plan
- database
- group
- unit
- grouping
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
- G06F16/24524—Access plan code generation and invalidation; Reuse of access plans
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Operations Research (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
Abstract
本說明書實施例提供一種資料庫存取方法及裝置,在資料庫存取方法中,接收資料庫存取語句。解析資料庫存取語句,以確定該資料庫存取語句中包含的目標用戶參數。確定該資料庫存取語句所屬的語句類型。獲取預先儲存的與該語句類型的資料庫存取語句對應的執行計劃分組。根據上述目標用戶參數,從獲取的執行計劃分組中選取目標執行計劃。執行目標執行計劃。
Description
本說明書一個或多個實施例涉及計算機技術領域,尤其涉及一種資料庫存取方法及裝置。
為了響應用戶的資料庫存取請求,伺服器在接收到用戶的資料庫存取請求後,通常會針對該存取請求,制定相應的存取策略和方案。此處的存取策略和方案可以被稱為執行計劃。之後,透過執行制定的執行計劃來實現對資料庫的存取,並向用戶返回所希望的結果。
需要說明的是,對上述執行計劃的制定,在理想的情況下,可以是為每個存取請求都制定對應的執行計劃。然而在制定執行計劃的過程中,通常需要對資料庫中的資料執行統計、採樣等繁瑣的操作,也即制定過程比較耗時,這通常會使用戶的存取時間變的過長。因此,為了優化用戶的存取時間,目前的執行計劃的制定方式主要包括兩種:第一種,對同一類型的存取請求,執行一次制定執行計劃的過程,也即同一類型的存取請求共享一個執行計劃。第二種,根據存取請求對應的存取語句中包含的參數不同,制定不同的執行計劃。總之,透過不同方式制定不同的執行計劃,會對資料庫的存取造成不同的影響。
本說明書一個或多個實施例描述了一種資料庫存取方法及裝置,可以提高用戶對資料庫存取的效率和準確性。
第一方面,提供了一種資料庫存取方法,包括:
接收資料庫存取語句;
解析所述資料庫存取語句,確定所述資料庫存取語句中包含的目標用戶參數;
確定所述資料庫存取語句所屬的語句類型;
獲取預先儲存的與所述語句類型的資料庫存取語句對應的執行計劃分組;所述執行計劃分組中的各個執行計劃透過不同的用戶參數相區分;
根據所述目標用戶參數,從所述執行計劃分組中選取目標執行計劃;
執行所述目標執行計劃。
第二方面,提供了一種資料庫存取裝置,包括:
接收單元,用於接收資料庫存取語句;
解析單元,用於解析所述接收單元接收的所述資料庫存取語句,確定所述資料庫存取語句中包含的目標用戶參數;
確定單元,用於確定所述資料庫存取語句所屬的語句類型;
獲取單元,用於獲取預先儲存的與所述確定單元確定的所述語句類型的資料庫存取語句對應的執行計劃分組;所述執行計劃分組中的各個執行計劃透過不同的用戶參數相區分;
選取單元,用於根據所述目標用戶參數,從所述獲取單元獲取的所述執行計劃分組中選取目標執行計劃;
執行單元,用於執行所述選取單元選取的所述目標執行計劃。
本說明書一個或多個實施例提供的資料庫存取方法及裝置,接收資料庫存取語句。解析資料庫存取語句,以確定該資料庫存取語句中包含的目標用戶參數。確定該資料庫存取語句所屬的語句類型。獲取預先儲存的與該語句類型的資料庫存取語句對應的執行計劃分組。根據上述目標用戶參數,從獲取的執行計劃分組中選取目標執行計劃。執行目標執行計劃。也即在本說明書實施例中,語句類型相同的資料庫存取語句共享一組執行計劃,而同一組執行計劃中的各個執行計劃又透過不同的用戶參數相區分,由此,可以提高用戶對資料庫存取的準確性。此外,還可以大大減少制定的執行計劃的數量。在執行計劃減少的情況下,可以提高用戶對資料庫的存取效率,並且可以達到節約計算機資源的目的。
下面結合附圖,對本說明書提供的方案進行描述。
本說明書提供的資料庫存取方法可以應用於如圖1所示的場景中,圖1中,客戶端可以向伺服器發送資料庫存取請求,該資料庫存取請求可以透過資料庫存取語句(如,結構化查詢語言(Structured Query Language,SQL)來實現。圖1中的伺服器可以包括計劃緩存,該計劃緩存可以是指從伺服器的內存記憶體劃分得到的一塊儲存空間,用於儲存伺服器生成的執行計劃。此處的執行計劃可以是由伺服器根據上述資料庫存取語句生成的。此外,伺服器還可以對資料庫進行存取。具體地,伺服器是透過對執行計劃的執行來實現對資料庫的存取。
圖1中的資料庫可以包括多個物件,該物件可以是指表、視圖等可能存在於資料庫存取語句中的存取實體。在本說明書中,以物件為表為例來說。
需要說明的是,在執行本說明書提供的資料庫存取方法之前,可以先對資料庫中的物件進行分組,從而確定多個物件類型分組。在一種實現方式中,該多個物件類型分組的確定方法可以如圖2所示。圖2中,該確定方法可以包括:
步驟210,從資料庫中選取物件模式相同的多個物件。
以表為例來說,上述物件模式相同的多個物件可以是指列的資料類型相同且索引模式相同的多張表。其中,索引模式相同可以理解為各張表所建立的索引個數以及建立索引的列相同。
舉例來說,對於透過如下的SQL語句建立的兩張表:user_01和user_02,則認為該兩張表的物件模式相同。
透過上述SQL語句可以得出,user_01總共包括3列,且該3列的資料類型分別為:“integer”、“date”以及“number(10,2)”。此外,user_01還建立了索引,且建立索引的列為第3列。同理,可以得出,user_02總共包括3列,且該3列的資料類型分別為:“integer”、“date”以及“number(10,2)”。此外,user_02還建立了索引,且建立索引的列為第3列。由此,可以認為user_01和user_02是物件模式相同的兩張表。
步驟220,對該多個物件進行分組。
需要說明的是,在本說明書中,物件的分組是一個漸進的過程。如,對步驟210中選取的多個物件,可以先針對其中任意兩個物件進行分組,即計算該兩個物件之間的相似度。當計算的相似度小於預設閾值d時,將該兩個物件劃分為一個分組。當計算的相似度不小於預設閾值d時,將該兩個物件分別劃分為兩個分組。之後,針對多個物件中的第三個物件進行分組,如,在前述兩個物件劃分為一個分組時,可以計算第三個物件與其中一個物件之間的相似度。若計算的相似度小於預設閾值d,則將第三個物件也劃分到上述一個分組中。若計算的相似度不小於預設閾值d,則計算第三個物件與另一個物件之間的相似度。若計算的相似度小於預設閾值d,則將第三個物件也劃分到上述一個分組中;否則,將第三個物件劃分到另一個分組中。
在前述兩個物件分別劃分為兩個分組時,可以計算第三個物件與其中一個物件之間的相似度。若計算的相似度小於預設閾值d,則將第三個物件劃分到該一個物件所在分組中。若計算的相似度不小於預設閾值d,則計算第三個物件與另一個物件之間的相似度。若計算的相似度小於預設閾值d,則將第三個物件劃分到該另一個物件所在分組中;否則,將第三個物件劃分到其它分組中。以此類推,直至將上述多個物件均劃分到對應的分組中。
總之,本說明書提供的物件分組方法是針對每個物件依次進行的。即對某個物件進行分組時,可以將該物件依次與已經存在的多個分組內的多個物件進行相似度比較(即計算相似度),當與任意一組內的某的物件之間的相似度滿足要求的時候,即停止比較,並將該物件劃分到該分組中;否則,繼續比較。如果最終沒有任何一個物件與該物件“相似”(即相似度小於預設閾值d),則將該物件單獨劃分為一組,之後對其它物件繼續執行上述相似度比較過程。
在一種實現方式中,可以透過計算兩個物件之間的歐幾裡得距離來確定上述相似度。以計算兩張表的相似度為例來說,可以預先設定三個屬性:行數r,唯一值個數ndv以及平均行長rl。之後,在計算任意兩張表之間的相似度時,可以先確定該兩張表的上述三個屬性的屬性值。最後,基於該兩張表各自的三個屬性的屬性值,來計算兩者之間的相似度。在一個例子中,任意兩張表之間的相似度計算公式可以如下所示。
其中,similariry為兩張表之間的相似度,r
1、ndv
1以及rl
1分別為其中一張表的行數、唯一值個數以及平均行長,r
2、ndv
2以及rl
2分別為另一張表的行數、唯一值個數以及平均行長。
當然,在實際應用中,也可以定義其它的屬性,如,列數等,本說明書對此不作限定。
可以理解的是,上述步驟210-步驟220可以是重複執行的,直至資料庫中的每個物件均被劃分到對應的分組。在將資料庫的每個物件均被劃分到對應的分組之後,可以將劃分得到的各個分組作為多個物件類型分組。
步驟230,建立資料庫中的各個物件與多個物件類型分組之間的對應關係。
在一個例子中,上述對應關係可以如表1所示。
表1
表1中,user_01和user_02屬於同一物件類型分組(group_01),也即user_01與user_02的物件模式相同且兩者之間的相似度小於預設閾值d。
本說明書透過將物件模式相同且相似度小於預設閾值d的物件劃分到同一的物件類型分組,可以在分庫分表的場景下,聚合同一邏輯表的多張實體分表,從而可以大大減少生成的執行計劃的數量,這可以達到節約計算機資源的目的。
需要說明的是,對上述多個物件類型分組,可以週期性自動檢測每個物件類型分組中各個物件的物件模式是否相同,並在物件模式相同時,針對每個物件,計算該物件與所屬物件類型分組中其它物件之間的相似度。當該物件與其它物件之間的相似度均不小於預設閾值時,重新確定該物件所屬的物件類型分組。由此,來確保資料庫中各個物件分組的準確性,進而可以提供資料庫存取的準確性。此外,上述自動檢測物件分組準確性的過程,可以減少對用戶的依賴和侵入,從而增加了資料庫系統的穩定性。
還需要說明的是,本說明書基於物件模式和相似度確定物件類型分組的策略,可以避免由用戶指定物件類型分組而使資料庫的穩定性和易用性差的問題。
可以理解的是,在將資料庫中的各個物件劃分到對應的物件類型分組之後,就可以執行本說明書提供的資料庫存取方法。
圖3為本說明書一個實施例提供的資料庫存取方法流程圖。所述方法的執行主體可以為具有處理能力的設備:伺服器或者系統或者裝置,如,圖1中的伺服器。如圖3所示,所述方法具體可以包括:
步驟310,接收資料庫存取語句。
此處,可以是由伺服器接收客戶端發送的資料庫存取語句。該資料庫存取語句可以是指SQL語句。如,可以為:select * from user_01 a, dept_01 b where a.id = b.id and a.id = 1。
步驟320,解析資料庫存取語句,確定資料庫存取語句中包含的目標用戶參數。
在資料庫存取語句為SQL語句時,可以是根據SQL語句的語法,來解析該SQL語句。上述目標用戶參數可以是指SQL語句中的固定值。其可以包括:整數、浮點數以及字符串等。
如前述例子,該SQL語句中包含的目標用戶參數為:1。
步驟330,確定資料庫存取語句所屬的語句類型。
在一種實現方式中,可以是先對資料庫存取語句進行參數化。之後根據參數化後的資料庫存取語句,確定所屬的語句類型。其中,對資料庫存取語句進行參數化的步驟可以包括:
步驟a,從資料庫存取語句中提取對應的物件集合。
其中,物件集合中的物件可以是指上述表、視圖等可能存在於資料庫存取語句中的存取實體。在資料庫存取語句為SQL語句時,可以是透過SQL語句的語法對SQL語句進行解析,來提取上述物件集合。
以資料庫存取語句為:select * from user_01 a, dept_01 b where a.id = b.id and a.id = 1為例來說,提取的物件集合可以為:O={ user_01,dept_01}。
步驟b,對物件集合中的物件,確定物件所屬的物件類型分組,並獲取對應的分組名稱。
在預先確定多個物件類型分組,並建立資料庫中的各個物件與多個物件類型分組之間的對應關係時,可以根據該對應關係,來確定物件集合中的物件所屬的物件類型分組。如前述例子,可以根據表1所示的內容,確定user_01所屬的物件類型分組為:group_01,dept_01所屬的物件類型分組為:group_02。
步驟c,將資料庫存取語句中的物件替換為對應的分組名稱,並將目標用戶參數替換為通配字元。
此處的通配字元可以是指任何與資料庫存取語句中其它字符或者字符串不相同的一個或多個字符。該字符可以為“@”、“?”或者“%”等特殊字符。以通配字元為:“?”為例來說,對前述例子,將user_01替換為group_01,將dept_01替換為group_02,將1替換為“?”之後,該SQL語句轉化為字符串:select * from group_01, group_02 where group_01.id = group_02.id and group_01.id = ?。
可以理解的是,上述字符串即為該資料庫存取語句所屬的語句類型。
步驟340,獲取預先儲存的與該語句類型的資料庫存取語句對應的執行計劃分組。
在一種實現方式中,可以是從伺服器的計劃緩存中獲取上述執行計劃分組。該計劃緩存中可以預先儲存有多個與不同的語句類型對應的執行計劃分組,其中,每個執行計劃分組透過對應的哈希值進行標識,執行計劃分組中的各個執行計劃透過不同的用戶參數相區分。
在一個例子中,計劃緩存的內容可以如表2所示。
表2
當然,在實際應用中,上述計劃緩存也可以不包括語句類型,或者還可以包括其它內容,本說明書對此不作限定。
具體地,在確定資料庫存取語句所屬的語句類型之後。可以根據預設的哈希函數,計算所屬語句類型對應的哈希值。之後根據計算的哈希值,獲取對應的執行計劃分組。
需要說明的是,計劃緩存中的執行計劃分組可以是由伺服器在響應用戶的資料庫存取請求的過程中不斷生成並儲存的。上述執行計劃分組的生成過程也可以稱為計劃空間的探索過程。該計劃空間的探索過程可以如圖4所示。
圖4中,p1和p2分別為參數空間中兩個不同的點,用於表示兩個不同的用戶參數。當伺服器接收到包含有:p1的某語句類型的資料庫存取語句時,可以根據該p1生成相應的執行計劃。該執行計劃的生成過程可以示意為在圖4所示的參數空間中劃分出一塊區域,該劃分出的區域也可以稱為計劃空間。之後,當伺服器接收到包含有p2的該語句類型的資料庫存取語句時,可以計算p2與p1之間的距離Δp(如,可以為歐幾裡得距離)。假設Δp大於閾值距離D,可以根據p2生成相應的執行計劃,即在圖4所示的參數空間中劃分出另一個計劃空間。需要說明的是,當伺服器某次接收到的該語句類型的資料庫存取中包含的用戶參數:pi與p1(或者p2)的距離Δp小於D時,不再生成新的執行計劃。也即與p1(或者p2)共享執行計劃。可以理解的是,隨著用戶參數的增加,整個參數空間將逐漸被劃分出多個不同的計劃空間。當部分計劃空間出現重疊時,即將兩個計劃空間合併為一個。最終,整個參數空間會被完全劃分,計劃空間的探索過程即認為結束。可以理解的是,在計劃空間的探索過程結束之後,生成的多個執行計劃即構成了一個執行計劃分組。
當然,在實際應用中,p1和p2也可以分別為參數空間中兩個不同的數值範圍,本說明書對此不復贅述。
需要說明的是,圖4只是示出了在一維空間下,計劃空間的探索過程。當資料庫存取語句中同時包含多個不同的用戶參數時,如,同時包含n個不同的用戶參數時,該參數空間即構成了n維空間。在n維空間中,計劃空間的探索過程類似。如,可以將n個不同的用戶參數表示為數組:(a1,a2,a3,…,an)。之後在劃分計劃空間時,假設參數空間中已經為某個點(b1,b2,b3,…,bn)劃分了相應的計劃空間,則可以根據如下公式來計算上述數組與該點之間的距離Δp。
之後,可以根據公式2計算的距離Δp與閾值距離之間的大小關係,來確定是否劃分新的計劃空間。其確定方法同上所述,在此不復贅述。
還需要說明的是,圖4只是給出了一組執行計劃分組的生成過程,也即伺服器接收到的資料庫存取語句的語句類型相同。當伺服器接收到多種不同語句類型的資料庫存取語句時,可以為每種語句類型均生成對應的執行計劃分組。從而可以得到多組執行計劃分組,具體可以參見表2所示的內容。
本說明書透過上述計劃空間的探索過程生成執行計劃的方法,可以大大提高執行計劃的質量,從而可以進一步提高用戶對資料庫的存取效率。此外,本說明書針對一類型的資料庫存取語句生成執行計劃分組的方式,可以避免大量的重複計算,從而可以加速執行計劃的生成速度和效率。再者,透過該方式還可以大大減小生成的執行計劃的數量,這可以降低對空間的佔用,從而可以達到節約計算機資源的目的。
步驟350,根據目標用戶參數,從執行計劃分組中選取目標執行計劃。
可選地,為了提高選取的執行計劃的質量,在執行步驟350之前,可以再次判斷物件集合中的各個物件所屬的物件類型分組是否發生了變化。在未發生變化的情況下,才執行步驟350。
上述判斷的過程可以為:對物件集合中的每個物件,判斷該物件與所屬物件類型分組中各個物件的物件模式是否相同。如果物件模式相同,則依次計算該物件與各個物件之間的相似度。舉例來說,假設物件集合為:{ user_01,dept_01},且預先確定的資料庫中的物件與物件類型分組之間的對應關係如表1所示。則可以確定user_01與user_02的物件模式是否相同。如果物件模式相同,可以計算該兩者之間的相似度。此外,還可以確定dept_01與group_02中其它物件的物件模式是否相同。如果物件模式相同,則可以依次計算dept_01與group_02中其它物件之間的相似度。此處,相似度的計算可以參見公式1,在此不復贅述。當各個物件與所屬物件類型分組中任一物件之間的相似度小於預設閾值時,認為各個物件所屬的物件類型分組未發生變化。需要說明的是,當物件模式不相同或者當物件模式相同但與所屬物件類型分組中各個物件之間的相似度均不小於預設閾值時,可以重新確定所屬的物件類型分組。如前述例子,假設user_01與user_02的物件模式不相同,或者假設物件模式相同,但兩者之間的相似度不小於預設閾值,而dept_01與group_02中其它物件的物件模式相同且與組內某個物件之間的相似度小於預設閾值,則可以重新確定user_01所屬的物件類型分組。
可以理解的是,在重新確定某個或者某幾個物件所屬的物件類型分組時,則可以重新執行上述步驟330-步驟340。
需要說明的是,對於步驟350中的執行計劃分組,當如上所述的計劃空間探索完成時,該執行計劃分組中包括了所有的執行計劃。從而根據目標用戶參數,可以選取到對應的目標執行計劃。即計算目標用戶參數與執行計劃分組中的各個執行計劃對應的用戶參數之間的歐幾裡得距離。當與任一執行計劃對應的用戶參數之間的歐幾裡得距離小於閾值距離時,將該任一執行計劃作為目標執行計劃。
當如上所述的計劃空間探索還未完成時,目標執行計劃的選取過程同上所述。不同的是,由於計劃空間還未探索完成,因此可能存在選取不到目標執行計劃的情況。也即可能會存在目標用戶參數與執行計劃分組中已生成的各個執行計劃對應的用戶參數之間的歐幾裡得距離均不小於閾值距離的情況。此時,可以繼續上述計劃空間的探索過程,即在圖4所示的參數空間中劃分出相應的計劃空間,也即根據目標用戶參數,生成新執行計劃。從而執行計劃分組中加入了新執行計劃。
步驟360,執行目標執行計劃。
此處,如果選取到目標執行計劃,則執行該目標執行計劃。如果未選取到目標執行計劃,則執行新執行計劃。
綜上,透過本說明書實施例提供的方案,既可以提高用戶對資料庫存取的準確性,又可以提高存取效率。
圖5為本說明書另一實施例提供的資料庫存取方法流程圖。如圖5所示,該方法可以包括:
步驟510,接收資料庫存取語句。
步驟520,解析資料庫存取語句,確定資料庫存取語句中包含的目標用戶參數。
步驟530,從資料庫存取語句中提取對應的物件集合。
步驟540,對物件集合中的物件,確定該物件所屬的物件類型分組。
步驟550,根據確定的物件類型分組,對資料庫存取語句進行參數化。
步驟560,根據參數化後的資料庫存取語句,確定該資料庫存取語句所屬的語句類型。
步驟570,獲取預先儲存的與該語句類型的資料庫存取語句對應的執行計劃分組。
步驟580,對物件集合中的物件,確定該物件與所屬物件類型分組中各個物件的物件模式是否相同;若否,則執行步驟590;若是,則執行步驟5100。
步驟590,重新確定該物件所屬物件類型分組,並跳轉至步驟550。
步驟5100,依次計算該物件與上述各個物件之間的相似度。
步驟5110,判斷與任一物件之間的相似度是否小於預設閾值。若否,則執行步驟590;若是,則執行步驟5120。
步驟5120,根據目標用戶參數,從執行計劃分組中選取目標執行計劃。
步驟5130,判斷是否選取到目標執行計劃;若是,則執行步驟5140;若否,則執行步驟5150。
步驟5140,執行目標執行計劃。
步驟5150,根據目標用戶參數,生成新執行計劃。
步驟5160,執行新執行計劃,並將新執行計劃加入執行計劃分組。
本說明書上述實施例首先確定資料庫存取語句中物件所屬的物件類型分組,之後再選取或者生成執行計劃的方式,可以聚合物件類型相同的多個物件(如,聚合同一張邏輯表的多張實體分表),由此,可以達到執行計劃共享的目的。
與上述用戶意圖識別方法對應地,本說明書一個實施例還提供的一種用戶意圖識別裝置,如圖6所示,該裝置包括:
接收單元601,用於接收資料庫存取語句。
解析單元602,用於解析接收單元601接收的資料庫存取語句,確定資料庫存取語句中包含的目標用戶參數。
確定單元603,用於確定資料庫存取語句所屬的語句類型。
確定單元603具體可以用於:
對資料庫存取語句進行參數化。
根據參數化後的資料庫存取語句,確定所屬的語句類型。
其中,對資料庫存取語句進行參數化可以包括:
從資料庫存取語句中提取對應的物件集合。
對物件集合中的物件,確定物件所屬的物件類型分組,並獲取對應的分組名稱。
將資料庫存取語句中的物件替換為對應的分組名稱,並將目標用戶參數替換為通配字元。
獲取單元604,用於獲取預先儲存的與確定單元603確定的語句類型的資料庫存取語句對應的執行計劃分組;該執行計劃分組中的各個執行計劃透過不同的用戶參數相區分。
選取單元605,用於根據目標用戶參數,從獲取單元604獲取的執行計劃分組中選取目標執行計劃。
執行單元606,用於執行選取單元605選取的目標執行計劃。
可選地,該裝置還可以包括:分組單元607和建立單元608。
選取單元605,還用於從資料庫中選取物件模式相同的多個物件。
分組單元607,用於對所述選取單元605選取的多個物件進行分組。
執行單元606,還用於重複執行上述選取以及分組的步驟,直至資料庫中的物件均被劃分到對應的分組。
建立單元608,用於將分組單元607得到的多個分組作為多個物件類型分組,並建立資料庫中的各個物件與多個物件類型分組之間的對應關係。
確定單元603還具體可以用於:
根據對應關係,確定物件所屬的物件類型分組。
可選地,選取單元605具體可以用於:
對物件集合中的物件,確定物件與所屬物件類型分組中各個物件的物件模式是否相同。
如果物件模式相同,則依次計算物件與各個物件之間的相似度。
當與任一物件之間的相似度小於預設閾值時,根據目標用戶參數,從執行計劃分組中選取目標執行計劃。
當與各個物件之間的相似度均不小於預設閾值時,重新確定物件所屬的物件類型分組,並根據重新確定的物件類型分組,獲取對應的目標執行計劃。
可選地,該裝置還可以包括:
計算單元609,用於對各個物件類型分組中的每個物件,週期性依次計算該物件與所屬物件類型分組中其它物件之間的相似度。
確定單元603,還用於當與其它物件之間的相似度均不小於預設閾值時,重新確定該物件所屬的物件類型分組。
可選地,選取單元605還具體可以用於:
計算目標用戶參數與執行計劃分組中的各個執行計劃對應的用戶參數之間的歐幾裡得距離。
當與任一執行計劃對應的用戶參數之間的歐幾裡得距離小於閾值距離時,將任一執行計劃作為目標執行計劃。
可選地,該裝置還可以包括:
生成單元,用於根據目標用戶參數,生成新執行計劃。
加入單元,用於將生成單元6010生成的新執行計劃加入執行計劃分組,並執行新執行計劃。
本說明書上述實施例裝置的各功能模組的功能,可以透過上述方法實施例的各步驟來實現,因此,本說明書一個實施例提供的裝置的具體工作過程,在此不復贅述。
本說明書一個實施例提供的資料庫存取裝置,接收單元601接收資料庫存取語句。解析單元602解析資料庫存取語句,確定資料庫存取語句中包含的目標用戶參數。確定單元603確定資料庫存取語句所屬的語句類型。獲取單元604獲取預先儲存的與確定的語句類型的資料庫存取語句對應的執行計劃分組。選取單元605根據目標用戶參數,從執行計劃分組中選取目標執行計劃。執行單元606執行目標執行計劃。由此,既可以提高用戶對資料庫存取的準確性,又可以提高存取效率。
需要說明是,本說明書實施例提供的資料庫存取裝置可以為圖1中伺服器的一個模組或者單元。
本領域技術人員應該可以意識到,在上述一個或多個示例中,本說明書所描述的功能可以用硬體、軟體、韌體或它們的任意組合來實現。當使用軟體實現時,可以將這些功能儲存在計算機可讀媒體中或者作為計算機可讀媒體上的一個或多個指令或代碼進行傳輸。
以上所述的具體實施方式,對本說明書的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本說明書的具體實施方式而已,並不用於限定本說明書的保護範圍,凡在本說明書的技術方案的基礎之上,所做的任何修改、等同替換、改進等,均應包括在本說明書的保護範圍之內。
601:接收單元
602:解析單元
603:確定單元
604:獲取單元
605:選取單元
606:執行單元
607:分組單元
608:建立單元
609:計算單元
6010:生成單元
6011:加入單元
為了更清楚地說明本說明書實施例的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本說明書的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其它的附圖。
圖1為本說明書提供的資料庫存取方法的應用場景示意圖;
圖2為本說明提供的物件類型分組的確定方法流程圖;
圖3為本說明書一個實施例提供的資料庫存取方法流程圖;
圖4為本說明書提供的計劃空間的探索過程示意圖;
圖5為本說明書另一個實施例提供的資料庫存取方法流程圖;
圖6為本說明書一個實施例提供的資料庫存取裝置示意圖。
Claims (14)
- 一種資料庫存取方法,其特徵在於,包括: 接收資料庫存取語句; 解析該資料庫存取語句,確定該資料庫存取語句中包含的目標用戶參數; 確定該資料庫存取語句所屬的語句類型; 獲取預先儲存的與該語句類型的資料庫存取語句對應的執行計劃分組;該執行計劃分組中的各個執行計劃透過不同的用戶參數相區分; 根據該目標用戶參數,從該執行計劃分組中選取目標執行計劃; 執行該目標執行計劃。
- 根據申請專利範圍第1項所述的方法,其中,該確定該資料庫存取語句所屬的語句類型,包括: 對該資料庫存取語句進行參數化; 根據參數化後的資料庫存取語句,確定所屬的語句類型; 其中,所述對該資料庫存取語句進行參數化,包括: 從該資料庫存取語句中提取對應的物件集合; 對該物件集合中的物件,確定該物件所屬的物件類型分組,並獲取對應的分組名稱; 將該資料庫存取語句中的物件替換為對應的分組名稱,並將該目標用戶參數替換為通配字元。
- 根據申請專利範圍第2項所述的方法,其中,還包括確定多個物件類型分組的步驟,包括: 從資料庫中選取物件模式相同的多個物件; 對該多個物件進行分組; 重複執行上述選取以及分組的步驟,直至該資料庫中的物件均被劃分到對應的分組; 將劃分得到的該多個分組作為該多個物件類型分組,並建立該資料庫中的各個物件與該多個物件類型分組之間的對應關係; 所述確定該物件所屬的物件類型分組,包括: 根據該對應關係,確定該物件所屬的物件類型分組。
- 根據申請專利範圍第2或3項所述的方法,其中,所述根據該目標用戶參數,從該執行計劃分組中選取目標執行計劃,包括: 對該物件集合中的物件,確定該物件與所屬物件類型分組中各個物件的物件模式是否相同; 如果物件模式相同,則依次計算該物件與該各個物件之間的相似度; 當與任一物件之間的相似度小於預設閾值時,根據該目標用戶參數,從該執行計劃分組中選取目標執行計劃; 當與該各個物件之間的相似度均不小於預設閾值時,重新確定該物件所屬的物件類型分組,並根據重新確定的物件類型分組,獲取對應的目標執行計劃。
- 根據申請專利範圍第3項所述的方法,其中,還包括: 對各個物件類型分組中的每個物件,週期性依次計算該物件與所屬物件類型分組中其它物件之間的相似度; 當與其它物件之間的相似度均不小於該預設閾值時,重新確定該物件所屬的物件類型分組。
- 根據申請專利範圍第1項所述的方法,其中,該根據該目標用戶參數,從該執行計劃分組中選取目標執行計劃,包括: 計算該目標用戶參數與該執行計劃分組中的各個執行計劃對應的用戶參數之間的歐幾裡得距離; 當與任一執行計劃對應的用戶參數之間的歐幾裡得距離小於閾值距離時,將該任一執行計劃作為該目標執行計劃。
- 根據申請專利範圍第1項所述的方法,其中,當未選取到該目標執行計劃時,還包括: 根據該目標用戶參數,生成新執行計劃; 將該新執行計劃加入該執行計劃分組,並執行該新執行計劃。
- 一種資料庫存取裝置,其特徵在於,包括: 接收單元,用於接收資料庫存取語句; 解析單元,用於解析該接收單元接收的該資料庫存取語句,確定該資料庫存取語句中包含的目標用戶參數; 確定單元,用於確定該資料庫存取語句所屬的語句類型; 獲取單元,用於獲取預先儲存的與該確定單元確定的該語句類型的資料庫存取語句對應的執行計劃分組;該執行計劃分組中的各個執行計劃透過不同的用戶參數相區分; 選取單元,用於根據該目標用戶參數,從該獲取單元獲取的該執行計劃分組中選取目標執行計劃; 執行單元,用於執行該選取單元選取的該目標執行計劃。
- 根據申請專利範圍第8項所述的裝置,其中,該確定單元具體用於: 對該資料庫存取語句進行參數化; 根據參數化後的資料庫存取語句,確定所屬的語句類型; 其中,所述對該資料庫存取語句進行參數化,包括: 從該資料庫存取語句中提取對應的物件集合; 對該物件集合中的物件,確定該物件所屬的物件類型分組,並獲取對應的分組名稱; 將該資料庫存取語句中的物件替換為對應的分組名稱,並將該目標用戶參數替換為通配字元。
- 根據申請專利範圍第9項所述的裝置,其中,還包括:分組單元和建立單元; 該選取單元,還用於從資料庫中選取物件模式相同的多個物件; 該分組單元,用於對該選取單元選取的該多個物件進行分組; 該執行單元,還用於重複執行上述選取以及分組的步驟,直至該資料庫中的物件均被劃分到對應的分組; 該建立單元,用於將該分組單元得到的該多個分組作為該多個物件類型分組,並建立該資料庫中的各個物件與該多個物件類型分組之間的對應關係; 該確定單元還具體用於: 根據該對應關係,確定該物件所屬的物件類型分組。
- 根據申請專利範圍第8或9項所述的裝置,其中,該選取單元具體用於: 對該物件集合中的物件,確定該物件與所屬物件類型分組中各個物件的物件模式是否相同; 如果物件模式相同,則依次計算該物件與該各個物件之間的相似度; 當與任一物件之間的相似度小於預設閾值時,根據該目標用戶參數,從該執行計劃分組中選取目標執行計劃; 當與該各個物件之間的相似度均不小於預設閾值時,重新確定該物件所屬的物件類型分組,並根據重新確定的物件類型分組,獲取對應的目標執行計劃。
- 根據申請專利範圍第10項所述的裝置,其中,還包括: 計算單元,用於對各個物件類型分組中的每個物件,週期性依次計算該物件與所屬物件類型分組中其它物件之間的相似度; 該確定單元,還用於當與其它物件之間的相似度均不小於該預設閾值時,重新確定該物件所屬的物件類型分組。
- 根據申請專利範圍第8項所述的裝置,其中,該選取單元還具體用於: 計算該目標用戶參數與該執行計劃分組中的各個執行計劃對應的用戶參數之間的歐幾裡得距離; 當與任一執行計劃對應的用戶參數之間的歐幾裡得距離小於閾值距離時,將該任一執行計劃作為該目標執行計劃。
- 根據申請專利範圍第8項所述的裝置,其中,還包括: 生成單元,用於根據該目標用戶參數,生成新執行計劃; 加入單元,用於將該生成單元生成的該新執行計劃加入該執行計劃分組,並執行該新執行計劃。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810551049.4 | 2018-05-31 | ||
CN201810551049.4A CN108763536B (zh) | 2018-05-31 | 2018-05-31 | 数据库访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202004527A TW202004527A (zh) | 2020-01-16 |
TWI686707B true TWI686707B (zh) | 2020-03-01 |
Family
ID=64001217
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108106470A TWI686707B (zh) | 2018-05-31 | 2019-02-26 | 資料庫存取方法及裝置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11080278B2 (zh) |
EP (2) | EP3716098B8 (zh) |
CN (1) | CN108763536B (zh) |
SG (1) | SG11202005963RA (zh) |
TW (1) | TWI686707B (zh) |
WO (1) | WO2019228002A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763536B (zh) | 2018-05-31 | 2020-04-14 | 阿里巴巴集团控股有限公司 | 数据库访问方法及装置 |
CN111221840B (zh) * | 2018-11-23 | 2023-05-30 | 阿里云计算有限公司 | 数据处理方法及装置、数据缓存方法、存储介质、系统 |
CN111506553B (zh) * | 2019-01-31 | 2023-07-04 | 阿里巴巴集团控股有限公司 | 数据库的功能设定方法及装置 |
CN112866348B (zh) * | 2020-12-31 | 2022-11-11 | 金蝶软件(中国)有限公司 | 数据库访问方法、装置、计算机设备和存储介质 |
US20230229660A1 (en) * | 2022-01-18 | 2023-07-20 | Sap Se | Efficient database structured query language execution from application layer |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200919235A (en) * | 2007-10-26 | 2009-05-01 | Inventec Corp | Method for generating data-sheets in the database |
TW201327235A (zh) * | 2011-12-31 | 2013-07-01 | Digiwin Software Co Ltd | 資料庫存取方法以及系統 |
TW201445267A (zh) * | 2013-05-17 | 2014-12-01 | Mitsubishi Electric Corp | 可程式控制器及其周邊裝置、以及可程式控制器之表格資料存取程式 |
TW201621715A (zh) * | 2014-12-15 | 2016-06-16 | 國立清華大學 | 資料庫轉換的同步系統及其方法 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6985904B1 (en) * | 2002-02-28 | 2006-01-10 | Oracle International Corporation | Systems and methods for sharing of execution plans for similar database statements |
US7689585B2 (en) * | 2004-04-15 | 2010-03-30 | Microsoft Corporation | Reinforced clustering of multi-type data objects for search term suggestion |
US7353219B2 (en) * | 2004-05-28 | 2008-04-01 | International Business Machines Corporation | Determining validity ranges of query plans based on suboptimality |
EP1755006A1 (en) * | 2005-08-18 | 2007-02-21 | Ricoh Company, Ltd. | Data transmission between sheet post-processing modules |
US7383247B2 (en) * | 2005-08-29 | 2008-06-03 | International Business Machines Corporation | Query routing of federated information systems for fast response time, load balance, availability, and reliability |
US20080195577A1 (en) * | 2007-02-09 | 2008-08-14 | Wei Fan | Automatically and adaptively determining execution plans for queries with parameter markers |
US8600977B2 (en) * | 2007-10-17 | 2013-12-03 | Oracle International Corporation | Automatic recognition and capture of SQL execution plans |
US20100082507A1 (en) * | 2008-09-30 | 2010-04-01 | Archana Sulochana Ganapathi | Predicting Performance Of Executing A Query In Isolation In A Database |
US8818991B2 (en) * | 2009-12-23 | 2014-08-26 | Pivotal Software, Inc. | Apparatus and method for analyzing query optimizer performance |
US8862563B2 (en) * | 2010-05-12 | 2014-10-14 | Microsoft Corporation | Getting dependency metadata using statement execution plans |
US8688689B2 (en) * | 2010-06-30 | 2014-04-01 | Oracle International Corporation | Techniques for recommending alternative SQL execution plans |
US8589382B2 (en) * | 2011-12-29 | 2013-11-19 | International Business Machines Corporation | Multi-fact query processing in data processing system |
US8996504B2 (en) * | 2012-05-24 | 2015-03-31 | Sybase, Inc. | Plan caching using density-based clustering |
US8924373B2 (en) * | 2012-08-09 | 2014-12-30 | International Business Machines Corporation | Query plans with parameter markers in place of object identifiers |
US9727609B2 (en) * | 2012-09-28 | 2017-08-08 | Oracle International Corporation | Triggering hard parses |
US9110949B2 (en) * | 2013-02-11 | 2015-08-18 | Oracle International Corporation | Generating estimates for query optimization |
US9229968B2 (en) * | 2013-03-11 | 2016-01-05 | Intenational Business Machines Corporation | Management of searches in a database system |
US10628417B2 (en) * | 2013-12-01 | 2020-04-21 | Paraccel Llc | Physical planning of database queries using partial solutions |
US10467228B2 (en) * | 2015-08-11 | 2019-11-05 | Sybase, Inc. | Accelerating database queries using equivalence union enumeration |
CN105224690B (zh) * | 2015-10-30 | 2019-06-18 | 上海达梦数据库有限公司 | 生成并选择对应含参语句的执行计划的方法及系统 |
CN105718593B (zh) * | 2016-01-28 | 2019-04-16 | 长春师范大学 | 一种数据库查询优化方法及系统 |
JP6669571B2 (ja) * | 2016-04-19 | 2020-03-18 | 株式会社シスバンク | リレーショナルデータベースのチューニング装置及び方法 |
CN106897343B (zh) * | 2016-07-20 | 2020-08-07 | 阿里巴巴集团控股有限公司 | 执行计划的查找方法、存储方法及装置 |
CN106407246B (zh) * | 2016-07-22 | 2020-12-04 | 平安科技(深圳)有限公司 | Sql执行计划管理的方法及装置 |
CN107798017B (zh) * | 2016-09-07 | 2023-06-09 | 金篆信科有限责任公司 | 分布式数据库中的执行计划信息生成方法和系统 |
US20180113904A1 (en) * | 2016-10-20 | 2018-04-26 | International Business Machines Corporation | Extreme Value Estimation for Query Optimization in Analytical Databases |
US10599649B2 (en) * | 2016-12-20 | 2020-03-24 | Microsoft Technology Licensing, Llc | Real time query planner statistics with time based changing |
CN107451203B (zh) * | 2017-07-07 | 2020-09-01 | 阿里巴巴集团控股有限公司 | 数据库访问方法及装置 |
CN108763536B (zh) | 2018-05-31 | 2020-04-14 | 阿里巴巴集团控股有限公司 | 数据库访问方法及装置 |
-
2018
- 2018-05-31 CN CN201810551049.4A patent/CN108763536B/zh active Active
-
2019
- 2019-02-26 TW TW108106470A patent/TWI686707B/zh active
- 2019-03-05 WO PCT/CN2019/076971 patent/WO2019228002A1/zh unknown
- 2019-03-05 SG SG11202005963RA patent/SG11202005963RA/en unknown
- 2019-03-05 EP EP19812032.1A patent/EP3716098B8/en active Active
- 2019-03-05 EP EP21185187.8A patent/EP3929763B1/en active Active
-
2020
- 2020-05-29 US US16/888,526 patent/US11080278B2/en active Active
-
2021
- 2021-08-02 US US17/391,882 patent/US11243950B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200919235A (en) * | 2007-10-26 | 2009-05-01 | Inventec Corp | Method for generating data-sheets in the database |
TW201327235A (zh) * | 2011-12-31 | 2013-07-01 | Digiwin Software Co Ltd | 資料庫存取方法以及系統 |
TW201445267A (zh) * | 2013-05-17 | 2014-12-01 | Mitsubishi Electric Corp | 可程式控制器及其周邊裝置、以及可程式控制器之表格資料存取程式 |
TW201621715A (zh) * | 2014-12-15 | 2016-06-16 | 國立清華大學 | 資料庫轉換的同步系統及其方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200293533A1 (en) | 2020-09-17 |
SG11202005963RA (en) | 2020-07-29 |
EP3929763A1 (en) | 2021-12-29 |
TW202004527A (zh) | 2020-01-16 |
EP3929763B1 (en) | 2024-01-17 |
EP3716098A1 (en) | 2020-09-30 |
US11243950B2 (en) | 2022-02-08 |
CN108763536B (zh) | 2020-04-14 |
US20210365454A1 (en) | 2021-11-25 |
EP3716098A4 (en) | 2020-11-11 |
US11080278B2 (en) | 2021-08-03 |
EP3716098B8 (en) | 2021-10-13 |
CN108763536A (zh) | 2018-11-06 |
EP3716098B1 (en) | 2021-09-08 |
WO2019228002A1 (zh) | 2019-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI686707B (zh) | 資料庫存取方法及裝置 | |
US10133778B2 (en) | Query optimization using join cardinality | |
US10769142B2 (en) | Graph processing in database | |
US9798772B2 (en) | Using persistent data samples and query-time statistics for query optimization | |
EP3267330A1 (en) | Query rewriting in a relational data harmonization framework | |
US8825621B2 (en) | Transformation of complex data source result sets to normalized sets for manipulation and presentation | |
US11113275B2 (en) | Verifying text summaries of relational data sets | |
CN113874832B (zh) | 使用具有规范形式的逻辑查询步骤进行查询处理 | |
CN114756569B (zh) | 结构化查询语句的多层解析方法、计算机设备及存储介质 | |
US11379485B2 (en) | Inferred predicates for query optimization | |
US11256694B2 (en) | Tolerance level-based tuning of query processing | |
US20170031909A1 (en) | Locality-sensitive hashing for algebraic expressions | |
US11423027B2 (en) | Text search of database with one-pass indexing | |
US10977284B2 (en) | Text search of database with one-pass indexing including filtering | |
US20170147707A1 (en) | Apparatus and method for managing graph data | |
CN117390064B (zh) | 一种基于可嵌入子图的数据库查询优化方法 | |
US11544264B2 (en) | Determining query join orders | |
CN118051524A (zh) | 数据库索引优化方法、装置、设备、介质和产品 | |
CN118643007A (zh) | 接口文档的解析方法、设备及存储介质 | |
CN114943004A (zh) | 属性图查询方法、属性图查询装置以及存储介质 | |
CN114996276A (zh) | Olap预计算模型建模方法、数据查询方法、装置及存储介质 | |
CN117472940A (zh) | 数据血缘关系构建方法和装置、电子设备及存储介质 |