裴婉竹
摘要:計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的快速發(fā)展加速了分布式管理系統(tǒng)的應(yīng)用和推廣,數(shù)據(jù)庫管理系統(tǒng)作為分布式管理系統(tǒng)的一個(gè)重要組成部分,采用并發(fā)控制機(jī)制實(shí)現(xiàn)多業(yè)務(wù)邏輯功能請求時(shí),對于保證數(shù)據(jù)庫的一致性和準(zhǔn)確性具有重要的作用。目前,常用的數(shù)據(jù)庫并發(fā)控制機(jī)制包括基于封鎖的方法、基于時(shí)標(biāo)的方法和基于樂觀并發(fā)控制方法三種,能夠有效地提升數(shù)據(jù)庫操作的并發(fā)性,強(qiáng)化事務(wù)處理的效率,確保數(shù)據(jù)庫中存儲數(shù)據(jù)的完整性,進(jìn)而可以大大提高分布式管理系統(tǒng)的實(shí)施和應(yīng)用。
關(guān)鍵詞:數(shù)據(jù)庫管理系統(tǒng) 并發(fā)控制 一致性 事務(wù)處理
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2014)12-0111-01
1 引言
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,分布式管理系統(tǒng)已經(jīng)在金融證券、電力通信、政企辦公、建筑施工等領(lǐng)域得到了廣泛的應(yīng)用,分布式管理系統(tǒng)處理的邏輯業(yè)務(wù)具有數(shù)據(jù)量龐大、系統(tǒng)規(guī)模復(fù)雜、多用戶操作環(huán)境下的特點(diǎn),需要引入多線程并發(fā)控制技術(shù),數(shù)據(jù)庫管理系統(tǒng)需要能夠?qū)崿F(xiàn)多個(gè)邏輯業(yè)務(wù)程序同時(shí)存取數(shù)據(jù)庫的功能,以便能夠?yàn)槿藗兲峁└油晟频臄?shù)據(jù)服務(wù),提高分布式數(shù)據(jù)庫的并發(fā)程度、吞吐量,并且能夠確保數(shù)據(jù)庫的一致性和準(zhǔn)確性[1]。
2 數(shù)據(jù)庫并發(fā)控制作用
在分布式管理系統(tǒng)應(yīng)用過程中,數(shù)據(jù)庫存儲了多個(gè)用戶共享的數(shù)據(jù)資源,可以供許多用戶進(jìn)行訪問。如果用戶的邏輯業(yè)務(wù)程序串行執(zhí)行訪問,也就是每一個(gè)時(shí)刻只有一個(gè)用戶程序執(zhí)行數(shù)據(jù)庫存取,其他用戶需要等待,此時(shí)就可以有效地保證數(shù)據(jù)庫的一致性、完整性等。但是,隨著分布式管理系統(tǒng)并發(fā)技術(shù)的使用,為了能夠充分地利用數(shù)據(jù)庫資源,發(fā)揮數(shù)據(jù)庫共享的特性,已經(jīng)產(chǎn)生了多個(gè)用戶并發(fā)存取數(shù)據(jù)庫的需求[2]。多個(gè)用戶存取同一數(shù)據(jù)資源,很容易破壞數(shù)據(jù)庫的一致性,因此,需要對多用戶存取操作進(jìn)行并發(fā)控制。并發(fā)控制機(jī)制是保證數(shù)據(jù)庫一致性的重要手段,也是衡量一個(gè)數(shù)據(jù)庫優(yōu)劣的重要標(biāo)志。
3 數(shù)據(jù)庫并發(fā)控制機(jī)制應(yīng)用
數(shù)據(jù)庫并發(fā)控制常用的機(jī)制包括三種,分別是基于封鎖的方法、基于時(shí)標(biāo)的方法、基于樂觀并發(fā)控制方法[3]。
(1)基于封鎖的方法。
封鎖方法是最為常用的數(shù)據(jù)庫并發(fā)控制方法,其基本思想描述如下:數(shù)據(jù)庫管理系統(tǒng)操作數(shù)據(jù)之前,必須申請對需要操作的數(shù)據(jù)對象進(jìn)行封鎖,封鎖完成之后才能獲準(zhǔn)對該數(shù)據(jù)對象進(jìn)行操作。如果申請封鎖的過程中,發(fā)現(xiàn)該數(shù)據(jù)對象已經(jīng)被其他事務(wù)封鎖,則操作方式將會產(chǎn)生沖突,后到的事務(wù)請求封鎖程序必須等待,直到數(shù)據(jù)對象被其他事務(wù)釋放之后,才能完成封鎖請求。確切的控制規(guī)則由封鎖類型確定,封鎖規(guī)則規(guī)定了數(shù)據(jù)庫并發(fā)控制過程中,加鎖原則和封鎖相融合的機(jī)制,以便能夠?qū)崿F(xiàn)沖突事務(wù)請求操作的可串行調(diào)度。目前,最常用的封鎖模型有共享鎖、排它鎖兩種,其中共享鎖又被稱為S鎖,數(shù)據(jù)對象在進(jìn)行讀操作時(shí)可以使用共享鎖;排它鎖又被稱為X鎖,數(shù)據(jù)對象在進(jìn)行寫入操作的過程中,可以使用排它鎖。
(2)基于時(shí)標(biāo)的并發(fā)控制方法。
數(shù)據(jù)庫事務(wù)執(zhí)行過程中,基于時(shí)標(biāo)的并發(fā)控制給每一個(gè)事務(wù)賦予一個(gè)唯一的時(shí)標(biāo)戳,數(shù)據(jù)庫管理系統(tǒng)可以根據(jù)事務(wù)的時(shí)標(biāo)戳進(jìn)行排序串行調(diào)度,此時(shí)事務(wù)按照時(shí)標(biāo)戳排序的串行調(diào)度等效于事務(wù)的時(shí)間調(diào)度。調(diào)度器給每一個(gè)事務(wù)T賦予一個(gè)唯一的數(shù)值,也就是時(shí)間戳TS(T),時(shí)間戳必須在事務(wù)第一次通知調(diào)度器時(shí)直接按照升序給出,調(diào)度器維護(hù)一個(gè)計(jì)數(shù)器,當(dāng)一個(gè)事務(wù)開始時(shí),計(jì)數(shù)器加1,新的數(shù)值便成為該事務(wù)大的時(shí)間戳,調(diào)度器還需要將數(shù)據(jù)庫中活躍的事務(wù)及其時(shí)間戳保存在一個(gè)表中,便于為后續(xù)調(diào)度提供基礎(chǔ)依據(jù)。
時(shí)標(biāo)控制方法也是數(shù)據(jù)庫常用的并發(fā)控制機(jī)制之一。時(shí)標(biāo)控制方法的優(yōu)點(diǎn)是事務(wù)處理過程中不會發(fā)生中斷,并且無需發(fā)生等待,因此不存在事務(wù)處理死鎖現(xiàn)象,時(shí)標(biāo)控制方法能夠很好地滿足并發(fā)度。時(shí)標(biāo)控制方法也存在一些缺點(diǎn),比如其需要重啟,才能保持事務(wù)全局順序操作,沖突發(fā)生較多時(shí),重啟次數(shù)過多導(dǎo)致資源浪費(fèi),另外在分布式系統(tǒng)中維護(hù)全局統(tǒng)一時(shí)標(biāo)非常困難。
(3)基于樂觀并發(fā)控制方法。
與傳統(tǒng)的封鎖、時(shí)標(biāo)并發(fā)控制方法不同,樂觀方法不需要暫時(shí)停止或者拒絕執(zhí)行一個(gè)數(shù)據(jù)庫操作事務(wù),樂觀方法可以讓一個(gè)事務(wù)順利執(zhí)行完畢。樂觀控制方法執(zhí)行的前提是系統(tǒng)數(shù)據(jù)庫操作事務(wù)之間極少發(fā)生沖突。根據(jù)對數(shù)據(jù)庫存取訪問事務(wù)進(jìn)行分析可知,很多數(shù)據(jù)庫事務(wù)可以無沖突正確地執(zhí)行完畢,因此可以不考慮事務(wù)之間的沖突,讓讀操作執(zhí)行完畢,暫時(shí)保存寫操作的結(jié)果在緩沖區(qū)。數(shù)據(jù)庫事務(wù)讀操作完畢之后,可以由一個(gè)專門的檢測確認(rèn)程序確認(rèn)數(shù)據(jù)庫操作事務(wù)之間是否具備可串行化,如果通過這個(gè)檢查,則可以把寫操作的結(jié)果永久地存儲到數(shù)據(jù)庫中,否則就需要重啟數(shù)據(jù)庫操作事務(wù)。為了能夠完成檢測過程,需要保留數(shù)據(jù)庫操作事務(wù)的一些上下文信息,直到檢測程序執(zhí)行完畢,樂觀并發(fā)控制方法執(zhí)行的過程可以分為以下三個(gè)步驟:
(1)數(shù)據(jù)讀出操作:該步驟可以讀出數(shù)據(jù)庫需要處理的數(shù)據(jù)項(xiàng),處理完畢后將回寫結(jié)果的值保存在一個(gè)緩沖空間中,而不需要寫入數(shù)據(jù)庫;
(2)事務(wù)檢測操作:事務(wù)檢測操作可以有效地檢查數(shù)據(jù)庫的更新操作是否能夠引起數(shù)據(jù)庫中的數(shù)據(jù)不一致,如果通過檢測,則可以執(zhí)行寫入操作,如果檢測不通過,需要重新啟動事務(wù)處理過程。
(3)數(shù)據(jù)寫入操作:將通過事務(wù)檢測操作的數(shù)據(jù)處理結(jié)果寫入到數(shù)據(jù)庫中。
4 結(jié)束語
數(shù)據(jù)庫并發(fā)控制機(jī)制可以有效地確保數(shù)據(jù)一致性和完整性,在當(dāng)前多用戶、大規(guī)模數(shù)據(jù)事務(wù)處理的環(huán)境下具有重要的作用和意義。隨著互聯(lián)網(wǎng)技術(shù)、數(shù)據(jù)庫技術(shù)的快速發(fā)展,數(shù)據(jù)庫并發(fā)控制機(jī)制能夠與當(dāng)前的移動計(jì)算、云計(jì)算等先進(jìn)技術(shù)相結(jié)合,得到更多的應(yīng)用和改進(jìn)。
參考文獻(xiàn)
[1]陳秋月,張劍妹.關(guān)系數(shù)據(jù)庫的并發(fā)控制與實(shí)現(xiàn)途徑[J].長治學(xué)院學(xué)報(bào),2012,29(5).
[2]周洋,張雷.使用觸發(fā)器的特殊樂觀并發(fā)控制方法[J].電腦知識與技術(shù),2013,(29).
[3]張?jiān)?,李?一種多粒度鎖的事務(wù)并發(fā)控制算法[J].微型機(jī)與應(yīng)用,2012,31(5).