dbms_lock同步併發
買珠還櫝,雖然CBO還沒搞明白,也能學點其它技巧。
在看Jonathan Lewis的CBO基礎時,看到一個控制併發的技巧,摘錄下來,以後做開發時做個參考. 讓5個會話的插入操作,併發執行. 原始碼如下:
*/[@more@]
-- 使用dbms_lock同步併發啟動時間
/**
買珠還櫝,雖然CBO還沒搞明白,也能學點其它技巧。
在看Jonathan Lewis的CBO基礎時,看到一個控制併發的技巧,摘錄下來,以後做開發時做個參考
讓5個會話的插入操作,併發執行
原始碼如下:
*/
create table t1(
date_ord date constraint t1_dto_nn not null,
seq_ord number(6) constraint t1_sqo_nn not null,
small_vc varchar2(10)
)
pctfree 90
pctused 10
;
drop sequence t1_seq;
create sequence t1_seq;
create or replace procedure t1_load(i_tag varchar2) as
m_date date;
begin
-- 同步併發啟動時間
dbms_output.put_line(
dbms_lock.request(
1,dbms_lock.s_mode, release_on_commit => true
)
);
commit;
for i in 0..25 loop
m_date := trunc(sysdate) + i;
for j in 1..200 loop
insert into t1 values(
m_date,
t1_seq.nextval,
i_tag || j
);
commit;
dbms_lock.sleep(0.01);
end loop;
end loop;
end;
/
begin
dbms_output.put_line(
dbms_lock.request(
1,dbms_lock.x_mode,
release_on_commit=>true
)
);
end;
/
prompt
prompt From five different sessions, execute a call to procedure
prompt t1_load with a different tag for each session, e.g.
prompt execute t1_LOAD('a')
prompt
prompt These will all suspend, waiting to acquire a share lock that
prompt this progam is holding in exclusive mode. When all five sessions
prompt have called the procedure, press return in this screen to allow them
prompt to continue
accept x
commit;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271063/viewspace-1008796/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 併發同步知多少
- Java併發(9)- 從同步容器到併發容器Java
- 併發技術中同步
- Java同步容器和併發容器Java
- Java 8 併發:同步和鎖Java
- Java併發——AbstractQueuedSynchronizer(AQS)同步器JavaAQS
- 併發技術4:同步排程
- 併發工具類(二)同步屏障CyclicBarrier
- 聊聊併發(三)——同步輔助類
- 3.1 JDK併發包之同步控制JDK
- java併發程式設計:同步容器Java程式設計
- ♻️同步和非同步;並行和併發;阻塞和非阻塞非同步並行
- Java併發之同步器設計Java
- 併發程式設計(一)——同步類容器程式設計
- 併發-7-同步容器和ConcurrentHashMapHashMap
- 多執行緒與併發----Semaphere同步執行緒
- Java併發之CyclicBarrier(在集合點同步)Java
- Python開源非同步併發框架Python非同步框架
- 程式執行緒、同步非同步、阻塞非阻塞、併發並行執行緒非同步並行
- 併發-0-同步/非同步/阻塞/非阻塞/程式/執行緒非同步執行緒
- java併發程式設計——執行緒同步Java程式設計執行緒
- Java併發之AQS同步器學習JavaAQS
- 計數器方式實現非同步併發非同步
- 執行緒,程式,協程, 併發,並行,同步,非同步概念解析執行緒並行非同步
- 【OS】同步非同步/阻塞非阻塞、併發並行序列的區分非同步並行
- 釋出-訂閱方式實現非同步併發非同步
- Golang 併發,有快取通道,通道同步案例演示Golang快取
- 說一說併發設計模式—Future(非同步)設計模式非同步
- 併發容器J.U.C -- AQS同步元件(二)AQS元件
- golang 高併發非同步tcp 框架求推薦?Golang非同步TCP框架
- 併發程式設計-11.取消非同步工作程式設計非同步
- 併發程式設計:自定義併發類:自定義非同步流(釋出與訂閱)程式設計非同步
- 非同步化,你的高併發大殺器非同步
- java多執行緒詳解(併發,並行,同步)Java執行緒並行
- Python 開源非同步併發框架的未來Python非同步框架
- JVM 併發性: 使用 Akka 執行非同步操作JVM非同步
- Go高階併發 09 | 同步原語:sync 包讓你對併發控制得心應手Go
- 程式與執行緒、同步與非同步、阻塞與非阻塞、併發與並行執行緒非同步並行