數(shù)據(jù)庫(kù)并發(fā)問(wèn)題詳述_Access數(shù)據(jù)庫(kù)教程
推薦:處理加了密碼的MDB文件 當(dāng) MDB 文件加了密碼,直接由 Access 打印MDB文件時(shí),會(huì)出現(xiàn)密碼對(duì)話(huà)框,詢(xún)問(wèn)密碼。但是若要由 VB 程序中打印,必須更改 VB 程序中打開(kāi)MDB文件的指令,否則會(huì)出現(xiàn)錯(cuò)誤信息!以下針對(duì)各種情
問(wèn)題背景及特點(diǎn):
我們?cè)谑褂枚嘤脩?hù)數(shù)據(jù)庫(kù)時(shí)常常會(huì)碰到數(shù)據(jù)更新失敗、刪除失等情況,如果有多個(gè)用戶(hù)且同時(shí)訪問(wèn)一個(gè)數(shù)據(jù)庫(kù)則當(dāng)他們的事務(wù)同時(shí)使用相同的數(shù)據(jù)時(shí)可能會(huì)發(fā)生并發(fā)問(wèn)題。
并發(fā)問(wèn)題包括:
1、丟失或覆蓋更新。(幻像讀)
2、未確認(rèn)的相關(guān)性(臟讀)
3、不一致的分析(非重復(fù)讀)
詳細(xì)描述:
1、丟失更新
當(dāng)兩個(gè)或多個(gè)事務(wù)選擇同一行,然后基于最初選定的值更新該行時(shí),會(huì)發(fā)生丟失更新問(wèn)題。每個(gè)事務(wù)都不知道其它事務(wù)的存在。最后的更新將重寫(xiě)由其它事務(wù)所做的更新,這將導(dǎo)致數(shù)據(jù)丟失。
例如,兩個(gè)編輯人員制作了同一文檔的電子復(fù)本。每個(gè)編輯人員獨(dú)立地更改其復(fù)本,然后保存更改后的復(fù)本,這樣就覆蓋了原始文檔。最后保存其更改復(fù)本的編輯人員覆蓋了第一個(gè)編輯人員所做的更改。如果在第一個(gè)編輯人員完成之后第二個(gè)編輯人員才能進(jìn)行更改,則可以避免該問(wèn)題。
2、未確認(rèn)的相關(guān)性(臟讀)
當(dāng)?shù)诙䝼(gè)事務(wù)選擇其它事務(wù)正在更新的行時(shí),會(huì)發(fā)生未確認(rèn)的相關(guān)性問(wèn)題。第二個(gè)事務(wù)正在讀取的數(shù)據(jù)還沒(méi)有確認(rèn)并且可能由更新此行的事務(wù)所更改。
例如,一個(gè)編輯人員正在更改電子文檔。在更改過(guò)程中,另一個(gè)編輯人員復(fù)制了該文檔(該復(fù)本包含到目前為止所做的全部更改)并將其分發(fā)給預(yù)期的用戶(hù)。此后,第一個(gè)編輯人員認(rèn)為目前所做的更改是錯(cuò)誤的,于是刪除了所做的編輯并保存了文檔。分發(fā)給用戶(hù)的文檔包含不再存在的編輯內(nèi)容,并且這些編輯內(nèi)容應(yīng)認(rèn)為從未存在過(guò)。如果在第一個(gè)編輯人員確定最終更改前任何人都不能讀取更改的文檔,則可以避免該問(wèn)題。
3.不一致的分析(非重復(fù)讀)
當(dāng)?shù)诙䝼(gè)事務(wù)多次訪問(wèn)同一行而且每次讀取不同的數(shù)據(jù)時(shí),會(huì)發(fā)生不一致的分析問(wèn)題。不一致的分析與未確認(rèn)的相關(guān)性類(lèi)似,因?yàn)槠渌聞?wù)也是正在更改第二個(gè)事務(wù)正在讀取的數(shù)據(jù)。然而,在不一致的分析中,第二個(gè)事務(wù)讀取的數(shù)據(jù)是由已進(jìn)行了更改的事務(wù)提交的。而且,不一致的分析涉及多次(兩次或更多)讀取同一行,而且每次信息都由其它事務(wù)更改;因而該行被非重復(fù)讀取。
例如,一個(gè)編輯人員兩次讀取同一文檔,但在兩次讀取之間,作者重寫(xiě)了該文檔。當(dāng)編輯人員第二次讀取文檔時(shí),文檔已更改。原始讀取不可重復(fù)。如果只有在作者全部完成編寫(xiě)后編輯人員才可以讀取文檔,則可以避免該問(wèn)題。
4、幻像讀
當(dāng)對(duì)某行執(zhí)行插入或刪除操作,而該行屬于某個(gè)事務(wù)正在讀取的行的范圍時(shí),會(huì)發(fā)生幻像讀問(wèn)題。事務(wù)第一次讀的行范圍顯示出其中一行已不復(fù)存在于第二次讀或后續(xù)讀中,因?yàn)樵撔幸驯黄渌聞?wù)刪除。同樣,由于其它事務(wù)的插入操作,事務(wù)的第二次或后續(xù)讀顯示有一行已不存在于原始讀中。
例如,一個(gè)編輯人員更改作者提交的文檔,但當(dāng)生產(chǎn)部門(mén)將其更改內(nèi)容合并到該文檔的主復(fù)本時(shí),發(fā)現(xiàn)作者已將未編輯的新材料添加到該文檔中。如果在編輯人員和生產(chǎn)部門(mén)完成對(duì)原始文檔的處理之前,任何人都不能將新材料添加到文檔中,則可以避免該問(wèn)題。
從上面可以看到,解決并發(fā)主要是用到了鎖和事務(wù)。
鎖:給記錄或表加上鎖是為了對(duì)當(dāng)前操作對(duì)象加上一個(gè)狀態(tài)表示位,讓其它用戶(hù)在獲取編輯權(quán)限時(shí)有了判斷。
事務(wù):是為了保證一組操作的完整性。(要么就全部成功,要么就全部失敗)
一般處理并發(fā)問(wèn)題時(shí)我這樣做:
1、開(kāi)啟事務(wù)。
2、申請(qǐng)寫(xiě)權(quán)限,也就是給對(duì)象(表或記錄)加鎖。
3、如果失敗,則結(jié)束事務(wù),過(guò)一會(huì)重試。
4、如果成功,也就是給對(duì)象加鎖成功,防止其它用戶(hù)再用同樣的方式打開(kāi)。
5、進(jìn)行編輯操作。
6、寫(xiě)入所進(jìn)行的編輯結(jié)果。
7、如果寫(xiě)入成功,則提交事務(wù),完成操作。
8、如果寫(xiě)入失敗,則回滾事務(wù),取消提交。
9、(7.8)兩步操作已釋放了鎖定的對(duì)象,恢復(fù)到操作前的狀態(tài)。
分享:一個(gè)ACCESS數(shù)據(jù)庫(kù)數(shù)據(jù)傳遞的方法一直以來(lái),ACCESS數(shù)據(jù)庫(kù)中的申報(bào)數(shù)據(jù)在分公司與總公司之間傳遞,用EXCEL或DBASE、TXT甚至ACCESS等格式,我總覺(jué)得不太理想。最近看了一本書(shū),不經(jīng)意間發(fā)現(xiàn)了一個(gè)方法,使用ACCESS數(shù)據(jù)庫(kù)生成申報(bào)
- Access數(shù)據(jù)庫(kù)安全策略之ASP式
- 第N次被ACCESS的關(guān)鍵字涮
- Access中用Jet SQL語(yǔ)句刪除表關(guān)系
- Access報(bào)表打印如何自動(dòng)分頁(yè)
- Access完成累計(jì)余額的計(jì)算
- 搭建Access為主的Mdb數(shù)據(jù)庫(kù)
- 一句sql更新兩個(gè)表并可更新對(duì)應(yīng)的字段值具體實(shí)現(xiàn)
- MySQL查詢(xún)優(yōu)化:連接查詢(xún)排序limit(join、order by、limit語(yǔ)句)介紹
- 內(nèi)網(wǎng)ssh/mysql登錄緩慢的解決方法
- 使用準(zhǔn)則進(jìn)行條件查詢(xún)--1.4.從窗體中選擇查詢(xún)的條件
- 中文Access2000速成教程--1.1 使用“向?qū)А痹O(shè)計(jì)數(shù)據(jù)庫(kù)
- 中文Access2000速成教程--1.3 在“設(shè)計(jì)”視圖中設(shè)計(jì)表
Access數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Access數(shù)據(jù)庫(kù)教程推薦
- 揭秘WEB開(kāi)發(fā)中防止ACCESS數(shù)據(jù)庫(kù)被下載的方法
- 兩個(gè)未公開(kāi)的ACCESS方法的使用技巧
- 解讀access處理重復(fù)記錄的方法
- 用Access創(chuàng)建簡(jiǎn)單MIS管理系統(tǒng)
- 詳解如何遠(yuǎn)程調(diào)用Access數(shù)據(jù)庫(kù)
- 解析Access與Sql Server之ASP代碼比較
- 解析ACCESS作為網(wǎng)站數(shù)據(jù)庫(kù)的弊端
- 怎樣解決Access數(shù)據(jù)庫(kù)出現(xiàn)0x80004005的問(wèn)題
- 怎樣計(jì)算Access完成累計(jì)余額
- 揭秘如何在Access數(shù)據(jù)庫(kù)中使用SQL
猜你也喜歡看這些
- Access字符串處理函數(shù)整理
- 如何遠(yuǎn)程調(diào)用ACCESS數(shù)據(jù)庫(kù)
- 解析MDB與XLS文件互相轉(zhuǎn)換方法
- 數(shù)據(jù)庫(kù)并發(fā)問(wèn)題詳述
- 數(shù)據(jù)庫(kù)查詢(xún)優(yōu)化的實(shí)用技巧
- 揭秘在設(shè)計(jì)視圖中Access允許的九種數(shù)據(jù)類(lèi)型
- 解決SQL Server轉(zhuǎn)ACCESS自動(dòng)編號(hào)問(wèn)題
- 使用準(zhǔn)則進(jìn)行條件查詢(xún)
- Access日期與時(shí)間函數(shù)匯總
- Access出現(xiàn)所有記錄中均未找到搜索關(guān)鍵字的錯(cuò)誤解決
- 相關(guān)鏈接:
- 教程說(shuō)明:
Access數(shù)據(jù)庫(kù)教程-數(shù)據(jù)庫(kù)并發(fā)問(wèn)題詳述
。