數(shù)據(jù)庫(kù)鎖有哪些 怎么理解數(shù)據(jù)庫(kù)的鎖。一般鎖分別哪幾種?
怎么理解數(shù)據(jù)庫(kù)的鎖。一般鎖分別哪幾種?數(shù)據(jù)庫(kù)是許多用戶使用的共享資源。當(dāng)多個(gè)用戶同時(shí)訪問(wèn)數(shù)據(jù)時(shí),多個(gè)事務(wù)將同時(shí)訪問(wèn)相同的數(shù)據(jù)。如果不控制并發(fā)操作,可能會(huì)讀取和存儲(chǔ)不正確的數(shù)據(jù),破壞數(shù)據(jù)庫(kù)的一致性。鎖是
怎么理解數(shù)據(jù)庫(kù)的鎖。一般鎖分別哪幾種?
數(shù)據(jù)庫(kù)是許多用戶使用的共享資源。當(dāng)多個(gè)用戶同時(shí)訪問(wèn)數(shù)據(jù)時(shí),多個(gè)事務(wù)將同時(shí)訪問(wèn)相同的數(shù)據(jù)。如果不控制并發(fā)操作,可能會(huì)讀取和存儲(chǔ)不正確的數(shù)據(jù),破壞數(shù)據(jù)庫(kù)的一致性。鎖是實(shí)現(xiàn)數(shù)據(jù)庫(kù)并發(fā)控制的一項(xiàng)重要技術(shù)。當(dāng)事務(wù)在對(duì)數(shù)據(jù)對(duì)象進(jìn)行操作之前向系統(tǒng)發(fā)出鎖定數(shù)據(jù)對(duì)象的請(qǐng)求時(shí)。鎖定后,事務(wù)對(duì)數(shù)據(jù)對(duì)象具有一定的控制權(quán)。在事務(wù)釋放鎖之前,其他事務(wù)無(wú)法更新數(shù)據(jù)對(duì)象。數(shù)據(jù)庫(kù)中的鎖有兩種基本類型:獨(dú)占鎖(x鎖)和共享鎖(s鎖)。當(dāng)對(duì)數(shù)據(jù)對(duì)象應(yīng)用獨(dú)占鎖時(shí),其他事務(wù)無(wú)法讀取和修改它。具有共享鎖的數(shù)據(jù)對(duì)象可以被其他事務(wù)讀取,但不能修改。數(shù)據(jù)庫(kù)使用這兩種基本鎖類型來(lái)控制數(shù)據(jù)庫(kù)事務(wù)的并發(fā)性。
SQLServer數(shù)據(jù)庫(kù)的鎖類型有哪些?
數(shù)據(jù)庫(kù)必須具有鎖機(jī)制,以確保數(shù)據(jù)的完整性和一致性
鎖類型:
(1)共享鎖:
共享鎖用于所有只讀數(shù)據(jù)操作。
(2)修改鎖:
修改鎖用于鎖定在修改操作的初始化階段可能修改的資源,因此為了避免使用共享鎖造成死鎖
(3)獨(dú)占鎖:
獨(dú)占鎖是為修改數(shù)據(jù)而保留的。它鎖定的資源不能被其他事務(wù)讀取或修改。獨(dú)占鎖與其他鎖不兼容。
(4)結(jié)構(gòu)鎖分為結(jié)構(gòu)修改鎖(sch-m)和結(jié)構(gòu)穩(wěn)定鎖(sch-s)。在執(zhí)行表定義語(yǔ)言操作時(shí),SQLServer使用sch-m鎖,在編譯查詢時(shí),SQLServer使用sch-s鎖。
(5)Intent lock
Intent lock表示SQL server有意獲取較低級(jí)別資源的共享鎖或獨(dú)占鎖。
(6)Batch modify lock
使用Batch modify lock批量復(fù)制數(shù)據(jù)