sql sever 併發控制思考題

  • 作者:由 匿名使用者 發表于 攝影
  • 2022-10-17

1。設T1、T2、T3是如下的三個事務:

T1:A=A+3

T2:A=A*2

T3:A=A^2(A的平方)

設A的初值為0:

(1)若這三個事務允許併發執行,則有多少種可能的正確排程結果,請一一列舉出來;

(2)寫出一個可序列化的併發排程和結果;

(3)寫出一個非可序列化的併發排程和結果;

(4)若這三個事務都遵守兩段鎖協議,請給出一個不產生死鎖的可序列化排程;

(5)若這三個事務都遵守兩段鎖協議,請給出一個產生死鎖的排程。

2。考慮下列兩個事務:

T1:READ(A) T2:READ(B)

READ(B) READ(A)

IF A=0 THEN B:=B+1 IF B=0 THEN A:=A+1;

WRITE(B) WRITE(A)

設資料庫的一致性要求是A=0 or B=0,A、B的初值為0。

(1)寫出這兩個事務的所有序列操作及其執行結果;

(2)寫一個遵守兩段鎖協議的且不發生死鎖的併發排程策略;

(3)寫一個遵守兩端鎖協議的發生死鎖的併發排程策略。

sql sever 併發控制思考題wpals47 2010-12-24

當多個使用者同時更新同一資料的時候,由於更新可能導致資料的不一致性,使得程式的業務資料發生錯誤,這種情況可以稱之為併發。在ADO 。NET中,併發的處理可以透過三種方式來控制:保守式併發控制、開發式併發控制以及最後更新生效方式。

— 保守式併發控制:資料從資料庫取出之後,一直處於鎖定的狀態,其他使用者不能獲取該資料,直至資料更新完畢之後,使用者才能取出該資料進行操作。此種控制方式對於效能和資源佔用得很多,由於只能同時有一個使用者對資料享用操作權,所以可能會在正常業務中,影響其他使用者的處理程序。但此控制方式可以完全保證資料的完整性。該方式可以透過。NET提供的事務機制來實現,前提是資料來源需要支援事務。

— 開發式併發控制:資料在更新之前都是可以被其他使用者使用的,只有在更新的時候,才鎖定記錄。但更新的時候,會比對與查詢之初的資料是否吻合,如果不一致,則不執行修改。此種控制方式也可以完全保證資料的完整性,其優點是不會佔用其他使用者訪問該資料的許可權,其缺點是由於其他使用者可能已經更新了這些資料,導致本次更新可能不會完成。對於此種控制方式,多以開發人員透過程式本身的業務邏輯來實現。

— 最後更新生效方式:此種方式同上,只有在資料更新的時候,其他使用者才不可使用,但更新的時候不檢查是否與開始資料一致,而直接對其更新。此種方式對於更新的併發性有很大的支援,但缺點是可能引發前後資料的不一致。此種方式適合可以滿足此需求的業務場景使用。

注意:資料庫的併發處理並不是一成不變的,不同的業務場景對資料庫的併發要求是不一樣的,可以根據具體情況具體分析

sql sever 併發控制思考題pblnwsb 2011-01-04

ACCESS是單機資料庫,SQL SERVER就不是了。從SERVER字眼就可以看出來。並且SQL SERVER裡面的功能是ACCESS不能比較的。2者實際沒有可比性。關於流量,SQL支援很多技術以應付大規模的任務,比如對硬體效能的利用,還有對於處理併發訪問的LOCK功能,等等。

Top