主從表,增,刪,改操作時產生的鎖演示
SQL> create table p(id int primary key);
表已建立。
SQL> create table c(id references p(id));
表已建立。
SQL> desc p;
名稱 是否為空? 型別
----------------------------------------- -------- ---------------------------
ID NOT NULL NUMBER(38)
SQL> desc c;
名稱 是否為空? 型別
----------------------------------------- -------- ---------------------------
ID NUMBER(38)
SQL> insert into p values(1);
已建立 1 行。
SQL> commit;
提交完成。
SQL> update p set id=1 where id=1;
已更新 1 行。
SQL> commit;
提交完成。
SQL> delete from p where id=1;
已刪除 1 行。
SQL> rollback;
回退已完成。
SQL> select * from p;
ID
----------
1
SQL> insert into c values(1);
已建立 1 行。
SQL> commit;
提交完成。
SQL> update c set id=1 where id=1;
已更新 1 行。
SQL> commit;
提交完成。
SQL> delete from c where id=1;
已刪除 1 行。
SQL> rollback;
回退已完成。
對應在主,從表上進行新增,修改,刪除操作時,在主,從表上產生的表鎖,行鎖具體情況如下:
SQL> conn scott/tiger
已連線。
SQL> select sid,type,id1,id2,lmode,request,block from sys.v$lock where type in (
'TM','TX');
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
SID TYPE ID1 ID2 LMODE REQUEST BLOCK
---------- ---- ---------- ---------- ---------- ---------- ----------
72 TM 73901 0 3 0 0
72 TM 73903 0 3 0 0
72 TX 655362 730 6 0 0
SQL> select object_name from dba_objects where object_id in (73901,73903);
OBJECT_NAME
--------------------------------------------------------------------------------
P
C
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
未選定行
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
SID TYPE ID1 ID2 LMODE REQUEST BLOCK
---------- ---- ---------- ---------- ---------- ---------- ----------
72 TM 73901 0 3 0 0
72 TX 262162 736 6 0 0
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
SID TYPE ID1 ID2 LMODE REQUEST BLOCK
---------- ---- ---------- ---------- ---------- ---------- ----------
72 TM 73901 0 3 0 0
72 TX 65550 732 6 0 0
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
未選定行
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
SID TYPE ID1 ID2 LMODE REQUEST BLOCK
---------- ---- ---------- ---------- ---------- ---------- ----------
72 TM 73901 0 3 0 0
72 TM 73903 0 3 0 0
72 TX 393217 951 6 0 0
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
未選定行
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
SID TYPE ID1 ID2 LMODE REQUEST BLOCK
---------- ---- ---------- ---------- ---------- ---------- ----------
72 TM 73901 0 3 0 0
72 TM 73903 0 3 0 0
72 TX 131097 903 6 0 0
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
未選定行
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
SID TYPE ID1 ID2 LMODE REQUEST BLOCK
---------- ---- ---------- ---------- ---------- ---------- ----------
72 TM 73901 0 3 0 0
72 TM 73903 0 3 0 0
72 TX 262155 736 6 0 0
SQL> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM'
,'TX');
未選定行
結論:
1:在主表上進行insert 操作時,會在主從,表上增加一個表瑣,以及在主表上增加一個行鎖。
2:在主表上進行update,delete操作時,會在主表上增加一個表鎖,但是從表上不會增加表鎖,相應主表上也會增加一個行鎖。
3:在從表上進行insert,update,delete操作時,會在主從,表上增加一個表瑣,以及在從表上增加一個行鎖。
具體為啥會這樣,我也還沒搞清楚,歡迎大家一起討論,哈哈。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14766526/viewspace-1134555/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 臨時表空間的增刪改查
- 表的建立修改及增刪改查-DML操作
- mybatis中的增刪改操作MyBatis
- oracle 臨時表空間的增刪改查Oracle
- ORACLE 臨時表空間的增刪改查:Oracle
- oracle臨時表空間的增刪改查Oracle
- MongoDB增刪改查操作MongoDB
- PHP操作MongoDB(增刪改查)PHPMongoDB
- 14、flask-模型-models-表的操作-增刪改查Flask模型
- SAP IQ DML操作產生表鎖(不是行鎖),同時DML同一個表預設直接報錯
- mysql資料增刪改查操作MySql
- MySQL基礎操作(增刪改查)MySql
- JS字串操作之增刪改查JS字串
- MySQL表的增刪查改(提高篇)MySql
- MySQL表的增刪改查(基礎)MySql
- MySql 表資料的增、刪、改、查MySql
- 用thinkphp進行增刪改查的操作PHP
- 使用mybatis開發的增刪改查操作MyBatis
- 唯一索引操作可能產生的鎖索引
- 從增刪改查到事件溯源 - PHP事件PHP
- 記一次mysql生產誤刪表搶救操作MySql
- jquery基本操作增刪改查有哪些?jQuery
- JavaAPI操作MongoDB--基本增刪改查JavaAPIMongoDB
- MyBatis框架搭建及增刪改查操作MyBatis框架
- MySQL表的增刪改查(進階)下MySql
- Java實現簡單的增刪改查操作Java
- oracle臨時表空間學習筆記 增刪改查Oracle筆記
- 文件的增刪改
- GoldenGate DML複製增刪改表Go
- MySQL生產庫主從重新同步操作注意事項薦MySql
- iOS操作屬性列表plist(增刪改查)iOS
- 資料庫操作增刪改查模糊查資料庫
- 如何基於生產環境mysql 5.6.25主從部署新的mysql從庫操作指南MySql
- 增刪改查
- layui的增刪改查UI
- 資料的增刪改
- 列表的增刪改查
- 字典的增刪改查