標籤:處理 ssi level 讀寫 ack oracle 時間 comm ide
讀一致性:oracle通過多版本與閃回機制保證讀一致性。保證從某個時間點開始查詢是一致的。在Oracle中主要通過SCN版本號碼來控制系統修改的版本,典型的例子是我們可以通過在同一個查詢中得到同一個對象在“兩個時間點”上的結果:
select * from (select count(*) from emp),(select count(*) from emp as of scn :scn)
多個使用者同時訪問資料庫
consistency:一致性
非阻塞查詢:當修改資料時,Oracle只看資料是否改變,並不關心資料當前是否鎖定,Oracle只從復原段中取回原來的值,並繼續處理下一個資料區塊
1.讀一致性:對於一個時間點(point in time),查詢會產生一致的結果;
2.非阻塞查詢:查詢不會被寫入器阻塞,但在其他資料庫中並非如此(SQL Server)
讀寫衝突通過讀一致性解決:
sys準備工作:
SQL> create user user01 identified by password;
SQL> grant dba to user01;
以下都用user01:
SQL> conn user01/password
Connected.
SQL> create table t1(x int);
SQL> insert into t1 values (1);
SQL> commit;
session1:
SQL> update t1 set x=11 where x=1;
SQL> select * from t1;
session 2:
SQL> select * from t1;
session 1:
SQL> commit;
session 2:
SQL> select * from t1;
測試serializable:
session1:
SQL> alter session set isolation_level=serializable;
重複上面的步驟
寫與寫的衝突通過鎖機制解決:
session 1:
SQL> update t1 set x=11 where x=1;
瀏覽器中查看鎖資訊
session 2:
SQL> update t1 set x=111 where x=1;被阻塞
瀏覽器中查看鎖資訊
session 1:
SQL> rollback;
瀏覽器中查看鎖資訊
Oracle課程檔案。第十一天