構想一個使用手工鎖定解決一種業務需求的場景
網上交易時比如貨物有3件,在購買時需要按購買數量進行鎖定。
BYS@dg2>lock table t in share mode;手工鎖定一個表,設定鎖的級別為4
Table(s) Locked.
已經在T表上加上了4號鎖,除了當前會話外阻塞其他會話進行修改
BYS@dg2> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM','TX') order by 1,2;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------
36 TM 75052 0 4 0 0
此時在會話2插入資料,
BYS@dg2>select distinct sid from v$mystat;
SID
----------
44
BYS@dg2>insert into t values(333); hang住
此時返回會話1上進行查詢:
BYS@dg2> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM','TX') order by 1,2;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------
36 TM 75052 0 4 0 1
44 TM 75052 0 0 3 0
44會話預設可以獲得一個3號鎖,由於3號和4號互斥不能共存,所以沒有獲得鎖,正在等待申請3號鎖
BYS@dg2>commit;
Commit complete.
BYS@dg2>lock table t in share mode;手工鎖定一個表,設定鎖的級別為4
Table(s) Locked.
已經在T表上加上了4號鎖,除了當前會話外阻塞其他會話進行修改
BYS@dg2> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM','TX') order by 1,2;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------
36 TM 75052 0 4 0 0
此時在會話2插入資料,
BYS@dg2>select distinct sid from v$mystat;
SID
----------
44
BYS@dg2>insert into t values(333); hang住
此時返回會話1上進行查詢:
BYS@dg2> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM','TX') order by 1,2;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------
36 TM 75052 0 4 0 1
44 TM 75052 0 0 3 0
44會話預設可以獲得一個3號鎖,由於3號和4號互斥不能共存,所以沒有獲得鎖,正在等待申請3號鎖
BYS@dg2>commit;
Commit complete.
相關文章
- Oracle LOCK內部機制及最佳實踐系列(三)構想一個使用手工鎖定解決一種業務需求的場景Oracle
- 一文弄懂分散式場景中各種鎖的原理及使用分散式
- 一個 Pipeline 的使用場景
- 詳解 Go 空結構體的 3 種使用場景Go結構體
- MyBatis 中 @Param 註解的四種使用場景,最後一種經常被人忽略!MyBatis
- PHP 併發場景的幾種解決方案PHP
- [筆記]鎖:各種場景 整理筆記
- 深度分析Redis分散式鎖在電商超賣業務場景下的使用Redis分散式
- 大話業務場景與解決方案-做任務
- MyBatis 中 @Param 註解的四種使用場景MyBatis
- 高併發業務場景下的秒殺解決方案 (初探)
- 不同業務場景使用不同的map
- 一對一直播app原始碼應用場景決定收益功能APP原始碼
- Redis五種資料結構及使用場景Redis資料結構
- 解讀:在什麼業務場景適合使用Redis?Redis
- 建築師解構遊戲關卡——遊戲研發中的場景需求遊戲
- rxjs 裡 Skip 操作符的一個使用場景JS
- 模擬RI鎖定導致阻塞的場景
- jmeter 遇到的一個場景問題JMeter
- 一些資料賦能業務的場景及案例
- 一篇瞭解代理IP最常見的使用場景
- 百度Apollo一週年:解鎖”高速卡車物流場景
- ORACLE分散式事務鎖各種場景下的處理詳解Oracle分散式
- 業務流程場景
- 手工構造一個超微型的 PE 檔案 (轉)
- Redis 5種資料結構 及使用場景分析Redis資料結構
- AJAX 是否能解決這個業務需求
- Redis中5種資料結構的使用場景介紹Redis資料結構
- 使用ABAP併發程式設計解決一個實際應用場景中的效能瓶頸問題程式設計
- WebGL場景的兩種地面構造方法Web構造方法
- 什麼業務場景適合使用Redis?Redis
- 工作中使用 Git 解決問題的場景Git
- redis常見的幾種使用場景Redis
- MySQL單表模擬鎖的幾個場景MySql
- 構建之法——需求分析+專案經理+典型使用者和場景
- rsync+inotify實現實時同步(小業務場景解決方案)
- rxjs 裡 CombineLatest 操作符的一個使用場景JS
- Redis 5種資料結構及對應使用場景Redis資料結構