新聞中心
在數(shù)據(jù)庫管理系統(tǒng)中,事務(wù)是指一組數(shù)據(jù)庫操作,這些操作要么全部成功執(zhí)行,要么全部不執(zhí)行,即“所有或無”。事務(wù)實(shí)現(xiàn)了數(shù)據(jù)庫的一致性和穩(wěn)定性,保證了數(shù)據(jù)的正確性和可靠性。在大型企業(yè)應(yīng)用中,事務(wù)處理非常重要。

通化網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),通化網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為通化成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個(gè)售后服務(wù)好的通化做網(wǎng)站的公司定做!
然而,在實(shí)際應(yīng)用中,事務(wù)的粒度往往成為了關(guān)注的熱點(diǎn)話題。事務(wù)粒度指的是事務(wù)操作的范圍大小,以及應(yīng)用場景下事務(wù)粒度的選擇和優(yōu)化。
本文將從事務(wù)粒度的理論基礎(chǔ)、應(yīng)用場景和優(yōu)化方法三個(gè)方面進(jìn)行探討。
一、事務(wù)粒度的理論基礎(chǔ)
數(shù)據(jù)庫事務(wù)的實(shí)現(xiàn)需要考慮ACID四個(gè)特性,即原子性、一致性、隔離性和持久性。
原子性:指數(shù)據(jù)庫操作無論成功還是失敗,都必須是“所有或無”,要么所有操作都成功,要么所有操作都失敗,保證了數(shù)據(jù)的完整性。
一致性:指數(shù)據(jù)庫的狀態(tài)在事務(wù)之前和之后保持一致,保證了數(shù)據(jù)的正確性。
隔離性:指不同的事務(wù)之間應(yīng)該是相互隔離的,互不影響,保證了數(shù)據(jù)的獨(dú)立性。
持久性:指事務(wù)一旦提交,就必須永久保存在數(shù)據(jù)庫中,保證了數(shù)據(jù)的穩(wěn)定性。
這四個(gè)特性是事務(wù)的基礎(chǔ),也是事務(wù)實(shí)現(xiàn)的核心。在確定事務(wù)粒度的時(shí)候,需要考慮這些特性之間的平衡和權(quán)衡。
二、事務(wù)粒度的應(yīng)用場景
事務(wù)粒度的應(yīng)用場景可以分為兩類:高并發(fā)場景和業(yè)務(wù)場景。
高并發(fā)場景:在高并發(fā)的情況下,事務(wù)粒度的大小對系統(tǒng)性能和可靠性有著很大的影響。如果事務(wù)粒度過大,會(huì)增加鎖的競爭,降低系統(tǒng)的并發(fā)性能;如果事務(wù)粒度過小,會(huì)增加事務(wù)的開銷和網(wǎng)絡(luò)通信的成本,降低系統(tǒng)的可靠性。
在高并發(fā)場景中,一般需要將事務(wù)粒度控制在較小的范圍內(nèi),通常是基于表或數(shù)據(jù)行的粒度,實(shí)現(xiàn)細(xì)粒度的事務(wù)處理。例如,在訂單處理中,可以將每個(gè)訂單作為一個(gè)獨(dú)立的事務(wù)處理;在庫存管理中,可以將每個(gè)商品作為一個(gè)獨(dú)立的事務(wù)處理。
業(yè)務(wù)場景:在業(yè)務(wù)場景中,事務(wù)粒度的選擇需要考慮業(yè)務(wù)流程的復(fù)雜度和業(yè)務(wù)邏輯的一致性。如果事務(wù)粒度過大,會(huì)對系統(tǒng)效率產(chǎn)生負(fù)面影響,而且遇到異常情況時(shí)也難以進(jìn)行針對性處理;如果事務(wù)粒度過小,會(huì)影響業(yè)務(wù)的一致性和正確性,甚至?xí)?dǎo)致數(shù)據(jù)不一致。
在業(yè)務(wù)場景中,一般需要權(quán)衡事務(wù)操作的復(fù)雜度和執(zhí)行效率,并考慮數(shù)據(jù)的完整性和正確性。例如,在銀行轉(zhuǎn)賬中,需要將轉(zhuǎn)出賬戶、轉(zhuǎn)入賬戶和交易記錄作為一個(gè)事務(wù)進(jìn)行處理;在電商平臺(tái)中,需要將下單、支付、發(fā)貨和簽收等操作作為一個(gè)事務(wù)進(jìn)行處理。
三、事務(wù)粒度的優(yōu)化方法
事務(wù)粒度的優(yōu)化方法包括兩個(gè)方面:從數(shù)據(jù)庫和應(yīng)用程序兩個(gè)層面進(jìn)行優(yōu)化。
從數(shù)據(jù)庫層面進(jìn)行優(yōu)化:在數(shù)據(jù)庫層面,可以采取以下措施優(yōu)化事務(wù)處理。
1、采用存儲(chǔ)過程或觸發(fā)器等數(shù)據(jù)庫對象優(yōu)化事務(wù)操作,可以減少網(wǎng)絡(luò)通信的開銷,提高執(zhí)行效率。
2、采用悲觀鎖或樂觀鎖等機(jī)制控制數(shù)據(jù)庫的并發(fā)性,避免數(shù)據(jù)錯(cuò)亂和資源的浪費(fèi)。
3、合理使用索引,優(yōu)化查詢性能,避免多次掃描和重復(fù)查詢。
從應(yīng)用程序?qū)用孢M(jìn)行優(yōu)化:在應(yīng)用程序?qū)用?,可以采取以下措施?yōu)化事務(wù)處理。
1、盡量采用批量操作,避免單次操作多次訪問數(shù)據(jù)庫,減少數(shù)據(jù)庫操作次數(shù)。
2、采用分布式事務(wù)或分布式緩存,將事務(wù)和數(shù)據(jù)分散到多個(gè)節(jié)點(diǎn)中,提高系統(tǒng)性能和可靠性。
3、合理使用連接池和線程池,避免資源的重復(fù)分配和管理,提高系統(tǒng)的并發(fā)處理能力。
事務(wù)粒度的控制是實(shí)現(xiàn)數(shù)據(jù)庫的一致性和穩(wěn)定性的重要手段。在應(yīng)用中,需要根據(jù)實(shí)際情況選擇合適的事務(wù)粒度,權(quán)衡系統(tǒng)性能和數(shù)據(jù)的正確性,優(yōu)化事務(wù)處理方式,提高系統(tǒng)可靠性。
相關(guān)問題拓展閱讀:
- 數(shù)據(jù)庫死鎖,并發(fā)問題
- 數(shù)據(jù)倉庫的主要特征
- 什么是數(shù)據(jù)庫的概念結(jié)構(gòu)
數(shù)據(jù)庫死鎖,并發(fā)問題
如果擁有線程需要獲取另外一個(gè)資源,而該資源當(dāng)前為等待線程所擁有,則這種情形將成為死鎖:在事務(wù)提交或回滾之前兩個(gè)線程都不能釋放資源,而且它們因?yàn)檎却龑Ψ綋碛械馁Y源而不能提交或回滾事務(wù)。例如,運(yùn)行事務(wù) 1 的線程 T1 具有學(xué)生基本信陪慧空息表上的排它鎖。運(yùn)行事務(wù)2的線程 T2 具有系部表上的排它鎖,并且之后需要學(xué)生基本信息表上的鎖。事務(wù)2 無法獲得這一鎖,因?yàn)槭聞?wù) 1 已擁有它。事務(wù)2 被阻塞,等待事務(wù) 1。然后,事務(wù)1 需要 系部表的鎖,但無法獲得鎖,因?yàn)槭聞?wù) 2 將它鎖定了。事務(wù)在提交或回滾之前不能釋放持有的鎖。因?yàn)槭聞?wù)需要對方控制的鎖才能繼續(xù)操作,所以它們不能提交或回滾。
需要注意的是死鎖經(jīng)常與正常阻塞混淆。當(dāng)一個(gè)事務(wù)鎖定了另一個(gè)事務(wù)需要的資源,第二個(gè)事務(wù)等待鎖被釋放。默認(rèn)情況下,SQL Server 事務(wù)不會(huì)超時(shí)(除非設(shè)置了 LOCK_TIMEOUT)。第二個(gè)事務(wù)被阻塞,碧宴而不是被死蘆瞎鎖。
補(bǔ)充樓主:
其實(shí)我沒什么經(jīng)驗(yàn),只不過是了解一些基礎(chǔ)的東西罷了。
一樓的 一朵瘩紅花 實(shí)際經(jīng)驗(yàn)很豐富,你可以向她咨詢一下。
你問的問題挺好得。三個(gè)概念緊密聯(lián)系在一起。
這樣說吧:并發(fā)的幾個(gè)事務(wù)同時(shí)發(fā)生,不加鎖控制的話數(shù)據(jù)就會(huì)亂套了,而加了鎖后,又是并發(fā)訪問會(huì)出現(xiàn)死鎖,所以就會(huì)出現(xiàn)避免死鎖的一些措施。
首先談并發(fā):理論指的是在一段時(shí)間同時(shí)對某件事進(jìn)行操作。 注意精度問題,修改數(shù)據(jù)庫是在一段時(shí)間內(nèi)操作,不是在某個(gè)時(shí)刻,而日志則會(huì)從 時(shí)刻 開始記錄你的操作。
造成死鎖的原因是為了防止 不同的用戶同時(shí)間(不是時(shí)刻)都對某個(gè)數(shù)據(jù)修改,造成訪問不一致的問題。
比如你讀了數(shù)據(jù)庫的一個(gè)數(shù)據(jù)然后把它修改了并存回去,是需要時(shí)間的(假如是student表中的有個(gè)grade屬性,你改了一條記錄的一個(gè)值)在這個(gè)過程當(dāng)中,有人又訪問了數(shù)據(jù)庫并且恰恰訪問的是存回去之前的數(shù)據(jù),然后他要進(jìn)行操作,過了一段時(shí)間,此時(shí)你已經(jīng)存回去了數(shù)據(jù)祥圓。會(huì)發(fā)現(xiàn)原來的數(shù)據(jù)被改動(dòng)了。這時(shí)數(shù)據(jù)就亂套了。(專業(yè)術(shù)語叫讀臟數(shù)據(jù),其實(shí)還有很多其他類似這種導(dǎo)致前后數(shù)據(jù)不一致的問題)所以為了限定這種操作,數(shù)據(jù)庫設(shè)計(jì)了—–鎖—來鎖定這種操作。就是你正在操作某個(gè)數(shù)據(jù)的時(shí)候—-通常之前會(huì)先鎖定這個(gè)數(shù)據(jù),這樣別人就不能對此數(shù)據(jù)操作了(嚴(yán)格來說就是只能讀,不能改),必須等你操作完才能對此數(shù)據(jù)修改等操作,這就在一定程度上避免了前后操作數(shù)據(jù)不一致的問題。
但是有了鎖后,新問題出現(xiàn)了,就是死鎖:
簡單解釋死鎖:進(jìn)程A等待進(jìn)程B釋放他的資源,B又等待A釋此掘放他的資源,這樣就互相等待就形成死鎖
官方解釋死鎖
死鎖,根本原因在于對共享存儲(chǔ)區(qū)的訪問。在數(shù)據(jù)庫中也一樣,如果需要“修改”一條數(shù)據(jù),首先數(shù)據(jù)庫管理系統(tǒng)會(huì)在上面加鎖,以保證在同一時(shí)間只有一個(gè)事務(wù)能進(jìn)行修改操作。鎖有多種實(shí)現(xiàn)方式,比如意向鎖,共享-排他鎖,鎖表,樹形協(xié)議,時(shí)間戳協(xié)議等等。鎖還有多種粒度,比如可以在表上加鎖,也可以在記錄上加鎖。
在并發(fā)控制中,鎖是非常重要的。
至于在Oracle還是別的數(shù)據(jù)庫管理系統(tǒng)中,死鎖產(chǎn)生的原因沒有不同,不同的頂多是鎖的實(shí)現(xiàn)或者死鎖的恢復(fù)等罷了
再來說說事務(wù):
事務(wù)簡單來說就是 一系列的對數(shù)據(jù)庫的操作揉在一起,要么同時(shí)完成,要么就都不完成。
比如—你要取錢的過程就可以當(dāng)成是一個(gè)小的事務(wù): 插卡,輸入取錢金額,取走錢,拿出來卡。此過程缺一不可。把所有這些過程細(xì)節(jié)封裝起來就成為一個(gè)事務(wù)。
以oracle數(shù)據(jù)庫為例:
一個(gè)事務(wù)(你可以認(rèn)為是一系列業(yè)務(wù)的操作)起始于dml語句(insert、update、delete)
即一條dml語句就做為一個(gè)事務(wù)的起始,然后根據(jù)業(yè)務(wù)需要,進(jìn)行其他的dml操作都算是事務(wù)的一部分。
最后碰到commit。或者rollback,或者其他意外什么的都算作一個(gè)事務(wù)的結(jié)束。
整個(gè)過程就是一個(gè)事務(wù)。
事務(wù)的理論解釋就是那四個(gè)什么特性:什么原子性、一致性、隔離性和持久性
簡稱ACID
剩下的:數(shù)據(jù)庫是建立在操作系統(tǒng)之上的一個(gè)層次。
你問的是數(shù)據(jù)庫的存儲(chǔ)機(jī)制??工作機(jī)制??還是什么的??
數(shù)據(jù)庫就是存數(shù)據(jù)的。數(shù)據(jù)庫管理系統(tǒng)是 對存的數(shù)據(jù)進(jìn)行高效率的管理
大的結(jié)構(gòu)分物理數(shù)據(jù)跟邏輯數(shù)據(jù)。
物理數(shù)據(jù)就是數(shù)據(jù)在存儲(chǔ)設(shè)備上的存儲(chǔ)方式,什么物理聯(lián)系,森宴核物理結(jié)構(gòu),物理記錄等 術(shù)語。
邏輯數(shù)據(jù)就是程序員和用戶看到的數(shù)據(jù)形式。什么邏輯聯(lián)系,邏輯結(jié)構(gòu)==同上
數(shù)據(jù)庫管理類系統(tǒng)就是把這些邏輯跟物理相互轉(zhuǎn)換。 好比你輸入的叫邏輯數(shù)據(jù)存儲(chǔ)在磁盤上叫物理數(shù)據(jù)。等等。
廢話了一堆,也不知道回答對你的問題沒~~
db2 是對某表某一條記錄操作的迅慎時(shí)候,他會(huì)對整個(gè)表進(jìn)行表鎖定,如果設(shè)置的事念昌神務(wù)級別是可重復(fù)的讀,那么另外一個(gè)人的同步操作就會(huì)被回滾,不過可以通過sql語句指定鎖定級別,sqlserver默認(rèn)是對行數(shù)據(jù)進(jìn)行鎖定,你如果要看這個(gè)問題,你可以先研究一下數(shù)據(jù)庫的鎖定方式和鎖定級別,死鎖是一定存在的,特別是在并發(fā)操作很多的情況,這個(gè)和你數(shù)據(jù)庫的設(shè)計(jì)有仔虧關(guān)系,關(guān)鍵是捕獲到死鎖后怎么樣對死鎖進(jìn)行釋放
數(shù)據(jù)倉庫的主要特征
數(shù)據(jù)倉庫的特點(diǎn):
數(shù)據(jù)倉庫是面向主題的;操作型數(shù)據(jù)庫的數(shù)據(jù)組織面向事務(wù)處理任務(wù),而數(shù)據(jù)倉庫中的數(shù)據(jù)是按照一定的主題域進(jìn)行組織。主題是指用戶使用數(shù)據(jù)倉庫進(jìn)行決策時(shí)所關(guān)心的重點(diǎn)方面,一個(gè)主題通常與多個(gè)操作型攜型信息系統(tǒng)相關(guān)。
數(shù)據(jù)倉庫是集成的,數(shù)據(jù)倉庫的數(shù)據(jù)有來自于分散的操作型數(shù)據(jù),將所需數(shù)據(jù)從原來的數(shù)據(jù)中抽取出來,進(jìn)行加工與集成,統(tǒng)一與綜卜游伏合之后才能進(jìn)入數(shù)據(jù)倉庫; 數(shù)據(jù)磨核倉庫中的數(shù)據(jù)是在對原有分散的數(shù)據(jù)庫數(shù)據(jù)抽取、清理的基礎(chǔ)上經(jīng)過系統(tǒng)加工、匯總和整理得到的,必須消除源數(shù)據(jù)中的不一致性,以保證數(shù)據(jù)倉庫內(nèi)的信息是關(guān)于整個(gè)企業(yè)的一致的全局信息。 數(shù)據(jù)倉庫的數(shù)據(jù)主要供企業(yè)決策分析之用,所涉及的數(shù)據(jù)操作主要是數(shù)據(jù)查詢,一旦某個(gè)數(shù)據(jù)進(jìn)入數(shù)據(jù)倉庫以后,一般情況下將被長期保留,也就是數(shù)據(jù)倉庫中一般有大量的查詢操作,但修改和刪除操作很少,通常只需要定期的加載、刷新。 數(shù)據(jù)倉庫中的數(shù)據(jù)通常包含歷史信息,系統(tǒng)記錄了企業(yè)從過去某一時(shí)點(diǎn)(如開始應(yīng)用數(shù)據(jù)倉庫的時(shí)點(diǎn))到當(dāng)前的各個(gè)階段的信息,通過這些信息,可以對企業(yè)的發(fā)展歷程和未來趨勢做出定量分析和預(yù)測。
數(shù)據(jù)倉庫是不可更新的,數(shù)據(jù)倉庫主要是為決策分析提供數(shù)據(jù),所涉及的操作主要是數(shù)據(jù)的查詢;
數(shù)據(jù)倉庫是隨時(shí)間而變化的,傳統(tǒng)的關(guān)系數(shù)據(jù)庫系統(tǒng)比較適合處理格式化的數(shù)據(jù),能夠較好的滿足商業(yè)商務(wù)處理的需求。穩(wěn)定的數(shù)據(jù)以只讀格式保存,且不隨時(shí)間改變。
匯總的。操作性數(shù)據(jù)映射成決策可用的格式。
大容量。時(shí)間序列數(shù)據(jù)通常都非常大。
非規(guī)范化的。Dw數(shù)據(jù)可以是而且經(jīng)常是冗余的。
元數(shù)據(jù)。將描述數(shù)據(jù)的數(shù)據(jù)保存起來。
數(shù)據(jù)源。數(shù)據(jù)來自內(nèi)部的和外部的非集成操作系統(tǒng)。
可以參考這篇文章:
數(shù)據(jù)倉庫(1)什么是數(shù)據(jù)倉庫 – 知乎 (zhihu.com)
面向主題:
傳統(tǒng)數(shù)據(jù)庫中,更大的特點(diǎn)是面向應(yīng)用進(jìn)行數(shù)據(jù)的余晌組織,各個(gè)業(yè)務(wù)系統(tǒng)可能是相互分離的。而數(shù)據(jù)倉庫則是面向主題的。主題是一個(gè)抽象的概念,是較高層次上企業(yè)信息系統(tǒng)中的數(shù)據(jù)綜合、歸類并進(jìn)行分析利用的抽象。在邏輯意義上,它是對應(yīng)企業(yè)中某一宏觀分析領(lǐng)域所涉及的分析對象。
集成性:
通過對分散、獨(dú)立、異構(gòu)的數(shù)據(jù)庫數(shù)據(jù)進(jìn)行抽取、清理、轉(zhuǎn)換和匯總便得到了數(shù)據(jù)倉庫的數(shù)據(jù),這樣保證了數(shù)據(jù)倉庫內(nèi)的數(shù)據(jù)關(guān)于整個(gè)企業(yè)的一致性。
數(shù)據(jù)倉庫中的綜合數(shù)據(jù)不能從原有的數(shù)據(jù)庫系統(tǒng)直接得到。因此在數(shù)據(jù)進(jìn)入數(shù)據(jù)倉庫之前,必然要經(jīng)過統(tǒng)一與綜合,這一步是數(shù)據(jù)倉庫建設(shè)中最關(guān)鍵、最復(fù)雜的一步,所要完成的工作有:
非易失性(不可更新性)
數(shù)據(jù)倉庫的數(shù)據(jù)反映的是一段相當(dāng)長的時(shí)間內(nèi)歷史數(shù)據(jù)的內(nèi)容,是不同時(shí)點(diǎn)的數(shù)據(jù)庫快照的,以及基于這些快照進(jìn)行統(tǒng)計(jì)、綜合和重組的導(dǎo)出數(shù)據(jù)。
數(shù)據(jù)非易失性主要是針對應(yīng)用而言。數(shù)據(jù)倉庫的用戶對數(shù)據(jù)的操作大多是數(shù)據(jù)查詢或比較復(fù)雜的挖掘,一旦數(shù)據(jù)進(jìn)入數(shù)腔尺據(jù)倉庫以后,一般情況下被較長時(shí)間保留。數(shù)據(jù)倉庫中一般有大量的查詢操作,但修改和刪除操作很少。因此,豎圓鋒數(shù)據(jù)經(jīng)加工和集成進(jìn)入數(shù)據(jù)倉庫后是極少更新的,通常只需要定期的加載和更新。
時(shí)變性
數(shù)據(jù)倉庫包含各種粒度的歷史數(shù)據(jù)。數(shù)據(jù)倉庫中的數(shù)據(jù)可能與某個(gè)特定日期、星期、月份、季度或者年份有關(guān)。數(shù)據(jù)倉庫的目的是通過分析企業(yè)過去一段時(shí)間業(yè)務(wù)的經(jīng)營狀況,挖掘其中隱藏的模式。雖然數(shù)據(jù)倉庫的用戶不能修改數(shù)據(jù),但并不是說數(shù)據(jù)倉庫的數(shù)據(jù)是永遠(yuǎn)不變的。分析的結(jié)果只能反映過去的情況,當(dāng)業(yè)務(wù)變化后,挖掘出的模式會(huì)失去時(shí)效性。因此數(shù)據(jù)倉庫的數(shù)據(jù)需要更新,以適應(yīng)決策的需要。從這個(gè)角度講,數(shù)據(jù)倉庫建設(shè)是一個(gè)項(xiàng)目,更是一個(gè)過程。數(shù)據(jù)倉庫的數(shù)據(jù)隨時(shí)間的變化表現(xiàn)在以下幾個(gè)方面:
(1) 數(shù)據(jù)倉庫的數(shù)據(jù)時(shí)限一般要遠(yuǎn)遠(yuǎn)長于操作型數(shù)據(jù)的數(shù)據(jù)時(shí)限。
(2) 操作型系統(tǒng)存儲(chǔ)的是當(dāng)前數(shù)據(jù),而數(shù)據(jù)倉庫中的數(shù)據(jù)是歷史數(shù)據(jù)。
(3) 數(shù)據(jù)倉庫中的數(shù)據(jù)是按照時(shí)間順序追加的,它們都帶有時(shí)間屬性。
數(shù)據(jù)倉庫是基于數(shù)據(jù)簡拿庫技術(shù)的,運(yùn)咐孫是研究如何將大規(guī)模復(fù)雜的數(shù)據(jù)更有效的組織用于方便使用的技術(shù)。這是我搞這么多年數(shù)據(jù)倉庫的認(rèn)識(shí)。旁鏈
什么是數(shù)據(jù)庫的概念結(jié)構(gòu)
每個(gè)階段的主要工作絕猛是什么?解: (1) 按照規(guī)范化的設(shè)計(jì)方法,以及數(shù)鍵鎮(zhèn)據(jù)庫應(yīng)用系統(tǒng)開發(fā)過程,數(shù)據(jù)庫的設(shè)計(jì)過程可分為以下六個(gè)設(shè)計(jì)階段需求分析、稿宏粗概念結(jié)構(gòu)設(shè)計(jì)
={ E→G,G→E,F(xiàn)→(E,G),H→(E,G),
(F,H)→E}
(1)求出R的所有候選關(guān)鍵字;
(2)根據(jù)函數(shù)依賴關(guān)系,確定關(guān)系模式R屬于第幾范式;
(3)將R分解為3NF,并保持無損連接性和函數(shù)依賴保持性;
(4)求出F的最小函數(shù)依賴集。
參考答案:
(1)R的候選關(guān)鍵字為:(F,H)
(2)R為:1NF
(3)分解為:
(,)、(,)、(,)、(,{})
(4)最小函數(shù)依賴集為:
按定理4.3,求最小函數(shù)依賴集步驟:
F=
=
=
10、試問下列關(guān)系模式更高屬于第幾范式,并解釋其原因。
(1)R(A,B,C,D),F(xiàn)=。
(2)R(A,B,C,D,E),F(xiàn)=。
(3)R(A,B,C,D),F(xiàn)=。
(4)R(A,B,C),F(xiàn)=。
(5)R(A,B,C),F(xiàn)=。
(6)R(A,B,C,D),F(xiàn)=。
(7)R(A,B,C,D),F(xiàn)=。
參考答案:
只依次寫出候選關(guān)鍵字與范式等級(范式按定義判定,具體略)
(1)AB 1NF
(2)AB,ENF
(3)AB,ADNF
(4)A,BBCNF
(5)C 2NF
(6)AD 1NF
(7)AD 1NF
二、填空題
1、對數(shù)據(jù)庫的保護(hù)一般包括 安全性 、 完整性 、 并發(fā)控制 和 數(shù)據(jù)恢復(fù) 四個(gè)方面的內(nèi)容。
2、對數(shù)據(jù)庫如或 安全 性的保護(hù)就是指要采取措施,防止庫中數(shù)據(jù)被非法訪問、修改,甚至惡意破壞。
3、安全性控制的一般方法有 用戶標(biāo)識(shí)和鑒余清別 、 用戶存取權(quán)限控制 、 視圖機(jī)制 、
數(shù)據(jù)加密 和 審計(jì) 五種。
4、用戶鑒定機(jī)制包括 用戶標(biāo)識(shí)定義 和 用戶身份驗(yàn)證 兩個(gè)部分。
5、每個(gè)數(shù)據(jù)均需指明其數(shù)據(jù)類型和取值范圍,這是數(shù)據(jù) 完整性 約束所必需的。
6、在SQL中, COMMIT 語句用于提交事務(wù), ROLLBACK 語句用于回滾事務(wù)。
7、加鎖對象的大小被稱為加鎖的 粒度 。
8、對死鎖的處理主要有兩類方法,一是 預(yù)防死鎖的發(fā)生 ,二是 檢測死鎖發(fā)現(xiàn)后予以消除死鎖 。
9、解除死鎖最常用的方法是 撤消一些陷入死鎖的事務(wù) 。
10、基于日志的恢復(fù)方法需要使用兩種冗余數(shù)據(jù),即 后備數(shù)據(jù)庫 和 日志文件 。
三、簡單題
1、簡述數(shù)據(jù)庫保護(hù)的主要內(nèi)容。
對數(shù)據(jù)庫的保護(hù)一般包括4個(gè)方面的內(nèi)容,一是對數(shù)據(jù)庫完整性的保護(hù),即保證庫中的數(shù)據(jù)是正確的和相容的,符合完整性約束條件的;二是對數(shù)據(jù)庫安全性的保護(hù),即防止庫中數(shù)據(jù)被非法訪問、修改,甚至惡意破壞;三是對并發(fā)的事務(wù)進(jìn)行控制,保證數(shù)據(jù)庫的一致性;四是在發(fā)生故障后,對數(shù)據(jù)庫進(jìn)行恢復(fù),盡量減少故障造成的損失。
2、什么是數(shù)據(jù)庫的安全性?簡述DBMS提供的安全性控制功能包括哪些內(nèi)容。
解:
(1)數(shù)據(jù)庫的安全性是指保護(hù)數(shù)據(jù)庫以防止非法使用所造成數(shù)據(jù)的泄露、更改或破壞。
(2)常采取的安全保護(hù)措施有用戶鑒定、存取控制、視圖保護(hù)、審計(jì)和數(shù)據(jù)加密等。
4、什么是數(shù)據(jù)庫的完整性?DBMS提供哪些完整性規(guī)則,簡述其內(nèi)容。
(1)數(shù)據(jù)庫的完整性是指保護(hù)數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和相容性,防止錯(cuò)誤的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫造成無效操作。
(2)DBMS提供實(shí)體完整性規(guī)則、參照完整性規(guī)則及用戶自定義完整性規(guī)則
為保障數(shù)據(jù)庫的完整性,數(shù)據(jù)庫管理系統(tǒng)應(yīng)提供完整性約束的定義機(jī)制和檢查機(jī)制。
5、數(shù)據(jù)庫的安全性保護(hù)和完整性保護(hù)有何主要區(qū)別?
解:
數(shù)據(jù)庫的完整性和安全性是數(shù)據(jù)庫保護(hù)的兩個(gè)不同的方面。
安全性是保護(hù)數(shù)據(jù)庫,以防止非法使用所造成數(shù)據(jù)的泄露、更改或破壞,安全性措施的防范對象是非法用戶和非法操作;完整性是防止合法用戶使用數(shù)據(jù)庫時(shí)向數(shù)據(jù)庫中加入不符合語義的數(shù)據(jù),完整性措施的防范對象是不合語義的數(shù)據(jù),即不正確的數(shù)據(jù)。
6、什么是事務(wù)?簡述事務(wù)的ACID特性,事務(wù)的提交和回滾是什么意思?
解:
(1)事務(wù)是數(shù)據(jù)庫系統(tǒng)中豎橡前執(zhí)行的一個(gè)工作單位,它是由用戶定義的一組操作序列組成。
一個(gè)事務(wù)可以是一組SQL語句、一條SQL語句或整個(gè)程序,一個(gè)應(yīng)用程序可以包括多個(gè)事務(wù)。事務(wù)的開始與結(jié)束可以由用戶顯式控制。如果用戶沒有顯式地定義事務(wù),則由DBMS按照缺省規(guī)定自動(dòng)劃分事務(wù)。
(2)事務(wù)是由有限的數(shù)據(jù)庫操作序列組成,但并不是任意的數(shù)據(jù)庫操作序列都能成為事務(wù),為了保護(hù)數(shù)據(jù)的完整性,一般要求事務(wù)具有以下四個(gè)特征:
1)原子性(Atomicity)2)一致性(Consistency)3)隔離性(Isolation)4)持久性(Durability)事務(wù)上述四個(gè)性質(zhì)的英文術(shù)語的之一個(gè)字母分別為A、C、I、D。因此,這四個(gè)性質(zhì)也稱為事務(wù)的ACID準(zhǔn)則。
(3)
COMMIT表示事務(wù)的提交,即將事務(wù)中所有對數(shù)據(jù)庫的更新寫回到磁盤上的物理數(shù)據(jù)庫中去,此時(shí)事務(wù)正常結(jié)束;
ROLLBACK表示事務(wù)的回滾,即在事務(wù)運(yùn)行的過程中發(fā)生了某種故障,事務(wù)不能繼續(xù)執(zhí)行,系統(tǒng)將事務(wù)中對數(shù)據(jù)庫的所有已完成的更新操作全部撤銷,再回滾到事務(wù)開始時(shí)的狀態(tài)。
7、數(shù)據(jù)庫管理系統(tǒng)中為什么要有并發(fā)控制機(jī)制?
解:
每個(gè)用戶在存取數(shù)據(jù)庫中的數(shù)據(jù)時(shí),可能是串行執(zhí)行,即每個(gè)時(shí)刻只有一個(gè)用戶程序運(yùn)行,也可能是多個(gè)用戶并行地存取數(shù)據(jù)庫。數(shù)據(jù)庫的更大特點(diǎn)之一就是數(shù)據(jù)資源是共享的,串行執(zhí)行意味著一個(gè)用戶在運(yùn)行程序時(shí),其他用戶程序必須等到這個(gè)用戶程序結(jié)束才能對數(shù)據(jù)庫進(jìn)行存取,這樣數(shù)據(jù)庫系統(tǒng)的利用率會(huì)極低。因此,為了充分利用數(shù)據(jù)庫資源,很多時(shí)候數(shù)據(jù)庫用戶都是對數(shù)據(jù)庫系統(tǒng)并行存取數(shù)據(jù),但這樣就會(huì)發(fā)生多個(gè)用戶并發(fā)存取同一數(shù)據(jù)塊的情況,如果對并發(fā)操作不加控制可能會(huì)產(chǎn)生操作沖突,破壞數(shù)據(jù)的完整性。即發(fā)生所謂的丟失更新、污讀、不可重讀等現(xiàn)象。
(2)實(shí)現(xiàn)并發(fā)控制的方法主要有兩種:封鎖(Lock)技術(shù)和時(shí)標(biāo)(Timestamping)技術(shù)。
9、什么是封鎖?封鎖的基本類型有哪幾種?含義是什么?
解:
(1)所謂封鎖就是當(dāng)一個(gè)事務(wù)在對某個(gè)數(shù)據(jù)對象(可以是數(shù)據(jù)項(xiàng)、記錄、數(shù)據(jù)集、以至整個(gè)數(shù)據(jù)庫)進(jìn)行操作之前,必須獲得相應(yīng)的鎖,以保證數(shù)據(jù)操作的正確性和一致性。
(2)基本的封鎖類型有兩種:排它鎖和共享鎖。
1)排它鎖(Exclusive Lock):排它鎖又稱寫鎖,簡稱為X鎖,其采用的原理是禁止并發(fā)操作。當(dāng)事務(wù)T對某個(gè)數(shù)據(jù)對象R實(shí)現(xiàn)X封鎖后,其他事務(wù)要等T解除X封鎖以后,才能對R進(jìn)行封鎖。這就保證了其他事務(wù)在T釋放R上的鎖之前,不能再對R進(jìn)行操作。
2)共享鎖(Share Lock):共享鎖又稱讀鎖,,簡稱為S鎖,其采用的原理是允許其他用戶對同一數(shù)據(jù)對象進(jìn)行查詢,但不能對該數(shù)據(jù)對象進(jìn)行修改。當(dāng)事務(wù)T對某個(gè)數(shù)據(jù)對象R實(shí)現(xiàn)S封鎖后,其他事務(wù)只能對R加S鎖,而不能加X鎖,直到T釋放R上的S鎖。這就保證了其他事務(wù)在T釋放R上的S鎖之前,只能讀取R,而不能再對R作任何修改。
11、什么是活鎖?如何處理?
解:
(1)封鎖技術(shù)可有效解決并行操作引起的數(shù)據(jù)不一致性問題,但也可產(chǎn)生新的問題,即可能產(chǎn)生活鎖和死鎖問題。
活鎖(Livelock):當(dāng)某個(gè)事務(wù)請求對某一數(shù)據(jù)的排它性封鎖時(shí),由于其他事務(wù)一直優(yōu)先得到對該數(shù)據(jù)的封鎖與操作而使這個(gè)事務(wù)一直處于等待狀態(tài),這種狀態(tài)形成活鎖。
(2)避免活鎖的簡單方法是采用先來先服務(wù)的策略,按照請求封鎖的次序?qū)κ聞?wù)排隊(duì),一旦記錄上的鎖釋放,就使申請隊(duì)列中的之一個(gè)事務(wù)獲得鎖。
12、什么是死鎖?消除死鎖的常用方法有哪些?請簡述之。
(1)在同時(shí)處于等待狀態(tài)的兩個(gè)或多個(gè)事務(wù)中,每個(gè)事務(wù)都在等待其中另一個(gè)事務(wù)解除封鎖,它才能繼續(xù)執(zhí)行下去,造成任何一個(gè)事務(wù)都無法繼續(xù)執(zhí)行,這種狀態(tài)稱為死鎖。
(2)發(fā)生死鎖的必要條件有以下四條:
①互斥條件②不可搶占條件③部分分配條件:④循環(huán)等待條件
①一次加鎖法
一次加鎖法是每個(gè)事物必須將所有要使用的數(shù)據(jù)對象全部依次加鎖,并要求加鎖成功,只要一個(gè)加鎖不成功,表示本次加鎖失敗,則應(yīng)該立即釋放所有已加鎖成功的數(shù)據(jù)對象,然后重新開始從頭加鎖。
②順序加鎖法
順序加鎖法是預(yù)先對所有可加鎖的數(shù)據(jù)對象規(guī)定一個(gè)加鎖順序,每個(gè)事務(wù)都需要按此順序加鎖,在釋放時(shí),按逆序進(jìn)行。
14、數(shù)據(jù)庫運(yùn)行過程中可能產(chǎn)生的故障有哪幾類
(1)數(shù)據(jù)庫運(yùn)行過程中可能會(huì)出現(xiàn)各種各樣的故障,這些故障可分為以下三類:事務(wù)故障、系統(tǒng)故障和介質(zhì)故障。
16、什么是日志文件?為什么要在系統(tǒng)中建立日志文件?
解:
(1)日志文件是用來記錄事務(wù)對數(shù)據(jù)庫的更新操作的文件。對數(shù)據(jù)庫的每次修改,都將把被修改項(xiàng)目的舊值和新值寫在一個(gè)叫做運(yùn)行日志的文件中,目的是為數(shù)據(jù)庫的恢復(fù)保留依據(jù)。
典型的日志文件主要包含以下內(nèi)容:1)更新數(shù)據(jù)庫的事務(wù)標(biāo)識(shí)(標(biāo)明是哪個(gè)事務(wù));2)操作的類型(插入、刪除或修改);3)操作對象;4)更新前數(shù)據(jù)的舊值(對于插入操作而言,沒有舊值);5)更新后數(shù)據(jù)的新值(對于刪除操作而言,沒有新值);6)事務(wù)處理中的各個(gè)關(guān)鍵時(shí)刻(事務(wù)的開始、結(jié)束及其真正回寫的時(shí)間)。
二、填空題
1、在設(shè)計(jì)分E-R圖時(shí),由于各個(gè)子系統(tǒng)分別面向不同的應(yīng)用,所以各個(gè)分E-R圖之間難免存在沖突,這些沖突主要包括 命名沖突 、 屬性沖突 和 結(jié)構(gòu)沖突 三類。
2、數(shù)據(jù)字典中的 數(shù)據(jù)項(xiàng) 是不可再分的數(shù)據(jù)單位。
3、若在兩個(gè)局部E-R圖中都有實(shí)體“零件”的“重量”屬性,而所用重量單位分別為公斤和克,則稱這兩個(gè)E-R圖存在 屬性 沖突。
5、確定數(shù)據(jù)庫的物理結(jié)構(gòu)主要包括三方面內(nèi)容,即: 確定數(shù)據(jù)存放位置和存儲(chǔ)結(jié)構(gòu) 、 確定數(shù)據(jù)存取方法 和 系統(tǒng)配置 。
6、將關(guān)系R中在屬性A上具有相同值的元組集中存放在連續(xù)的物理塊上,稱為對關(guān)系R基于屬性A進(jìn)行 聚簇 。
7、數(shù)據(jù)庫設(shè)計(jì)的重要特點(diǎn)之一要把 結(jié)構(gòu)(數(shù)據(jù)) 設(shè)計(jì)和 行為(處理) 設(shè)計(jì)密切結(jié)合起來,并以 結(jié)構(gòu)(數(shù)據(jù)) 為核心而展開。
8、數(shù)據(jù)庫設(shè)計(jì)一般分為如下六個(gè)階段: 需求分析 、 概念結(jié)構(gòu)設(shè)計(jì) 、 邏輯結(jié)構(gòu)設(shè)計(jì) 、數(shù)據(jù)庫物理設(shè)計(jì)、數(shù)據(jù)庫實(shí)施、數(shù)據(jù)庫運(yùn)行與維護(hù)。
9、概念設(shè)計(jì)的結(jié)果是得到一個(gè)與 計(jì)算機(jī)與DBMS 無關(guān)的模型。
10、在數(shù)據(jù)庫設(shè)計(jì)中, 數(shù)據(jù)字典 是系統(tǒng)各類數(shù)據(jù)的描述的。
三、簡答題
1、數(shù)據(jù)庫設(shè)計(jì)分為哪幾個(gè)了階段?每個(gè)階段的主要工作是什么?
解:
(1) 按照規(guī)范化的設(shè)計(jì)方法,以及數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)過程,數(shù)據(jù)庫的設(shè)計(jì)過程可分為以下六個(gè)設(shè)計(jì)階段需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫的實(shí)施、數(shù)據(jù)庫運(yùn)行和維護(hù)。
(2) 以下是數(shù)據(jù)庫設(shè)計(jì)六個(gè)步驟的具體內(nèi)容:
1、需求分析階段2、概念結(jié)構(gòu)設(shè)計(jì)階段3、邏輯結(jié)構(gòu)設(shè)計(jì)階段4、物理設(shè)計(jì)階段
5、數(shù)據(jù)庫實(shí)施階段6、數(shù)據(jù)庫運(yùn)行與維護(hù)階段
5、什么是E-R圖?構(gòu)成E-R圖的基本要素是什么?
(1)E-R圖即是實(shí)體-聯(lián)系圖,是信息世界概念模型的一種。
(2)E-R圖提供了表示實(shí)體型、屬性和聯(lián)系的方法。
實(shí)體型:用矩形表示,矩形框內(nèi)寫明實(shí)體名。
屬性:用橢圓表示,橢圓形內(nèi)寫明屬性名。并用無向邊將其與相應(yīng)的實(shí)體連接起來。
聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無向邊分別與有關(guān)實(shí)體連接起來,同時(shí)在無向邊旁標(biāo)上聯(lián)系的類型(1:1、1:n或m:n)。
6、用E-R圖表示概念模式有什么好處?
解:
概念模式是各種數(shù)據(jù)模型的共同基礎(chǔ),它比數(shù)據(jù)模型更獨(dú)立于機(jī)器、更抽象。將概念結(jié)構(gòu)設(shè)計(jì)從設(shè)計(jì)過程中獨(dú)立出來,可以帶來以下好處:
(1) 任務(wù)相對單一化,設(shè)計(jì)復(fù)雜程度大大降低,便于管理。
(2) 概念模式不受具體的DBMS的限制,也獨(dú)立于存儲(chǔ)安排和效率方面的考慮,因此,更穩(wěn)定。
(3) 概念模型不含具體DBMS所附加的技術(shù)細(xì)節(jié),更容易被用戶理解,因而更能準(zhǔn)確的反映用戶的信息需求。
8、一個(gè)圖書館理系統(tǒng)中有如下 信息:
圖書:書號、書名、數(shù)量、位置
借書人:借書證號、姓名、單位
出版社:出版社名、郵編、地址、、E-mail
其中約定:任何人可以借多種書,任何一種書可以被多個(gè)人借,借書和還書時(shí),要登記相應(yīng)的借書日期和還書日期;一個(gè)出版社可以出版多種書籍,同一本書僅為一個(gè)出版社所出版,出版社名具有惟一性。
根據(jù)以上情況,完成如下設(shè)計(jì):
(1)設(shè)計(jì)系統(tǒng)的E-R圖;
(2)將E-R圖轉(zhuǎn)換為關(guān)系模式;
(3)指出轉(zhuǎn)換后的每個(gè)關(guān)系模式的關(guān)系鍵。
解:
(1)
(2)與(3)(帶下劃線的為主碼)
借書人(借書證號,姓名,單位)
借閱(借書證號,書號,借書日期,還書日期)
圖書(書號,書名,數(shù)量,位置)
出版(書號,出版社名)
出版社(出版社名,郵編,地址,,E-mail)
數(shù)據(jù)庫事務(wù)的幾種粒度的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫事務(wù)的幾種粒度,數(shù)據(jù)庫事務(wù)的粒度探討,數(shù)據(jù)庫死鎖,并發(fā)問題,數(shù)據(jù)倉庫的主要特征,什么是數(shù)據(jù)庫的概念結(jié)構(gòu)的信息別忘了在本站進(jìn)行查找喔。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
本文標(biāo)題:數(shù)據(jù)庫事務(wù)的粒度探討(數(shù)據(jù)庫事務(wù)的幾種粒度)
本文來源:http://www.5511xx.com/article/djgogij.html


咨詢
建站咨詢
