TW201828164A - 資料庫操作方法及裝置 - Google Patents
資料庫操作方法及裝置 Download PDFInfo
- Publication number
- TW201828164A TW201828164A TW106101941A TW106101941A TW201828164A TW 201828164 A TW201828164 A TW 201828164A TW 106101941 A TW106101941 A TW 106101941A TW 106101941 A TW106101941 A TW 106101941A TW 201828164 A TW201828164 A TW 201828164A
- Authority
- TW
- Taiwan
- Prior art keywords
- database
- operation instruction
- instruction
- database operation
- execution
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 230000008569 process Effects 0.000 claims abstract description 27
- 238000002955 isolation Methods 0.000 claims description 22
- 230000004048 modification Effects 0.000 claims description 10
- 238000012986 modification Methods 0.000 claims description 10
- 238000011084 recovery Methods 0.000 claims description 8
- 230000009286 beneficial effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 230000009467 reduction Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本發明提供一種資料庫操作方法及裝置。方法包括:在應用伺服器執行目標事務的過程中,依次獲取應用伺服器執行到的目標事務中的資料庫操作指令;對資料庫操作指令進行預測執行,將預測執行結果返回給應用伺服器以供應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄資料庫操作指令以及在資料庫操作指令屬於修改資料庫類指令時記錄預測執行產生的預測執行資料;當獲取到目標事務中的事務提交指令時,根據本地記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標事務。本發明可以提高事務執行效率。
Description
本發明關於資料庫技術領域,尤其關於一種資料庫操作方法及裝置。
資料庫事務(Database Transaction),是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。一個事務由一系列資料庫操作指令構成,例如結構化查詢語言(Structured Query Language,SQL)語句,這些資料庫操作指令之間存在切分條件以及跳轉等邏輯,意味著在一次執行過程中該事務中可能有部分資料庫操作指令被跳過不執行。但在現有技術中,由於無法預先獲知事務中需要執行的資料庫操作指令,因此只能按照執行邏輯邊執行邊判斷,依次執行事務中的語句,以實現對資料庫的操作。這種事務執行方式效率較低,尤其是在事務設置讀已提交隔離級別的情況下,其執行效率會更低,事務輸送量較低。
本發明的多個方面提供一種資料庫操作方法及裝置,用以提高事務執行效率並增大事務輸送量。
本發明的一方面,提供一種資料庫操作方法,包括:在應用伺服器執行目標事務的過程中,依次獲取所述應用伺服器執行到的所述目標事務中的資料庫操作指令;對所述資料庫操作指令進行預測執行,將預測執行結果返回給所述應用伺服器以供所述應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄所述資料庫操作指令以及在所述資料庫操作指令屬於修改資料庫類指令時記錄所述預測執行產生的預測執行資料;當獲取到所述目標事務中的事務提交指令時,根據本地記錄的所述資料庫操作指令以及所述預測執行資料,控制所述應用伺服器對應的資料庫實際執行所述目標事務。
本發明的另一方面,提供一種資料庫操作裝置,包括:獲取模組,用於在應用伺服器執行目標事務的過程中,依次獲取所述應用伺服器執行到的所述目標事務中的資料庫操作指令;預測執行模組,用於對所述資料庫操作指令進行預測執行,將預測執行結果返回給所述應用伺服器以供所述應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄所述資料庫操作指令以及在所述資料庫操作指令屬於修改資料庫類指令時記錄所述預測執行產生的預測執行資料; 控制執行模組,用於當獲取到所述目標事務中的事務提交指令時,根據本地記錄的所述資料庫操作指令以及所述預測執行資料,控制所述應用伺服器對應的資料庫實際執行所述目標事務。
在本發明中,資料庫操作裝置與應用伺服器相互配合,在應用伺服器執行目標事務的過程加入預測執行過程,預先獲得並記錄目標事務需要執行的全部資料庫操作指令,並僅針對屬於修改資料庫類指令的資料庫操作指令記錄預測執行產生的預測執行資料以適應於讀已提交隔離級別,為真實執行事務提供了條件,之後根據記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行該目標事務,有利於提高執行效率,進而增大事務輸送量。
10‧‧‧應用伺服器
20‧‧‧資料庫
30‧‧‧資料庫操作裝置
301、302、303‧‧‧方法步驟
41‧‧‧獲取模組
42‧‧‧預測執行模組
43‧‧‧控制執行模組
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為現有技術中資料庫應用系統的部署圖;圖2為本發明一實施例提供的資料庫應用系統的部署圖;圖3為本發明一實施例提供的資料庫操作方法的流程 示意圖;圖4為本發明一實施例提供的資料庫操作裝置的結構示意圖。
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
圖1為現有技術中資料庫應用系統的部署圖。如圖1所示,該系統包括:應用伺服器10和資料庫20。其中,資料庫20可以為一個,也可以為多個。圖1中僅示例性的示出一個資料庫20。當需要以事務方式對資料庫20進行訪問時,應用伺服器10執行事務邏輯,依次將事務中的資料庫操作指令作用於資料庫20上。由於無法預先獲知事務中需要執行的資料庫操作指令,導致事務執行效率較低,尤其是在配置讀已提交隔離級別的情況下,其執行效率會更低,事務輸送量較低。
針對現有技術存在的缺陷,本發明提供一種新的資料庫應用系統,如圖2所示。該系統在應用伺服器10和資料庫20之間增加資料庫操作裝置30。資料庫操作裝置30 用以執行本發明提供的資料庫操作方法,在讀已提交這一隔離級別下實現一種新的事務執行邏輯,即先對事務進行預測執行,提前獲得該事務中需要執行的資料庫操作指令,實現執行路徑的預測,並且結合讀已提交這一隔離級別僅僅針對屬於修改資料庫類指令的資料庫操作指令記錄對其進行預測執行所產生的預測執行資料,進而基於預測執行得到的資料庫操作指令以及預測執行資料在資料庫20上實際執行事務,有利於提高事務執行效率,增大事務輸送量。事務輸送量是指單位時間內處理事務的數量。
值得說明的是,資料庫操作裝置30實際上是一種邏輯處理裝置,其可以單獨部署,位於應用伺服器10和資料庫20之間,也可以部署於應用伺服器10一端實現,或者也可以部署於資料庫20一端實現。
下面實施例將具體說明本發明技術方案的方法流程。
圖3為本發明一實施例提供的資料庫操作方法的流程示意圖。如圖3所示,該方法包括:
301、在應用伺服器執行目標事務的過程中,依次獲取應用伺服器執行到的目標事務中的資料庫操作指令。
302、對資料庫操作指令進行預測執行,將預測執行結果返回給應用伺服器以供應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄資料庫操作指令以及在資料庫操作指令屬於修改資料庫類指令時記錄預測執行產生的預測執行資料。
303、當獲取到目標事務中的事務提交指令時,根據 本地記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標事務。
首先說明,為便於描述,本實施例將應用伺服器需要執行的事務稱為目標事務。目標事務主要包括用於對資料庫進行操作的操作指令,除資料庫操作指令之外還包括一些用於控制目標事務執行狀態的控制指令,例如事務開始指令、事務提交指令、交易復原指令等。這些指令實際上是由資料庫語言編寫的語句。根據資料庫語言的不同,這些指令可以是不同語言編寫的語句。舉例說明,若採用SQL,則上述資料庫操作指令和控制指令實際上是一系列的SQL語句。
本實施例提供的方法適用於對隔離級別為讀已提交的資料庫進行操作。其中,有些資料庫預設是讀已提交這一隔離級別,例如,Oracle資料庫預設是讀已提交這一隔離級別的,有些資料庫預設不是讀已提交這一隔離級別,例如MySQL資料庫預設是可重複讀這一隔離級別。基於此,在執行本實施例提供的方法之前,可以確定資料庫的隔離級別是否是讀已提交,若不是,則需要預先配置資料庫為讀已提交這一隔離級別。例如,可以在應用伺服器執行目標事務之前,配置資料庫為讀已提交這一隔離級別。
在資料庫的隔離級別為讀已提交的前提下,可以執行本實施例提供的方法以在資料庫中執行目標事務。具體流程如下:應用伺服器控制整個目標事務的執行邏輯,可以按照 現有方式執行目標事務。資料庫操作裝置在應用伺服器執行目標事務的過程中,依次獲取應用伺服器執行到的目標事務中的資料庫操作指令。
在一可選實施方式中,應用伺服器按照現有方式向資料庫發送資料庫操作指令,以實現對資料庫的訪問。資料庫操作裝置可以對應用伺服器與資料庫之間的通信進行監控,以攔截應用伺服器發往資料庫的資料庫操作指令。
在另一可選實施方式中,對應用伺服器的處理邏輯進行稍微修改,將原來向資料庫發送資料庫操作指令的處理邏輯改為向資料庫操作裝置發送。基於此,資料庫操作裝置可以接收應用伺服器主動下發的資料庫操作指令。
在此說明,若目標事務是顯式事務,則目標事務中的首個指令是事務開始指令,如開始事務(begin transaction),基於此,資料庫操作裝置在獲取應用伺服器執行到的資料庫操作指令之前,可以攔截應用伺服器發往資料庫的目標事務中的事務開始指令,根據該事務開始指令,獲知需要執行目標事務。或者,資料庫操作裝置在獲取應用伺服器執行到的資料庫操作指令之前,可以接收應用伺服器主動下發的目標事務中的事務開始指令,根據該事務開始指令,獲知需要執行目標事務。若目標事務是隱式事務,則目標事務的首個指令就是資料庫操作指令,不包括獲取事務開始指令的步驟。
資料庫操作裝置在獲取應用伺服器執行到的資料庫操作指令後,對獲取到的資料庫操作指令進行預測執行,將 預測執行結果返回給應用伺服器,以供應用伺服器確定下一個需要執行的資料庫操作指令。其中,預測執行結果決定著目標事務的執行路徑,這裡的執行路徑是指資料庫操作指令之間的跳轉邏輯。透過將預測執行結果返回給應用伺服器,從而達到由應用伺服器控制整個目標事務的執行邏輯的目的。
另外,資料庫操作裝置還需要在本地記錄所獲取到的資料庫操作指令,以及在該資料庫操作指令屬於修改資料庫類指令時記錄對該資料庫操作指令進行預測執行產生的預測執行資料。所述修改資料庫類指令是指對資料庫有修改的資料庫操作指令,例如以update、insert等開頭的指令;一般以select開頭的指令不屬於修改資料庫類指令。所述預測執行資料主要是指對資料庫操作指令進行預測執行過程中的一些資料。
例如,資料庫操作裝置可以在本地建立記憶體庫,將所獲取到的資料庫操作指令以及預測執行資料存入記憶體庫中。進一步,若預測執行資料不包括預測執行結果,則也可以將預測執行結果存入記憶體庫中。
從本質而言,讀已提交隔離級別只保證寫入多個資料是原子的,不在讀取的時候加鎖,這樣可以提升系統的併發度,提高事務執行效率。為了在預測執行這一核心思想的基礎上實現對讀已提交這一隔離級別的模擬,本實施例僅僅針對屬於修改資料庫類指令的資料庫操作指令,記錄其預測執行產生的預測執行資料,卻不記錄不屬於修改資 料庫類指令的資料庫操作指令對應的預測執行資料。由此可見,在實現讀已提交這一隔離級別的情況下,所記錄的資料量相對較少,這樣在後續基於本地記錄的資料庫操作指令和預測執行資料在資料庫中真實執行目標事務的過程中,所需處理的資料量相對較少,有利於進一步提高執行效率和性能,增大事務輸送量。
其中,資料庫操作指令對資料庫的操作主要是訪問資料庫中的資料,則可以類比資料庫操作指令的資料環境,基於所類比的資料環境對資料庫操作指令進行預測執行。進一步,考慮到不屬於修改資料庫類指令的資料庫操作指令不會引起資料庫的變化,因此可以直接在資料庫中對該資料庫操作指令進行預測執行,這樣可以節約類比資料環境的操作,實現相對簡單,有利於節約資源,提高執行效率。但是,對於屬於修改資料庫類指令的資料庫操作指令,由於其會引起資料庫的變化(主要是指資料庫中的資料被改變),因此需要類比資料環境,在所類比的資料環境中進行預測執行。
基於上述分析,一種對資料庫操作指令進行預測執行的方式可以是:對獲取到的資料庫操作指令的類別進行識別;若資料庫操作指令屬於修改資料庫類指令,則在本地建立的記憶體庫中類比資料庫操作指令的資料環境,基於所類比的資料環境對資料庫操作指令進行預測執行;若資料庫操作指令不屬於修改資料庫類指令,在資料 庫中執行該資料庫操作指令,以對該資料庫操作指令進行預測執行。
進一步,一種在本地建立的記憶體庫中類比資料庫操作指令的資料環境,基於所類比的資料環境對資料庫操作指令進行預測執行的實施方式包括:將獲取到的資料庫操作指令拆分為一個讀指令和一個寫指令,將讀指令運行於真正的資料庫上,即在資料庫中執行該讀指令以獲取讀資料集(ReadSet),將讀資料集存入本地記憶體庫中,以類比資料庫操作指令所需的資料環境。然後,將寫指令作用於記憶體庫上,以實現對資料庫操作指令的預測執行,即在記憶體庫中執行寫指令以修改讀資料集,例如對讀資料集中的有關資料進行更新或查詢處理等。其中,執行寫指令以修改讀資料集可以產生結果資料集(affectRowInMemdb),該結果資料集包括預測執行結果。
在上述預測執行過程中,若資料庫操作指令屬於修改資料庫類指令,則資料庫操作裝置可以在本地記錄讀指令所讀取的讀資料集以及執行寫指令產生的結果資料集。由此可見,所述預測執行資料可以包括讀資料集和結果資料集,或者也可以包括讀資料集和結果資料集中的部分資料,例如能夠對在資料庫中實際執行目標事務產生有益效果的一些資料,例如一些數值的各種索引,例如一級索引、二級索引、主鍵值等。
當資料庫操作裝置獲取到目標事務中的事務提交指令 (即應用伺服器執行到事務提交指令)時,則可以根據本地記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標事務。
上述根據本地記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標事務的一種可選實施方式包括:資料庫操作裝置向資料庫下發本地記錄的所述資料庫操作指令,以指示資料庫執行資料庫操作指令,並接收資料庫返回的資料庫操作指令的實際執行結果;然後,將資料庫操作指令的實際執行結果與預測執行結果進行比較,若實際執行結果與預測執行結果相同,向資料庫下發事務提交指令,以供資料庫提交該目標事務;若實際執行結果與預測執行結果不相同,向資料庫下發交易復原指令,以供資料庫回滾該目標事務。
在上述實施方式中,考慮到事務的原子性,透過將實際執行結果與預測執行結果進行比較,可以避免事務執行過程出錯,有利於提高事務執行的成功機率。
進一步,在現有技術中,由於無法預先知道事務需要執行的全部資料庫操作指令,所以只能按照事務的執行邏輯依次執行資料庫操作指令,這會導致應用伺服器與資料庫之間的頻繁交互,這在遠端應用場景中將會消耗大量網路資源。但在本實施例中,透過預測執行過程已經預先獲得目標事務需要執行的全部資料庫操作指令,即本地記錄的資料庫操作指令,因此在向資料庫下發本地記錄的資料 庫操作指令,以指示資料庫執行資料庫操作指令的過程中,可以將本地記錄的資料庫操作指令同時(或者一併)下發到資料庫,有利於節約網路資源。另外,對於一些並行的資料庫操作指令,資料庫還可以平行作業,有利於進一步提高事務執行效率,增大事務輸送量。
進一步,還可以將本地記錄的所有資料庫操作指令連同本地記錄的預測執行資料一併下發給資料庫。
進一步,在一種根據本地記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標事務的可選實施方式中,資料庫操作裝置可以根據本地記錄的資料庫操作指令,判斷目標事務是否為單機事務;若判斷結果為是,則根據本地記錄的資料庫操作指令以及預測執行資料,以單機交易處理邏輯控制資料庫實際執行目標事務;若判斷結果為否,則根據本地記錄的資料庫操作指令以及預測執行資料,以分散式交易處理邏輯控制資料庫實際執行目標事務。
其中,基於預測執行過程中獲得的資料庫操作指令可以識別出目標事務是單機事務還是分散式事務。例如,可以判斷本地記錄的資料庫操作指令的操作物件是否作用於同一物理設備上,若判斷結果為是,則可以確定該目標事務為單機事務;若判斷結果為否,則可以確定該目標事務為分散式事務。
由於分散式事務的處理邏輯和單機事務的處理邏輯有所不同,單機事務的處理邏輯相對簡單,例如不關於讀寫 加鎖等問題,所以所消耗的資源也相對較少。基於此,本實施例透過識別目標事務是否為單機事務,在識別為單機事務時採用單機事務的處理邏輯進行處理,而不是像現有技術那樣統一採用分散式交易處理邏輯進行處理,有利於提高處理效率,節約處理成本。
在一可選實施方式中,若資料庫操作裝置獲取到目標事務中的交易復原指令(即應用伺服器執行到交易復原指令)時,可以刪除本地記錄的資料庫操作指令以及預測執行資料,例如可以直接清空本地記憶體庫,實現回滾操作。在該情況下,由於目標事務並未在資料庫中真正執行,所以資料庫無需執行回滾操作,可見,在交易復原這種情況下,採用本實施例方法也可以提高事務執行效率。
由上述可見,在本實施例提供的方法中,資料庫操作裝置與應用伺服器相互配合,在應用伺服器執行目標事務的過程加入預測執行過程,在預測執行過程中,可以提前獲得目標事務的執行路徑,即真正需要執行的資料庫操作指令,並僅針對屬於修改資料庫類指令的資料庫操作指令記錄預測執行產生的預測執行資料以適應於讀已提交隔離級別,為真實執行事務提供了條件,之後在根據記錄的資料庫操作指令以及預測執行資料實際執行該目標事務時,例如基於預測執行資料可以提前獲取有關資料資訊並且可以減少指令之間的跳轉等,因此可以提高執行效率,增大事務輸送量。
下面以減庫存事務為例,詳細說明本發明技術方案的 工作流程。其中,資料庫的隔離級別為讀已提交這一隔離級別。
減庫存事務的SQL代碼如下,括弧內的文字為注釋:
在實際執行過程中,應用伺服器負責該減庫存事務的整個邏輯,資料庫操作裝置(或者也可稱為執行伺服器)只會獲取應用伺服器執行到的開始事務,需要執行的SQL語句,以及提交/回滾指令。
首先,開始事務後,資料庫操作裝置在本地建立記憶體庫;當資料庫操作裝置獲取到select * from inventory where itemId=?for update這條SQL語句時,識別出這條SQL語句不會修改資料庫,因此將這條SQL語句直接作用在實際資料庫中,即在資料庫中執行該條SQL語句以獲得查詢結果,即讀資料集,將全部查詢結果返回給應 用伺服器,以供應用伺服器確定下一個需要執行的SQL語句,並在本地記憶體庫中記錄這條SQL語句。由於是讀已隔離級別,故不需要記錄任何與執行該條SQL語句有關的資料。
應用伺服器收到資料庫操作裝置返回的查詢結果後,判斷查詢結果中目前庫存量是否大於0,若判斷結果為是,則將目前庫存量減少,並執行更新語句,即update inventory set item.inventory=$item.inventory where itemId=?;若判斷結果為否,則執行rollback語句。
第一種情況,假設應用伺服器執行了rollback語句,則資料庫操作裝置會獲取到rollback語句。一旦資料庫儲存裝置獲取到rollback語句,則清空本地記憶體庫,主要是指清空之前記錄的select * from inventory where itemId=?for update這條SQL語句。在這種情況下,因為事務並沒有在資料庫中執行,所以無需資料庫執行回滾操作。
第二種情況,假設應用伺服器執行了update inventory set item.inventory=$item.inventory where itemId=?這條語句,則資料庫操作裝置會獲取到update inventory set item.inventory=$item.inventory where itemId=?這條語句。則資料庫操作裝置獲取到update inventory set item.inventory=?where itemId=?這條SQL語句時,識別出該SQL語句會修改資料庫,於是將這條SQL語句拆解為一個讀指令,即select * from inventory where itemId=?和一個寫指令,即update inventory set item.inventory=?where itemId=?;接著,將select * from inventory where itemId=?這個語句下發到資料庫中,獲得讀資料集,將讀資料集中的資料寫入本地記憶體庫中;其中,讀資料集中包括主鍵列表(itemId)和該主鍵對應的版本號資訊(version)。然後,根據update inventory set item.inventory=?where itemId=?這個語句在本地記憶體庫中進行更新操作,以獲得結果資料集,並將結果資料集返回給應用伺服器。該結果資料集可以是類似修改了幾條記錄這樣的修改記錄資訊,例如,affectRow=1表示修改了一條記錄;或者,結果資料集也可以是記錄修改詳細資訊的修改詳情資訊。其中,結果資料集和讀資料集構成預測執行資料。
應用伺服器此時執行commit指令。
當資料庫操作裝置獲取到commit指令後,基於本地記憶體庫中的SQL語句以及預測執行資料,在資料庫中執行該減庫存事務,這次事務執行過程是真實執行的。例如,本地記錄的SQL語句以及預測執行資料如下所示:
較佳的,資料庫操作裝置可以一次性將本地記憶體庫中的SQL語句全部提交到資料庫中,資料庫基於此進行 執行,有利於節約傳輸SQL語句所消耗的網路資源。
這次真實執行也會返回執行結果,可以將預測執行結果與實際執行結果進行比較,例如可以先比較兩個結果中的itemId和version,然後再比較兩個結果中的affectRow;如果比較結果為相同,則可以在資料庫中提交這次事務,而如果比較結果為不相同,則認為提交是失敗的,由於在這種情況下,事務本身其實一直都沒有真正的在資料庫中執行提交,所以可以簡單地回滾整個請求,讓應用服務器重新提交即可。
其中,經過上述預測執行,已經獲得了所有的需要執行的SQL語句,以及相應的預測執行資料,例如全部切分條件,數值的索引等,而這些資料足以讓我們提前對事務是否是單機事務做出判斷。基於此,可以採用相應的交易處理邏輯進行處理,有利於節約資源。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發明並不受所描述的動作順序的限制,因為依據本發明,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於較佳實施例,所關於的動作和模組並不一定是本發明所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
圖4為本發明一實施例提供的資料庫操作裝置的結構示意圖。如圖4所示,該裝置包括:獲取模組41、預測執行模組42和控制執行模組43。
獲取模組41,用於在應用伺服器執行目標事務的過程中,依次獲取應用伺服器執行到的目標事務中的資料庫操作指令。
預測執行模組42,用於對資料庫操作指令進行預測執行,將預測執行結果返回給應用伺服器以供應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄資料庫操作指令以及在資料庫操作指令屬於修改資料庫類指令時記錄預測執行產生的預測執行資料。
控制執行模組43,用於當獲取到目標事務中的事務提交指令時,根據本地記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標事務。
在一可選實施方式中,該資料庫操作裝置還包括:配置模組,用於在應用伺服器執行目標事務之前,配置資料庫為讀已提交隔離級別。
在一可選實施方式中,獲取模組41具體可用於:攔截應用伺服器發往資料庫的資料庫操作指令;或者,接收應用伺服器主動下發的資料庫操作指令。
在一可選實施方式中,獲取模組41還用於:在獲取應用伺服器執行到的目標事務中的資料庫操作指令之前,攔截應用伺服器發往資料庫的目標事務中的事務開始指 令;或者,接收應用伺服器主動下發的目標事務中的事務開始指令。
在一可選實施方式中,預測執行模組42具體可用於:若獲取模組41獲取到的資料庫操作指令屬於修改資料庫類指令,在本地建立的記憶體庫中類比資料庫操作指令的資料環境,基於類比的資料環境對資料庫操作指令進行預測執行;若獲取模組41獲取到的資料庫操作指令不屬於修改資料庫類指令,在資料庫中執行資料庫操作指令,以對資料庫操作指令進行預測執行。
進一步,在獲取模組41獲取到的資料庫操作指令屬於修改資料庫類指令的情況下,預測執行模組42在執行在本地建立的記憶體庫中類比資料庫操作指令的資料環境,基於類比的資料環境對資料庫操作指令進行預測執行的操作時,具體用於:將資料庫操作指令拆分為讀指令和寫指令;在資料庫中執行讀指令以獲取讀資料集,將讀資料集存入記憶體庫中以類比資料庫操作指令的資料環境;在記憶體庫中執行寫指令以修改讀資料集。
在一可選實施方式中,控制執行模組43具體可用於:向資料庫下發本地記錄的資料庫操作指令,以指示資料庫執行資料庫操作指令,並接收資料庫返回的資料庫操 作指令的實際執行結果;若實際執行結果與預測執行結果相同,向資料庫下發事務提交指令,以供資料庫提交目標事務;若實際執行結果與預測執行結果不相同,向資料庫下發交易復原指令,以供資料庫回滾目標事務。考慮到事務的原子性,控制執行模組43透過將實際執行結果與預測執行結果進行比較,可以避免事務執行過程出錯,有利於提高事務執行的成功機率。
進一步,控制執行模組43在向資料庫下發本地記錄的資料庫操作指令時,具體可用於:將本地記錄的資料庫操作指令同時下發給資料庫,有利於節約網路資源。
進一步,控制執行模組43可以將本地記錄的所有資料庫操作指令連同本地記錄的預測執行資料一併下發給資料庫,有利於節約網路資源。
在一可選實施方式中,控制執行模組43具體用於:根據本地記錄的資料庫操作指令,判斷目標事務是否為單機事務;若判斷結果為是,則根據本地記錄的資料庫操作指令以及預測執行資料,以單機交易處理邏輯控制資料庫實際執行目標事務;若判斷結果為否,則根據本地記錄的資料庫操作指令以及預測執行資料,以分散式交易處理邏輯控制資料庫實際執行目標事務。由於分散式事務的處理邏輯和單機事務的處理邏輯有所不同,單機事務的處理邏輯相對簡單,例 如不關於讀寫加鎖等問題,所以所消耗的資源也相對較少。基於此,控制執行模組43透過識別目標事務是否為單機事務,在識別為單機事務時採用單機事務的處理邏輯進行處理,有利於提高處理效率,節約處理成本。
在一可選實施方式中,預測執行模組42還用於:在獲取到目標事務中的交易復原指令時,刪除本地記錄的資料庫操作指令以及預測執行資料。
本實施例提供的資料庫操作裝置,其可以單獨部署,位於應用伺服器和資料庫之間,也可以部署於應用伺服器一端實現,或者也可以部署於資料庫一端實現。
本實施例提供的資料庫操作裝置,與應用伺服器相互配合,在應用伺服器執行目標事務的過程加入預測執行過程,預先獲得並記錄目標事務需要執行的全部資料庫操作指令,並僅針對屬於修改資料庫類指令的資料庫操作指令記錄預測執行產生的預測執行資料以適應於讀已提交隔離級別,為真實執行事務提供了條件,之後根據記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行該目標事務,有利於提高執行效率,增大事務輸送量。
所屬領域的技術人員可以清楚地瞭解到,為描述的方便和簡潔,上述描述的系統,裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本發明所提供的幾個實施例中,應該理解到,所揭 露的系統,裝置和方法,可以透過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或元件可以結合或者可以整合到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是透過一些介面,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以整合在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元整合在一個單元中。上述整合的單元既可以採用硬體的形式實現,也可以採用硬體加軟體功能單元的形式實現。
上述以軟體功能單元的形式實現的整合的單元,可以儲存在一個電腦可讀取儲存媒體中。上述軟體功能單元儲存在一個儲存媒體中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)或處理器(processor)執行本發明各個實施例所述方法的部分步驟。而前述的儲存媒體包括:U碟、移動硬碟、唯讀記憶 體(Read-Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、磁碟或者光碟等各種可以儲存程式碼的媒體。
最後應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;儘管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本發明各實施例技術方案的精神和範圍。
Claims (12)
- 一種資料庫操作方法,其特徵在於,包括:在應用伺服器執行目標事務的過程中,依次獲取該應用伺服器執行到的該目標事務中的資料庫操作指令;對該資料庫操作指令進行預測執行,將預測執行結果返回給該應用伺服器以供該應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄該資料庫操作指令以及在該資料庫操作指令屬於修改資料庫類指令時記錄該預測執行產生的預測執行資料;及當獲取到該目標事務中的事務提交指令時,根據本地記錄的該資料庫操作指令以及該預測執行資料,控制該應用伺服器對應的資料庫實際執行該目標事務。
- 根據申請專利範圍第1項所述的方法,其中,還包括:在該應用伺服器執行該目標事務之前,配置該資料庫為讀已提交隔離級別。
- 根據申請專利範圍第1項所述的方法,其中,該對該資料庫操作指令進行預測執行,包括:若該資料庫操作指令屬於修改資料庫類指令,在本地建立的記憶體庫中類比該資料庫操作指令的資料環境,基於該類比的資料環境對該資料庫操作指令進行預測執行;及若該資料庫操作指令不屬於修改資料庫類指令,在該資料庫中執行該資料庫操作指令,以對該資料庫操作指令 進行預測執行。
- 根據申請專利範圍第3項所述的方法,其中,該在本地建立的記憶體庫中類比該資料庫操作指令所需的資料環境,基於該類比的資料環境對該資料庫操作指令進行預測執行,包括:將該資料庫操作指令拆分為讀指令和寫指令;在該資料庫中執行該讀指令以獲取讀資料集,將該讀資料集存入該記憶體庫中以類比該資料庫操作指令的資料環境;及在該記憶體庫中執行該寫指令以修改該讀資料集。
- 根據申請專利範圍第1至4項中任一項所述的方法,其中,該根據本地記錄的該資料庫操作指令以及該預測執行資料,控制該應用伺服器對應的資料庫實際執行目標事務,包括:向該資料庫下發本地記錄的該資料庫操作指令,以指示該資料庫執行該資料庫操作指令,並接收該資料庫返回的該資料庫操作指令的實際執行結果;若該實際執行結果與該預測執行結果相同,向該資料庫下發該事務提交指令,以供該資料庫提交該目標事務;及若該實際執行結果與該預測執行結果不相同,向該資料庫下發交易復原指令,以供該資料庫回滾該目標事務。
- 根據申請專利範圍第5項所述的方法,其中,該向該資料庫下發本地記錄的該資料庫操作指令,包括: 將本地記錄的該資料庫操作指令同時下發給該資料庫。
- 一種資料庫操作裝置,其特徵在於,包括:獲取模組,用於在應用伺服器執行目標事務的過程中,依次獲取該應用伺服器執行到的該目標事務中的資料庫操作指令;預測執行模組,用於對該資料庫操作指令進行預測執行,將預測執行結果返回給該應用伺服器以供該應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄該資料庫操作指令以及在該資料庫操作指令屬於修改資料庫類指令時記錄該預測執行產生的預測執行資料;及控制執行模組,用於當獲取到該目標事務中的事務提交指令時,根據本地記錄的該資料庫操作指令以及該預測執行資料,控制該應用伺服器對應的資料庫實際執行該目標事務。
- 根據申請專利範圍第7項所述的裝置,其中,還包括:配置模組,用於在該應用伺服器執行該目標事務之前,配置該資料庫為讀已提交隔離級別。
- 根據申請專利範圍第7項所述的裝置,其中,該預測執行模組具體用於:若該資料庫操作指令屬於修改資料庫類指令,在本地建立的記憶體庫中類比該資料庫操作指令的資料環境,基於該類比的資料環境對該資料庫操作指令進行預測執行; 及若該資料庫操作指令不屬於修改資料庫類指令,在該資料庫中執行該資料庫操作指令,以對該資料庫操作指令進行預測執行。
- 根據申請專利範圍第9項所述的裝置,其中,該預測執行模組具體用於:將該資料庫操作指令拆分為讀指令和寫指令;在該資料庫中執行該讀指令以獲取讀資料集,將該讀資料集存入該記憶體庫中以類比該資料庫操作指令的資料環境;及在該記憶體庫中執行該寫指令以修改該讀資料集。
- 根據申請專利範圍第7至10項中任一項所述的裝置,其中,該控制執行模組具體用於:向該資料庫下發本地記錄的該資料庫操作指令,以指示該資料庫執行該資料庫操作指令,並接收該資料庫返回的該資料庫操作指令的實際執行結果;若該實際執行結果與該預測執行結果相同,向該資料庫下發該事務提交指令,以供該資料庫提交該目標事務;及若該實際執行結果與該預測執行結果不相同,向該資料庫下發交易復原指令,以供該資料庫回滾該目標事務。
- 根據申請專利範圍第11項所述的裝置,其中,該控制執行模組具體用於:將本地記錄的該資料庫操作指令同時下發給該資料 庫。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW106101941A TWI725110B (zh) | 2017-01-19 | 2017-01-19 | 資料庫操作方法及裝置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW106101941A TWI725110B (zh) | 2017-01-19 | 2017-01-19 | 資料庫操作方法及裝置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201828164A true TW201828164A (zh) | 2018-08-01 |
| TWI725110B TWI725110B (zh) | 2021-04-21 |
Family
ID=63960188
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW106101941A TWI725110B (zh) | 2017-01-19 | 2017-01-19 | 資料庫操作方法及裝置 |
Country Status (1)
| Country | Link |
|---|---|
| TW (1) | TWI725110B (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210318935A1 (en) * | 2020-04-08 | 2021-10-14 | Salesforce.Com, Inc. | Method of using statistical backup validation for predictable database restore time |
Family Cites Families (17)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3602840B2 (ja) * | 2002-10-22 | 2004-12-15 | 株式会社東芝 | 命令の投機的実行制御装置およびその方法 |
| GB0318196D0 (en) * | 2003-08-02 | 2003-09-03 | Ibm | A method apparatus and computer program for processing a queue of messages |
| US7529914B2 (en) * | 2004-06-30 | 2009-05-05 | Intel Corporation | Method and apparatus for speculative execution of uncontended lock instructions |
| US7493419B2 (en) * | 2005-12-13 | 2009-02-17 | International Business Machines Corporation | Input/output workload fingerprinting for input/output schedulers |
| US9424315B2 (en) * | 2007-08-27 | 2016-08-23 | Teradata Us, Inc. | Methods and systems for run-time scheduling database operations that are executed in hardware |
| US8224845B2 (en) * | 2008-01-21 | 2012-07-17 | International Business Machines Corporation | Transaction prediction modeling method |
| CN101587447B (zh) * | 2008-05-23 | 2013-03-27 | 国际商业机器公司 | 基于预测的事务执行系统和方法 |
| CN101625699B (zh) * | 2009-07-28 | 2013-01-09 | 大连新中连软件集团有限公司 | 基于业务组件化的应用软件进行业务控制的方法和系统 |
| US20110179057A1 (en) * | 2010-01-18 | 2011-07-21 | Microsoft Corporation | Database engine throttling |
| CN102203779B (zh) * | 2011-05-03 | 2013-04-17 | 华为技术有限公司 | 更新数据的方法和控制装置 |
| US9477707B2 (en) * | 2013-01-29 | 2016-10-25 | Nec Corporation | System and methods for predicting query execution time for concurrent and dynamic database workloads |
| US9053035B1 (en) * | 2013-11-25 | 2015-06-09 | Freescale Semiconductor, Inc. | Multi-threaded system for performing atomic binary translations |
| US10599999B2 (en) * | 2014-06-02 | 2020-03-24 | Yottamine Analytics, Inc. | Digital event profile filters based on cost sensitive support vector machine for fraud detection, risk rating or electronic transaction classification |
| US9477481B2 (en) * | 2014-06-27 | 2016-10-25 | International Business Machines Corporation | Accurate tracking of transactional read and write sets with speculation |
| CN105204923A (zh) * | 2014-06-27 | 2015-12-30 | 国际商业机器公司 | 用于资源预配置的方法和装置 |
| US9684514B2 (en) * | 2014-09-10 | 2017-06-20 | International Business Machines Corporation | Inference based condition code generation |
| US10176209B2 (en) * | 2015-06-26 | 2019-01-08 | Vmware, Inc. | Abortable transactions using versioned tuple cache |
-
2017
- 2017-01-19 TW TW106101941A patent/TWI725110B/zh not_active IP Right Cessation
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20210318935A1 (en) * | 2020-04-08 | 2021-10-14 | Salesforce.Com, Inc. | Method of using statistical backup validation for predictable database restore time |
Also Published As
| Publication number | Publication date |
|---|---|
| TWI725110B (zh) | 2021-04-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11182404B2 (en) | Data replication technique in database management system | |
| US10649995B2 (en) | Methods and systems for optimizing queries in a multi-tenant store | |
| JP6877435B2 (ja) | データベース動作方法及び装置 | |
| US11132350B2 (en) | Replicable differential store data structure | |
| US11500869B2 (en) | Method and apparatus for optimizing database transactions | |
| WO2019109854A1 (zh) | 分布式数据库数据处理方法、装置、存储介质及电子装置 | |
| US11625389B2 (en) | Snapshot isolation query transactions in distributed systems | |
| EP3396542B1 (en) | Database operating method and device | |
| US12079205B2 (en) | Snapshot isolation query transactions in distributed systems | |
| TWI774643B (zh) | 資料庫操作方法及裝置 | |
| KR20250056814A (ko) | 개선된 질의 성능을 제공하는 보조 질의 최적화기 | |
| WO2017041637A1 (zh) | 数据库操作方法及装置 | |
| CN116975053A (zh) | 一种数据处理方法、装置、设备、介质及程序产品 | |
| TW201828164A (zh) | 資料庫操作方法及裝置 | |
| TWI805544B (zh) | 資料庫操作方法及裝置 | |
| TWI735512B (zh) | 資料庫操作方法及裝置 | |
| TWI790991B (zh) | 資料庫操作方法及裝置 | |
| US12423293B2 (en) | Streaming change logs from streaming database tables | |
| CN120560788A (zh) | 数据处理方法以及相关设备 | |
| CN121458215A (zh) | 基于多模数据库协同的预算数据管理与分析系统 | |
| CN115145970A (zh) | 一种基于数据库中间件针对sql打标的管理的方法 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |