常用的數(shù)據(jù)加鎖方法(以O(shè)RACLE 與PB連接為例) A 在客戶端編程方法:在客戶端的編程處理的方法最簡(jiǎn)單,調(diào)試也很直觀、方便。但是這種方法僅僅在中、小型網(wǎng)絡(luò)中可以使用。因?yàn)楫?dāng)網(wǎng)絡(luò)用戶數(shù)量增加,或應(yīng)用程序在客戶端應(yīng)用過程中意外中斷(死機(jī),退出),則可能造成數(shù)據(jù)行的死鎖。其他用戶無法正確獨(dú)占加鎖。但是實(shí)際應(yīng)用表明此種方法在網(wǎng)絡(luò)自身可靠性好、用戶數(shù)量不大時(shí)經(jīng)常被采納。
B 在客戶端按傳輸(Transaction )方法處理:將要提交的所有SQL任務(wù)作為多個(gè)子串傳送到服務(wù)器端,用動(dòng)態(tài)SQL方法在客戶端一次傳輸完成后,在服務(wù)器端一次執(zhí)行完成,只有當(dāng)事務(wù)執(zhí)行正確,才能提交, 否則回滾。這樣在執(zhí)行多個(gè)表操作提交時(shí),數(shù)據(jù)執(zhí)行加鎖的時(shí)間影響將大大減小。這樣極大程度的緩解了多表共享數(shù)據(jù)的加鎖問題。好處是不需要服務(wù)器端的調(diào)試,但是,編程調(diào)試過程復(fù)雜。但是實(shí)際效果與第一種方法基本一致。
C 存儲(chǔ)過程方法:這種方法是直接調(diào)用服務(wù)器的存儲(chǔ)過程,所有的對(duì)Client端程序代碼可以大大減少,數(shù)據(jù)一致性,并發(fā)性,安全性都能得到保證。客戶端的異常通常不會(huì)影起數(shù)據(jù)的死鎖。