TWI735512B - 資料庫操作方法及裝置 - Google Patents
資料庫操作方法及裝置 Download PDFInfo
- Publication number
- TWI735512B TWI735512B TW106101943A TW106101943A TWI735512B TW I735512 B TWI735512 B TW I735512B TW 106101943 A TW106101943 A TW 106101943A TW 106101943 A TW106101943 A TW 106101943A TW I735512 B TWI735512 B TW I735512B
- Authority
- TW
- Taiwan
- Prior art keywords
- database
- database operation
- transaction
- execution
- target transaction
- Prior art date
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申請案提供一種資料庫操作方法及裝置。方法包括:在應用伺服器執行目標交易的過程中,依次獲取應用伺服器執行到的目標交易中的資料庫操作指令;對資料庫操作指令進行預測執行,將預測執行結果返回給應用伺服器以供應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄資料庫操作指令以及預測執行產生的預測執行資料;當獲取到目標交易中的交易提交指令時,根據記憶體庫中儲存的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標交易。本申請案可以提高交易執行效率並增大交易輸送量。
Description
本申請案涉及資料庫技術領域,尤其涉及一種資料庫操作方法及裝置。
資料庫交易(Database Transaction),是指作為單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。一個交易由一系列資料庫操作指令構成,例如結構化查詢語言(Structured Query Language,SQL)語句,這些資料庫操作指令之間存在切分條件以及跳轉等邏輯,意味著在一次執行過程中該交易中可能有部分資料庫操作指令被跳過不執行。但在現有技術中,由於無法預先獲知交易中需要執行的資料庫操作指令,因此只能按照執行邏輯邊執行邊判斷,依次執行交易中的語句,以實現對資料庫的操作。這種交易執行方式效率較低,交易輸送量較低。
本申請案的多個方面提供一種資料庫操作方法及裝 置,用以提高交易執行效率並增大交易輸送量。
本申請案的一方面,提供一種資料庫操作方法,包括:在應用伺服器執行目標交易的過程中,依次獲取所述應用伺服器執行到的所述目標交易中的資料庫操作指令;對所述資料庫操作指令進行預測執行,將預測執行結果返回給所述應用伺服器以供所述應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄所述資料庫操作指令以及所述預測執行產生的預測執行資料;當獲取到所述目標交易中的交易提交指令時,根據本地記錄的所述資料庫操作指令以及所述預測執行資料,控制所述應用伺服器對應的資料庫實際執行所述目標交易。
本申請案的另一方面,提供一種資料庫操作裝置,包括:獲取模組,用於在應用伺服器執行目標交易的過程中,依次獲取所述應用伺服器執行到的所述目標交易中的資料庫操作指令;預測執行模組,用於對所述資料庫操作指令進行預測執行,將預測執行結果返回給所述應用伺服器以供所述應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄所述資料庫操作指令以及所述預測執行產生的預測執行資料;控制執行模組,用於當獲取到所述目標交易中的交易提交指令時,根據本地記錄的所述資料庫操作指令以及所 述預測執行資料,控制所述應用伺服器對應的資料庫實際執行所述目標交易。
在本申請案中,資料庫操作裝置與應用伺服器相互配合,在應用伺服器執行目標交易的過程加入預測執行過程,預先獲得並記錄目標交易需要執行的全部資料庫操作指令以及預測執行資料,為真實執行交易提供了條件,之後根據記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行該目標交易,有利於提高執行效率,進而增大交易輸送量。
10‧‧‧應用伺服器
20‧‧‧資料庫
30‧‧‧資料庫操作裝置
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語句。
具體的,應用伺服器控制整個目標交易的執行邏輯,可以按照現有方式執行目標交易。資料庫操作裝置在應用伺服器執行目標交易的過程中,依次獲取應用伺服器執行到的目標交易中的資料庫操作指令。
在一可選實施方式中,應用伺服器按照現有方式向資料庫發送資料庫操作指令,以實現對資料庫的訪問。資料庫操作裝置可以對應用伺服器與資料庫之間的通信進行監控,以攔截應用伺服器發往資料庫的資料庫操作指令。
在另一可選實施方式中,對應用伺服器的處理邏輯進行稍微修改,將原來向資料庫發送資料庫操作指令的邏輯改為向資料庫操作裝置發送。基於此,資料庫操作裝置可以接收應用伺服器主動下發的資料庫操作指令。
在此說明,若目標交易是顯式交易,則目標交易中的首個指令是交易開始指令,如開始交易(begin transaction),基於此,資料庫操作裝置在獲取應用伺服器執行到的資料庫操作指令之前,可以攔截應用伺服器發往資料庫的目標交易中的交易開始指令,根據該交易開始指令,獲知需要執行目標交易。或者,資料庫操作裝置在獲取應用伺服器執行到的資料庫操作指令之前,可以接收應用伺服器主動下發的目標交易中的交易開始指令,根據該 交易開始指令,獲知需要執行目標交易。若目標交易是隱式交易,則目標交易的首個指令就是資料庫操作指令,不包括獲取交易開始指令的步驟。
資料庫操作裝置在獲取應用伺服器執行到的資料庫操作指令後,對獲取到的資料庫操作指令進行預測執行,將預測執行結果返回給應用伺服器,以供應用伺服器確定下一個需要執行的資料庫操作指令。其中,預測執行結果決定著目標交易的執行路徑,這裡的執行路徑是指資料庫操作指令之間的跳轉邏輯。透過將預測執行結果返回給應用伺服器,從而達到由應用伺服器控制整個目標交易的執行邏輯的目的。
另外,資料庫操作裝置還需要在本地記錄所獲取到的資料庫操作指令,以及記錄對該資料庫操作指令進行預測執行產生的預測執行資料。所述預測執行資料主要是指對資料庫操作指令進行預測執行過程中的一些資料。
例如,資料庫操作裝置可以在本地創建記憶體庫,將所獲取到的資料庫操作指令以及預測執行資料存入記憶體庫中。
其中,資料庫操作指令對資料庫的操作主要是訪問資料庫中的資料,則可以模擬資料庫操作指令的資料環境,基於所模擬的資料環境對資料庫操作指令進行預測執行。基於此,一種對資料庫操作指令進行預測執行的方式可以是:在本地創建的記憶體庫中模擬資料庫操作指令所需的資料環境,基於所模擬的資料環境對資料庫操作指令進行 預測執行。
進一步,一種在本地創建的記憶體庫中模擬資料庫操作指令的資料環境,基於所模擬的資料環境對資料庫操作指令進行預測執行的實施方式包括:將獲取到的資料庫操作指令拆分為一個讀指令和一個寫指令,將讀指令運行於真正的資料庫上,即在資料庫中執行該讀指令以獲取讀資料集(ReadSet),將讀資料集存入本地記憶體庫中,以模擬資料庫操作指令所需的資料環境。然後,將寫指令作用於記憶體庫上,以實現對資料庫操作指令的預測執行,即在記憶體庫中執行寫指令以修改讀資料集,例如對讀資料集中的有關資料進行更新或查詢處理等。其中,執行寫指令以修改讀資料集可以產生結果資料集(affectRowInMemdb),該結果資料集包括預測執行結果。
在上述預測執行過程中,資料庫操作裝置可以在本地記錄讀指令所讀取的讀資料集以及執行寫指令產生的結果資料集。由此可見,所述預測執行資料可以包括讀資料集和結果資料集,或者也可以包括讀資料集和結果資料集中的部分資料,例如能夠對在資料庫中實際執行目標交易產生有益效果的一些資料,例如一些數值的各種索引,例如一級索引、二級索引、主鍵值等。
資料庫操作裝置對依次獲取到的資料庫操作指令分別執行上述預測操作,獲得各資料庫操作指令及其對應的預測執行資料儲存到記憶體庫中。
當資料庫操作裝置獲取到目標交易中的交易提交指令(即應用伺服器執行到交易提交指令)時,則可以根據本地記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標交易。
由上述可見,資料庫操作裝置與應用伺服器相互配合,在應用伺服器執行目標交易的過程加入預測執行過程,預先獲得並記錄目標交易需要執行的全部資料庫操作指令以及預測執行資料,為真實執行交易提供了條件,之後在根據記錄的資料庫操作指令以及預測執行資料實際執行該目標交易時,可以提前獲取有關資料資訊並且可以減少指令之間的跳轉等,有利於提高執行效率,增大交易輸送量。
上述根據本地記錄的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標交易的一種可選實施方式包括:資料庫操作裝置向資料庫下發本地記錄的資料庫操作指令,以指示資料庫執行本地記錄的所述資料庫操作指令,並接收資料庫返回的資料庫操作指令的實際執行結果;然後,將資料庫操作指令的實際執行結果與預測執行結果進行比較,若實際執行結果與預測執行結果相同,向資料庫下發交易提交指令,以供資料庫提交目標交易;若實際執行結果與預測執行結果不相同,向資料庫下發交易轉返指令,以供資料庫轉返目標交易。
在上述實施方式中,考慮到交易的原子性,透過將實 際執行結果與預測執行結果進行比較,可以避免交易執行過程出錯,有利於提高交易執行的成功概率。
進一步,在現有技術中,由於無法預先知道交易需要執行的全部資料庫操作指令,所以只能按照交易的執行邏輯依次執行資料庫操作指令,這會導致應用伺服器與資料庫之間的頻繁交互,這在遠端應用場景中將會消耗大量網路資源。但在本實施例中,透過預測執行過程已經預先獲得目標交易需要執行的全部資料庫操作指令,即本地記錄的資料庫操作指令,因此在向資料庫下發本地記錄的資料庫操作指令,以指示資料庫執行本地記錄的所述資料庫操作指令的過程中,可以將本地記錄的資料庫操作指令同時(或者一併)下發到資料庫,有利於節約網路資源。另外,對於一些並行的資料庫操作指令,資料庫還可以平行作業,有利於進一步提高交易執行效率。
進一步,還可以將本地記錄的所有資料庫操作指令連同本地記錄的預測執行資料一併下發給資料庫。
進一步,在一種根據記憶體庫中儲存的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標交易的可選實施方式中,資料庫操作裝置可以根據本地記錄的資料庫操作指令,判斷目標交易是否為單機交易;若判斷結果為是,則根據本地記錄的所述資料庫操作指令以及預測執行資料,以單機交易處理邏輯控制資料庫實際執行目標交易;若判斷結果為否,則根據本地記錄的資料庫操作指令以及預測執行資料,以分散式交易處理 邏輯控制資料庫實際執行目標交易。
其中,基於預測執行過程中獲得的資料庫操作指令可以識別出目標交易是單機交易還是分散式交易。例如,可以判斷本地記錄的資料庫操作指令的操作物件是否作用於同一物理設備上,若判斷結果為是,則可以確定該目標交易為單機交易;若判斷結果為否,則可以確定該目標交易為分散式交易。
由於分散式交易的處理邏輯和單機交易的處理邏輯有所不同,單機交易的處理邏輯相對簡單,例如不涉及讀寫加鎖等問題,所以所消耗的資源也相對較少。基於此,本實施例透過識別目標交易是否為單機交易,在識別為單機交易時採用單機交易的處理邏輯進行處理,有利於提高處理效率,節約處理成本。
在一可選實施方式中,若資料庫操作裝置獲取到目標交易中的交易轉返指令(即應用伺服器執行到交易轉返指令)時,可以直接清空本地記憶體庫,實現轉返操作。在該情況下,由於目標交易並未在資料庫中真正執行,所以資料庫無需執行轉返操作,可見,在這種情況下,採用本實施例方法也可以提高交易執行效率。
下面以減庫存交易為例,詳細說明本申請案技術方案的工作流程。
減庫存交易的SQL代碼如下,括弧內的文字為注釋:begin transaction(開始交易) select * from inventory where itemId=?for update(用商品id查看當前庫存,並鎖定)if(item.inventory>0)item.inventory--;update inventory set item.inventory=$item.inventory where itemId=?commit;else rollback;(如果當前庫存大於0,則減少、更新商品庫存並提交,否則轉返)
在實際執行過程中,應用伺服器負責該減庫存交易的整個邏輯,資料庫操作裝置(或者也可稱為執行伺服器)只會獲取應用伺服器執行到的開始交易,需要執行的SQL語句,以及提交/轉返指令。
首先,開始交易後,資料庫操作裝置在本地創建記憶體庫;當資料庫操作裝置獲取到select * from inventory where itemId=?for update這條SQL語句時,將這條SQL語句直接在資料庫中進行查找,並在本地記憶體庫中記錄下這次查詢結果(即查詢到的待處理資料,也就是當前庫存量),並將全部查詢結果返回給應用伺服器。
值得說明的是,由於該SQL語句是一條查詢語句,所以對該語句進行拆分與否其結果都相同,為了簡化操作可以不對查詢語句進行拆分。
應用伺服器收到資料庫操作裝置返回的查詢結果後,判斷查詢結果是否大於0,若判斷結果為是,則將當前庫存量減少,並執行更新語句,即update inventory set item.inventory=$item.inventory where itemId=?;若判斷結果為否,則執行轉返語句。
若資料庫操作裝置收到了rollback語句,則清空本地記憶體庫。在這種情況下,因為交易並沒有在資料庫中執行,所以無需資料庫執行轉返操作。
若資料庫操作裝置收到了更新語句,即update inventory set item.inventory=?where itemId=?,則將這條SQL語句拆解為一個讀資料庫指令,即select * from inventory where itemId=?和一個寫資料庫指令,即update inventory set item.inventory=?where itemId=?;接著,將select * from inventory where itemId=?這個語句下發到資料庫中,獲得讀資料集,將讀資料集中的資料寫入本地記憶體庫中;再根據update inventory set item.inventory=?where itemId=?這個語句在本地記憶體庫中進行更新操作,以獲得結果資料集,並將結果資料集中的執行結果返回給應用伺服器。應用伺服器此時執行commit指令。其中,結果資料集和讀資料集中的資料構成預測執行資料。
當資料庫操作裝置獲取到commit指令後,基於記憶體庫中儲存的SQL語句以及預測執行資料,在資料庫中執行該減庫存交易,這次交易執行過程是真實執行的。
較佳的,資料庫操作裝置可以一次性將本地記憶體庫中的SQL語句全部提交到資料庫中,資料庫基於此進行執行,有利於節約傳輸SQL語句所消耗的網路資源。
這次真實執行也會返回執行結果,可以將預測執行結果與實際執行結果進行比較,如果比較結果為相同,則可以在資料庫中提交這次交易,而如果比較結果為不相同,則認為提交是失敗的,由於在這種情況下,交易本身其實一直都沒有真正的在資料庫中執行提交,所以可以簡單地轉返整個請求,讓應用服務器重新提交即可。
其中,經過上述預測執行,已經獲得了所有的需要執行的SQL語句,以及他們對應的預測執行資料,例如全部切分條件,數值的索引等,而這些資料足以讓我們提前對交易是否是單機交易做出判斷。基於此,可以採用相應的交易處理邏輯進行處理,有利於節約資源。
需要說明的是,對於前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本申請案並不受所描述的動作順序的限制,因為依據本申請案,某些步驟可以採用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬於較佳實施例,所涉及的動作和模組並不一定是本申請案所必須的。
在上述實施例中,對各個實施例的描述都各有側重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關描述。
圖4為本申請案一實施例提供的資料庫操作裝置的結構示意圖。如圖4所示,該裝置包括:獲取模組41、預測執行模組42和控制執行模組43。
獲取模組41,用於在應用伺服器執行目標交易的過程中,依次獲取應用伺服器執行到的目標交易中的資料庫操作指令。
預測執行模組42,用於對資料庫操作指令進行預測執行,將預測執行結果返回給應用伺服器以供應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄資料庫操作指令以及預測執行產生的預測執行資料。
控制執行模組43,用於當獲取到目標交易中的交易提交指令時,根據記憶體庫中儲存的資料庫操作指令以及預測執行資料,控制應用伺服器對應的資料庫實際執行目標交易。
在一可選實施方式中,獲取模組41具體可用於:攔截應用伺服器發往資料庫的資料庫操作指令;或者,接收應用伺服器主動下發的資料庫操作指令。
在一可選實施方式中,獲取模組41還用於:在獲取應用伺服器執行到的目標交易中的資料庫操作指令之前,攔截應用伺服器發往資料庫的目標交易中的交易開始指令;或者,接收應用伺服器主動下發的目標交易中的交易開始指令。
在一可選實施方式中,預測執行模組42具體用於:在本地創建的記憶體庫中模擬資料庫操作指令所需的 資料環境,基於模擬的資料環境對資料庫操作指令進行預測執行。
進一步,預測執行模組42具體用於:將資料庫操作指令拆分為讀指令和寫指令;在資料庫中執行讀指令以獲取讀資料集,將讀資料集存入記憶體庫中以模擬資料庫操作指令的資料環境;在記憶體庫中執行寫指令以修改讀資料集。
在一可選實施方式中,控制執行模組43具體用於:向資料庫下發本地記錄的資料庫操作指令,以指示資料庫執行本地記錄的資料庫操作指令,並接收資料庫返回的資料庫操作指令的實際執行結果;若實際執行結果與預測執行結果相同,向資料庫下發交易提交指令,以供資料庫提交目標交易;若實際執行結果與預測執行結果不相同,向資料庫下發交易轉返指令,以供資料庫轉返目標交易。
考慮到交易的原子性,控制執行模組43透過將實際執行結果與預測執行結果進行比較,可以避免交易執行過程出錯,有利於提高交易執行的成功概率。
進一步,控制執行模組43具體用於:在向資料庫下發本地記錄的資料庫操作指令,以指示資料庫執行本地記錄的資料庫操作指令的過程中,將本地記錄的資料庫操作指令同時下發給資料庫,有利於節約網路資源。
在一可選實施方式中,控制執行模組43具體用於:根據本地記錄的資料庫操作指令,判斷目標交易是否 為單機交易;若判斷結果為是,則根據本地記錄的資料庫操作指令以及預測執行資料,以單機交易處理邏輯控制資料庫實際執行目標交易;若判斷結果為否,則根據本地記錄的資料庫操作指令以及預測執行資料,以分散式交易處理邏輯控制資料庫實際執行目標交易。
由於分散式交易的處理邏輯和單機交易的處理邏輯有所不同,單機交易的處理邏輯相對簡單,例如不涉及讀寫加鎖等問題,所以所消耗的資源也相對較少。基於此,控制執行模組43透過識別目標交易是否為單機交易,在識別為單機交易時採用單機交易的處理邏輯進行處理,有利於提高處理效率,節約處理成本。
在一可選實施方式中,預測執行模組42還用於:在獲取到目標交易中的交易轉返指令時,刪除本地記錄的資料庫操作指令以及預測執行資料,例如清空記憶體庫。
本實施例提供的資料庫操作裝置,其可以單獨部署,位於應用伺服器和資料庫之間,也可以部署於應用伺服器一端實現,或者也可以部署於資料庫一端實現。
本實施例提供的資料庫操作裝置,與應用伺服器相互配合,在應用伺服器執行目標交易的過程加入預測執行過程,在預測執行過程中,可以提前獲得目標交易的執行路徑,即真正需要執行的資料庫操作指令,並記錄預測執行產生的預測執行資料,為真實執行交易提供了條件,之後 在根據記錄的資料庫操作指令以及預測執行資料實際執行該目標交易時,例如基於預測執行資料可以提前獲取有關資料資訊並且可以減少指令之間的跳轉等,因此可以提高執行效率,增大交易輸送量。
所屬領域的技術人員可以清楚地瞭解到,為描述的方便和簡潔,上述描述的系統,裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
在本申請案所提供的幾個實施例中,應該理解到,所揭露的系統,裝置和方法,可以透過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或元件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是透過一些介面,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本申請案各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在, 也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用硬體加軟體功能單元的形式實現。
上述以軟體功能單元的形式實現的集成的單元,可以儲存在一個電腦可讀取儲存媒體中。上述軟體功能單元儲存在一個儲存媒體中,包括若干指令用以使得一台電腦設備(可以是個人電腦,伺服器,或者網路設備等)或處理器(processor)執行本申請案各個實施例所述方法的部分步驟。而前述的儲存媒體包括:USB隨身碟、移動式硬碟、唯讀記憶體(Read-Only Memory,ROM)、隨機存取記憶體(Random Access Memory,RAM)、磁碟或者光碟等各種可以儲存程式碼的媒體。
最後應說明的是:以上實施例僅用以說明本申請案的技術方案,而非對其限制;儘管參照前述實施例對本申請案進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換;而這些修改或者替換,並不使相應技術方案的本質脫離本申請案各實施例技術方案的精神和範圍。
Claims (16)
- 一種資料庫操作方法,其特徵在於,包括:在應用伺服器執行目標交易的過程中,依次獲取所述應用伺服器執行到的所述目標交易中的資料庫操作指令;對所述資料庫操作指令進行預測執行,將預測執行結果返回給所述應用伺服器以供所述應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄所述資料庫操作指令以及所述預測執行產生的預測執行資料,其中,預測執行結果決定著目標交易的執行路徑,所述執行路徑是指資料庫操作指令之間的跳轉邏輯;當獲取到所述目標交易中的交易提交指令時,根據本地記錄的所述資料庫操作指令以及所述預測執行資料,控制所述應用伺服器對應的資料庫實際執行所述目標交易。
- 根據申請專利範圍第1項所述的方法,其中,所述在應用伺服器執行目標交易的過程中,依次獲取所述應用伺服器執行到的所述目標交易中的資料庫操作指令,包括:攔截所述應用伺服器發往所述資料庫的所述資料庫操作指令;或者接收所述應用伺服器主動下發的所述資料庫操作指令。
- 根據申請專利範圍第1項所述的方法,其中,所述對所述資料庫操作指令進行預測執行,包括:在本地創建的記憶體庫中模擬所述資料庫操作指令所 需的資料環境,基於所述模擬的資料環境對所述資料庫操作指令進行預測執行。
- 根據申請專利範圍第3項所述的方法,其中,所述在本地創建的記憶體庫中模擬所述資料庫操作指令所需的資料環境,基於所述模擬的資料環境對所述資料庫操作指令進行預測執行,包括:將所述資料庫操作指令拆分為讀指令和寫指令;在所述資料庫中執行所述讀指令以獲取讀資料集,將所述讀資料集存入所述記憶體庫中以模擬所述資料庫操作指令的資料環境;在所述記憶體庫中執行所述寫指令以修改所述讀資料集。
- 根據申請專利範圍第1項所述的方法,其中,所述根據本地記錄的所述資料庫操作指令以及所述預測執行資料,控制所述應用伺服器對應的資料庫實際執行所述目標交易,包括:向所述資料庫下發本地記錄的所述資料庫操作指令,以指示所述資料庫執行所述資料庫操作指令,並接收所述資料庫返回的所述資料庫操作指令的實際執行結果;若所述實際執行結果與所述預測執行結果相同,向所述資料庫下發所述交易提交指令,以供所述資料庫提交所述目標交易;若所述實際執行結果與所述預測執行結果不相同,向所述資料庫下發交易轉返指令,以供所述資料庫轉返所述 目標交易。
- 根據申請專利範圍第5項所述的方法,其中,所述向所述資料庫下發本地記錄的所述資料庫操作指令,包括:將本地記錄的所述資料庫操作指令同時下發給所述資料庫。
- 根據申請專利範圍第1項所述的方法,其中,所述根據本地記錄的所述資料庫操作指令以及所述預測執行資料,控制所述應用伺服器對應的資料庫實際執行所述目標交易,包括:根據本地記錄的所述資料庫操作指令,判斷所述目標交易是否為單機交易;若判斷結果為是,則根據本地記錄的所述資料庫操作指令以及所述預測執行資料,以單機交易處理邏輯控制所述資料庫實際執行所述目標交易;若判斷結果為否,則根據本地記錄的所述資料庫操作指令以及所述預測執行資料,以分散式交易處理邏輯控制所述資料庫實際執行所述目標交易。
- 根據申請專利範圍第1-7項之任一項所述的方法,其中,還包括:當獲取到所述目標交易中的交易轉返指令時,刪除本地記錄的所述資料庫操作指令以及所述預測執行資料。
- 一種資料庫操作裝置,其特徵在於,包括:獲取模組,用於在應用伺服器執行目標交易的過程 中,依次獲取所述應用伺服器執行到的所述目標交易中的資料庫操作指令;預測執行模組,用於對所述資料庫操作指令進行預測執行,將預測執行結果返回給所述應用伺服器以供所述應用伺服器確定下一個需要執行的資料庫操作指令,並在本地記錄所述資料庫操作指令以及所述預測執行產生的預測執行資料,其中,預測執行結果決定著目標交易的執行路徑,所述執行路徑是指資料庫操作指令之間的跳轉邏輯;控制執行模組,用於當獲取到所述目標交易中的交易提交指令時,根據本地記錄的所述資料庫操作指令以及所述預測執行資料,控制所述應用伺服器對應的資料庫實際執行所述目標交易。
- 根據申請專利範圍第9項所述的裝置,其中,所述獲取模組具體用於:攔截所述應用伺服器發往所述資料庫的所述資料庫操作指令;或者接收所述應用伺服器主動下發的所述資料庫操作指令。
- 根據申請專利範圍第9項所述的裝置,其中,所述預測執行模組具體用於:在本地創建的記憶體庫中模擬所述資料庫操作指令所需的資料環境,基於所述模擬的資料環境對所述資料庫操作指令進行預測執行。
- 根據申請專利範圍第11項所述的裝置,其中, 所述預測執行模組具體用於:將所述資料庫操作指令拆分為讀指令和寫指令;在所述資料庫中執行所述讀指令以獲取讀資料集,將所述讀資料集存入所述記憶體庫中以模擬所述資料庫操作指令的資料環境;在所述記憶體庫中執行所述寫指令以修改所述讀資料集。
- 根據申請專利範圍第9項所述的裝置,其中,所述控制執行模組具體用於:向所述資料庫下發本地記錄的所述資料庫操作指令,以指示所述資料庫執行所述資料庫操作指令,並接收所述資料庫返回的所述資料庫操作指令的實際執行結果;若所述實際執行結果與所述預測執行結果相同,向所述資料庫下發所述交易提交指令,以供所述資料庫提交所述目標交易;若所述實際執行結果與所述預測執行結果不相同,向所述資料庫下發交易轉返指令,以供所述資料庫轉返所述目標交易。
- 根據申請專利範圍第13項所述的裝置,其中,所述控制執行模組具體用於:將本地記錄的所述資料庫操作指令同時下發給所述資料庫。
- 根據申請專利範圍第9項所述的裝置,其中,所述控制執行模組具體用於: 根據本地記錄的所述資料庫操作指令,判斷所述目標交易是否為單機交易;若判斷結果為是,則根據本地記錄的所述資料庫操作指令以及所述預測執行資料,以單機交易處理邏輯控制所述資料庫實際執行所述目標交易;若判斷結果為否,則根據本地記錄的所述資料庫操作指令以及所述預測執行資料,以分散式交易處理邏輯控制所述資料庫實際執行所述目標交易。
- 根據申請專利範圍第9-15項之任一項所述的裝置,其中,所述預測執行模組還用於:在獲取到所述目標交易中的交易轉返指令時,刪除本地記錄的所述資料庫操作指令以及所述預測執行資料。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106101943A TWI735512B (zh) | 2017-01-19 | 2017-01-19 | 資料庫操作方法及裝置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW106101943A TWI735512B (zh) | 2017-01-19 | 2017-01-19 | 資料庫操作方法及裝置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201828110A TW201828110A (zh) | 2018-08-01 |
TWI735512B true TWI735512B (zh) | 2021-08-11 |
Family
ID=63960242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106101943A TWI735512B (zh) | 2017-01-19 | 2017-01-19 | 資料庫操作方法及裝置 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI735512B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200734886A (en) * | 2006-03-03 | 2007-09-16 | Via Tech Inc | A system and method for batch processing of database instructions |
TW201347459A (zh) * | 2012-05-02 | 2013-11-16 | Quanta Comp Inc | 管理方法及其系統 |
TW201430584A (zh) * | 2013-01-16 | 2014-08-01 | Delta Electronics Inc | 管理雲端主機的監控系統及其監控方法 |
-
2017
- 2017-01-19 TW TW106101943A patent/TWI735512B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200734886A (en) * | 2006-03-03 | 2007-09-16 | Via Tech Inc | A system and method for batch processing of database instructions |
TW201347459A (zh) * | 2012-05-02 | 2013-11-16 | Quanta Comp Inc | 管理方法及其系統 |
TW201430584A (zh) * | 2013-01-16 | 2014-08-01 | Delta Electronics Inc | 管理雲端主機的監控系統及其監控方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201828110A (zh) | 2018-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491485B (zh) | 生成执行计划的方法、计划单元装置和分布式NewSQL数据库系统 | |
Olston et al. | Automatic optimization of parallel dataflow programs | |
WO2017041639A1 (zh) | 数据库操作方法及装置 | |
CN106471489B (zh) | 管理具有灵活模式的数据 | |
JP6877435B2 (ja) | データベース動作方法及び装置 | |
CN106897123B (zh) | 数据库操作方法及装置 | |
CN104169871A (zh) | 软件开发方法和装置 | |
TWI774643B (zh) | 資料庫操作方法及裝置 | |
CN104137095A (zh) | 用于演进分析的系统 | |
JP2012113706A (ja) | データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム | |
WO2017041637A1 (zh) | 数据库操作方法及装置 | |
KR20160117691A (ko) | 스토리지 시스템 및 그것의 동작 방법 | |
TWI725110B (zh) | 資料庫操作方法及裝置 | |
TWI735512B (zh) | 資料庫操作方法及裝置 | |
TWI805544B (zh) | 資料庫操作方法及裝置 | |
US11467971B2 (en) | Systems and methods for accelerating data computation | |
TWI790991B (zh) | 資料庫操作方法及裝置 | |
Laptev et al. | Smarter Warehouse | |
US11847118B1 (en) | Query set optimization in a data analytics pipeline | |
CN112970011B (zh) | 记录查询优化中的谱系 | |
Munir | Storage format selection and optimization for materialized intermediate results in data-intensive flows | |
KR20210049359A (ko) | 데이터 조회 방법 및 그 장치 | |
KR20240044233A (ko) | 로그 및 인덱스 최근접 데이터 고속 처리 장치 및 방법 | |
KR20240044230A (ko) | 블록체인 기반 데이터 고속 처리 장치 및 방법 | |
CN116955414A (zh) | 低代码平台的数据查询方法及相关系统 |