[發(fā)明專利]一種基于數(shù)據(jù)庫的數(shù)據(jù)更新方法和系統(tǒng)有效
申請(qǐng)?zhí)枺?/td> | 201210237777.0 | 申請(qǐng)日: | 2012-07-10 |
公開(公告)號(hào): | CN103544153A | 公開(公告)日: | 2014-01-29 |
發(fā)明(設(shè)計(jì))人: | 鄭高超 | 申請(qǐng)(專利權(quán))人: | 阿里巴巴集團(tuán)控股有限公司 |
主分類號(hào): | G06F17/30 | 分類號(hào): | G06F17/30 |
代理公司: | 北京集佳知識(shí)產(chǎn)權(quán)代理有限公司 11227 | 代理人: | 王寶筠 |
地址: | 英屬開曼群島大開曼*** | 國(guó)省代碼: | 開曼群島;KY |
權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
摘要: | |||
搜索關(guān)鍵詞: | 一種 基于 數(shù)據(jù)庫 數(shù)據(jù) 更新 方法 系統(tǒng) | ||
技術(shù)領(lǐng)域
本申請(qǐng)涉及數(shù)據(jù)庫技術(shù)領(lǐng)域,特別涉及一種基于數(shù)據(jù)庫的數(shù)據(jù)更新方法和系統(tǒng)。
背景技術(shù)
數(shù)據(jù)庫是一個(gè)共享資源,可以供多個(gè)用戶使用。為了充分利用數(shù)據(jù)庫資源、發(fā)揮數(shù)據(jù)庫共享資源的特點(diǎn),允許多個(gè)用戶并行地存取數(shù)據(jù)庫。但是當(dāng)多個(gè)用戶并發(fā)存取同一數(shù)據(jù)時(shí),在數(shù)據(jù)庫中就會(huì)產(chǎn)生多個(gè)事務(wù)同時(shí)對(duì)同一數(shù)據(jù)進(jìn)行存取操作的情況,如果對(duì)并發(fā)操作不加控制就可能會(huì)出現(xiàn)讀取和存儲(chǔ)不正確的數(shù)據(jù),破壞數(shù)據(jù)庫的一致性。
以飛機(jī)票訂票系統(tǒng)中的訂票操作為例,假設(shè)某航班的機(jī)票余量為16張,甲售票點(diǎn)的甲售票員和乙售票點(diǎn)的乙售票員讀出該航班剩余機(jī)票均為16張,如果甲售票員和乙售票員在同一時(shí)刻各賣出一張機(jī)票,則甲售票點(diǎn)將修改機(jī)票余量為16-1=15張,并寫回?cái)?shù)據(jù)庫;同時(shí)乙售票點(diǎn)也會(huì)修改機(jī)票余量為16-1=15張,并寫回?cái)?shù)據(jù)庫。這樣,盡管訂票系統(tǒng)一共賣出兩張票時(shí),數(shù)據(jù)庫中機(jī)票的余量卻僅減少一張,即數(shù)據(jù)庫中的機(jī)票余量更新為16-1=15張,從而由于并發(fā)操作導(dǎo)致了丟失修改等問題,使得數(shù)據(jù)庫出現(xiàn)的不一致性問題。
為了避免由于用戶的并發(fā)操作而導(dǎo)致數(shù)據(jù)庫的不一致性,一般通過對(duì)數(shù)據(jù)庫進(jìn)行加設(shè)排它鎖以實(shí)現(xiàn)并發(fā)控制,即某一事務(wù)對(duì)數(shù)據(jù)庫中的某個(gè)表或該表的某一記錄做鎖定,以保證同一時(shí)間僅有該事務(wù)可以對(duì)該表或該條記錄進(jìn)行修改,只有該事務(wù)釋放了它的鎖之后,其他的事務(wù)才可以對(duì)該表或該條記錄進(jìn)行修改。這樣,當(dāng)較多用戶同時(shí)訪問數(shù)據(jù)庫中某一數(shù)據(jù)對(duì)象(即產(chǎn)生多個(gè)事務(wù)的并發(fā)操作)時(shí),如果某個(gè)事務(wù)對(duì)該數(shù)據(jù)對(duì)象進(jìn)行封鎖,其他事務(wù)則必須等待,從而由于鎖資源不足而產(chǎn)生大量的鎖等待,甚至失敗操作。
因此,目前需要本領(lǐng)域的技術(shù)人員迫切解決的一個(gè)技術(shù)問題就是:如何實(shí)現(xiàn)對(duì)資源有限的數(shù)據(jù)庫系統(tǒng)的并發(fā)控制,以減少鎖等待的等待時(shí)間。
發(fā)明內(nèi)容
本申請(qǐng)?zhí)峁┮环N基于數(shù)據(jù)庫的數(shù)據(jù)更新方法,用以解決現(xiàn)有技術(shù)中并發(fā)訪問過程中所存在的鎖等待的等待時(shí)間過長(zhǎng)的問題。
本申請(qǐng)還提供了一種基于數(shù)據(jù)庫的數(shù)據(jù)更新系統(tǒng),用以保證上述方法在實(shí)際中的實(shí)現(xiàn)及應(yīng)用。
為了解決上述問題,本申請(qǐng)公開了一種基于數(shù)據(jù)庫的數(shù)據(jù)更新方法,包括:
A、接收數(shù)據(jù)更新請(qǐng)求,所述數(shù)據(jù)更新請(qǐng)求中包括請(qǐng)求扣除的待扣數(shù)據(jù)量;
B、判斷本地內(nèi)存中是否存儲(chǔ)有預(yù)扣數(shù)據(jù)量,且所述預(yù)扣數(shù)據(jù)量不小于所述待扣數(shù)據(jù)量,如果是,執(zhí)行步驟E;如果否,則執(zhí)行步驟C;
C、獲取數(shù)據(jù)庫中記錄的所述數(shù)據(jù)的預(yù)算剩余量,并根據(jù)所述待扣數(shù)據(jù)量和所述預(yù)算剩余量確定數(shù)據(jù)庫扣除量;
D、從所述數(shù)據(jù)庫記錄的預(yù)算剩余量中扣除所述數(shù)據(jù)庫扣除量,并將所述數(shù)據(jù)庫扣除量作為本地內(nèi)存中的預(yù)扣數(shù)據(jù)量進(jìn)行存儲(chǔ);
E、從所述本地內(nèi)存中存儲(chǔ)的預(yù)扣數(shù)據(jù)量中扣除所述待扣數(shù)據(jù)量,以更新本地內(nèi)存中的預(yù)扣數(shù)據(jù)量。
本發(fā)明還公開了一種基于數(shù)據(jù)庫的數(shù)據(jù)更新系統(tǒng),包括:
請(qǐng)求接收單元,用于接收數(shù)據(jù)更新請(qǐng)求,所述數(shù)據(jù)更新請(qǐng)求中包括請(qǐng)求扣除的待扣數(shù)據(jù)量;
判斷單元,用于判斷本地內(nèi)存中是否存儲(chǔ)有預(yù)扣數(shù)據(jù)量,且所述預(yù)扣數(shù)據(jù)量不小于所述待扣數(shù)據(jù)量,并當(dāng)判斷出本地內(nèi)存中存儲(chǔ)有預(yù)扣數(shù)據(jù)量,且所述預(yù)扣數(shù)據(jù)量不小于所述待扣數(shù)據(jù)量時(shí),觸發(fā)執(zhí)行本地?cái)?shù)據(jù)扣除單元的操作;當(dāng)判斷出本地內(nèi)存中未存儲(chǔ)有預(yù)扣數(shù)據(jù)量或者所述預(yù)扣數(shù)據(jù)量小于所述待扣數(shù)據(jù)量時(shí),觸發(fā)執(zhí)行第一數(shù)據(jù)讀取單元的操作;
第一數(shù)據(jù)讀取單元,用于獲取數(shù)據(jù)庫中記錄的所述數(shù)據(jù)的預(yù)算剩余量;
扣除量確定單元,用于根據(jù)所述待扣數(shù)據(jù)量和所述預(yù)算剩余量確定數(shù)據(jù)庫扣除量,并執(zhí)行數(shù)據(jù)更新單元的操作;
數(shù)據(jù)庫更新單元,用于從所述數(shù)據(jù)庫記錄的預(yù)算剩余量中扣除所述數(shù)據(jù)庫扣除量,并將所述數(shù)據(jù)庫扣除量作為本地內(nèi)存中的預(yù)扣數(shù)據(jù)量進(jìn)行存儲(chǔ),并執(zhí)行所述本地?cái)?shù)據(jù)更新單元的操作;
本地?cái)?shù)據(jù)更新單元,用于從所述本地內(nèi)存中存儲(chǔ)的預(yù)扣數(shù)據(jù)量中扣除所述待扣數(shù)據(jù)量,以更新本地內(nèi)存中的預(yù)扣數(shù)據(jù)量。
與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):
在本申請(qǐng)中,本申請(qǐng)中當(dāng)系統(tǒng)接收到數(shù)據(jù)更新請(qǐng)求時(shí),并不會(huì)直接從數(shù)據(jù)庫中獲取數(shù)據(jù)以對(duì)數(shù)據(jù)庫進(jìn)行寫操作,只有在本地內(nèi)存中存儲(chǔ)的預(yù)扣數(shù)據(jù)量小于該數(shù)據(jù)更新請(qǐng)求所請(qǐng)求的待扣數(shù)據(jù)量時(shí),才會(huì)從執(zhí)行從數(shù)據(jù)庫中獲取數(shù)據(jù)的操作,從而減少了對(duì)數(shù)據(jù)庫的訪問次數(shù),即減少了對(duì)數(shù)據(jù)庫的寫操作次數(shù),進(jìn)而減少了鎖等待的等待時(shí)間,并提高了系統(tǒng)單位時(shí)間內(nèi)處理數(shù)據(jù)更新請(qǐng)求的數(shù)量,即提高了系統(tǒng)的吞吐量。
當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品并不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
附圖說明
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于阿里巴巴集團(tuán)控股有限公司,未經(jīng)阿里巴巴集團(tuán)控股有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210237777.0/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F17-00 特別適用于特定功能的數(shù)字計(jì)算設(shè)備或數(shù)據(jù)處理設(shè)備或數(shù)據(jù)處理方法
G06F17-10 .復(fù)雜數(shù)學(xué)運(yùn)算的
G06F17-20 .處理自然語言數(shù)據(jù)的
G06F17-30 .信息檢索;及其數(shù)據(jù)庫結(jié)構(gòu)
G06F17-40 .數(shù)據(jù)的獲取和記錄
G06F17-50 .計(jì)算機(jī)輔助設(shè)計(jì)
- 數(shù)據(jù)庫
- 數(shù)據(jù)庫管理系統(tǒng)及數(shù)據(jù)庫
- 數(shù)據(jù)庫構(gòu)筑裝置、數(shù)據(jù)庫檢索裝置、數(shù)據(jù)庫裝置、數(shù)據(jù)庫構(gòu)筑方法、以及數(shù)據(jù)庫檢索方法
- 數(shù)據(jù)庫和數(shù)據(jù)庫處理方法
- 數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)庫更新方法、數(shù)據(jù)庫以及數(shù)據(jù)庫更新程序
- 容器數(shù)據(jù)庫
- 數(shù)據(jù)庫同步方法及數(shù)據(jù)庫
- 一種MongoDB數(shù)據(jù)庫對(duì)象復(fù)制延遲監(jiān)控方法和裝置
- 數(shù)據(jù)分布式存儲(chǔ)方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 數(shù)據(jù)庫語句執(zhí)行方法及裝置
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法、數(shù)據(jù)系統(tǒng)、接收設(shè)備和數(shù)據(jù)讀取方法
- 數(shù)據(jù)記錄方法、數(shù)據(jù)記錄裝置、數(shù)據(jù)記錄媒體、數(shù)據(jù)重播方法和數(shù)據(jù)重播裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)發(fā)送系統(tǒng)、數(shù)據(jù)發(fā)送裝置以及數(shù)據(jù)結(jié)構(gòu)
- 數(shù)據(jù)顯示系統(tǒng)、數(shù)據(jù)中繼設(shè)備、數(shù)據(jù)中繼方法及數(shù)據(jù)系統(tǒng)
- 數(shù)據(jù)嵌入裝置、數(shù)據(jù)嵌入方法、數(shù)據(jù)提取裝置及數(shù)據(jù)提取方法
- 數(shù)據(jù)管理裝置、數(shù)據(jù)編輯裝置、數(shù)據(jù)閱覽裝置、數(shù)據(jù)管理方法、數(shù)據(jù)編輯方法以及數(shù)據(jù)閱覽方法
- 數(shù)據(jù)發(fā)送和數(shù)據(jù)接收設(shè)備、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收方法
- 數(shù)據(jù)發(fā)送裝置、數(shù)據(jù)接收裝置、數(shù)據(jù)收發(fā)系統(tǒng)、數(shù)據(jù)發(fā)送方法、數(shù)據(jù)接收方法和數(shù)據(jù)收發(fā)方法
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置
- 數(shù)據(jù)發(fā)送方法、數(shù)據(jù)再現(xiàn)方法、數(shù)據(jù)發(fā)送裝置及數(shù)據(jù)再現(xiàn)裝置