ITPub博客

首页 > 应用开发 > IT综合 > Cursor的好處

Cursor的好處

原创 IT综合 作者:Neohzh 时间:2008-08-12 16:49:46 0 删除 编辑

將大的事務切割成小的事務,這樣可以減少undo的需求及鎖的掌控時間

example:

1. 創建一個大表lock_test01,創建遊標並使用它

declare
cursor test_cur is
select * from lock_test01 where name='YAO';
v_test lock_test01%rowtype;
begin
open test_cur;
loop
fetch test_cur into v_test;
insert into lock_test02 values(v_test.name,v_test.pnl);
commit;
exit when test_cur%notfound;
end loop;
end;
/

2.開啟另一個sqlplus, 查看先前鎖的狀況

SQL> SELECT sid,type,id1,id2,lmode,request,block FROM V$LOCK WHERE SID=9;

SQL> SELECT sid,type,id1,id2,lmode,request,block FROM V$LOCK WHERE SID=9

SID TYPE ID1 ID2 LMODE REQUEST BLOCK
---------- ---- ---------- ---------- ---------- ---------- ----------
9 TX 262144 6921 6 0 0
9 TM 30390 0 3 0 0

note:出現tx及tm事務, 說明正存在undo及insert操作

2.再次查詢

SID TYPE ID1 ID2 LMODE REQUEST BLOCK
---------- ---- ---------- ---------- ---------- ---------- ----------
9 TX 458782 6926 6 0 0

note:儘存在tx事務,之前的tm事務已提交

3.再次查詢

SQL> SELECT sid,type,id1,id2,lmode,request,block FROM V$LOCK WHERE SID=9;

沒有任何資料列被選取

以上, 說明隨著事務的提交,tx及tm鎖迅速的提交,假如直接使用sql語句執行同樣操作:insert into table select * from table方式,tx及tm鎖將持續存在

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/779728/viewspace-1008867/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Shared Server
请登录后发表评论 登录
全部评论
  • 博文量
    17
  • 访问量
    93142