Oracle 資料庫針對錶主鍵列並發導致行級鎖簡單示範

來源:互聯網
上載者:User

本文內容
•軟體環境
•簡單示範 Oracle 資料庫並發導致行級鎖
本文簡單示範針對錶主鍵並發導致的行級鎖。並發是兩個以上的使用者對同樣的資料進行修改(包括插入、刪除和修改)。鎖的產生是因為並發。沒有並發,就沒有鎖。並發的產生是因為系統需要,系統需要是因為使用者需要。

軟體環境
--------------------------------------------------------------------------------
•Windows 2003 Server
•Oracle 11g Release 1 (11.1)
簡單示範 Oracle 資料庫並發導致行級鎖
首先,開啟一個會話 session 1,執行如下操作:

複製代碼 代碼如下:SQL> select distinct sid from V$mystat;

SID
----------
118
SQL> create table t (x int primary key);
表已建立。
SQL> insert into t values(1);
已建立 1 行。
SQL> update t set x=10 where x=1;
已更新 1 行。
SQL>

先查看本次會話的 SID,然後建立一個表 t,只有一個名為 x 的欄位,且該欄位為主鍵,插入一條資料,並更新該資料。

接下來,開啟另一個會話 session 2: 複製代碼 代碼如下:SQL> select distinct sid from V$mystat;

SID
----------
137
SQL> update t set x=10 where x=1;

此時,該會話被“卡”在這裡不動。只是游標一直在閃……因為,session 2 被 session 1 阻塞。
現在,查看鎖定視圖 V$LOCK。 複製代碼 代碼如下:SQL> select sid,type,id1,id2,lmode,request,block
2 from v$lock where sid in (118,137)
3 order by sid;


已選擇6行。
SQL>
說明:“TYPE”列表示鎖的類型;“LMODE”列表示鎖的模式;“ID1”和“ID2”列是鎖的相關資訊。“REQUEST”列是正在什麼鎖。

SID=118 是第一個會話,SID=137 是第二個會話。第三行,第一個會話 BLOCK=1 表示這個會話正在阻塞其他會話,LMODE=6 表示鎖的模式,即行級獨佔鎖定。第六行,第二個會話 REQUEST=6 表示當前會話正在等待一個 LMODE=6 的鎖。注意,第三行和第六行的 ID1 和 ID2 列完全相同。因為它們指向統一資源,只不過一個是資源的擁有者(SID=118),一個是資源的等待者(SID=137)。

通過這個視圖,很容易發現所在——故障定位(trouble shooting)。會話 2 之所以被“卡”住,是因為會話 1 還沒提交,而在這張表上,又恰好有要求列值唯一性限制式。
通過 S識別碼,查看視圖 V$SESSION 就可以確定使用者資訊。 複製代碼 代碼如下:SQL> select machine from v$session where sid in (118,137);

MACHINE
----------------------------------------------------------------
NUODE\LN
NUODE\LN
SQL>

因為,兩個會話是同一台機器,所以名字一樣。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.