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

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


咨詢
建站咨詢
