[20210304]關於11g一致性讀取的測試.txt
[20210304]關於11g一致性讀取的測試.txt
--//連結:http://blog.itpub.net/267265/viewspace-2760454/ => [20210301]延遲顯示輸出.txt
--//Oracle將這種改動稱為"RowCR Optimization",Oracle簡單的描述了什麼是RowCR Optimization:A brief overview of this
--//optimization is that we try to avoid rollbacks while constructing a CR block if the present block has no uncommitted
--//changes.這裡的avoid rollback,意味著在滿足特定的條件時,Oracle就不做一致讀了.
--//這個提前條件就是索引要唯一.
--//自己好奇補充一些測試一致性讀取的情況。
1.環境:
SCOTT@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
CREATE OR REPLACE FUNCTION SCOTT.sleep (seconds IN NUMBER)
RETURN NUMBER
AS
BEGIN
sys.DBMS_LOCK.sleep (seconds);
RETURN seconds;
END;
/
2.建立測試環境:
SCOTT@book> create table t as select rownum id1,rownum id2,lpad(rownum||'x',10,rownum||'x') vc from dual connect by level<=10;
Table created.
SCOTT@book> create unique index i_t_id1 on t(id1);
Index created.
SCOTT@book> create index i_t_id2 on t(id2);
Index created.
--//分析略.
3.測試:
--//session 1:
SCOTT@book> select * from t where id1=4 and sleep(12)=12 union all select * from t where id2=4 and sleep(1)=12;
--//session 2,以下命令最好事先輸入,避免12秒內無法完成:
SCOTT@book> update t set vc=upper(vc) where id1=4;
1 row updated.
SCOTT@book> commit ;
Commit complete.
--//session 1:
SCOTT@book> select * from t where id1=4 and sleep(12)=12 union all select * from t where id2=4 and sleep(12)=12;
ID1 ID2 VC
---------- ---------- --------------------
4 4 4X4X4X4X4X
4 4 4X4X4X4X4X
--//你可以發現vc輸出是大寫.而按照我前面的測試應該第1行vc應該是小寫,第2行輸出的vc是大寫。
4.繼續測試:
--//條件反過來查詢呢?
--//session 1:
SCOTT@book> select * from t where id2=3 and sleep(12)=12 union all select * from t where id1=3 and sleep(12)=12;
--//session 2:
SCOTT@book> update t set vc=upper(vc) where id1=3;
1 row updated.
SCOTT@book> commit ;
Commit complete.
--//session 1:
SCOTT@book> select * from t where id2=3 and sleep(12)=12 union all select * from t where id1=3 and sleep(12)=12;
ID1 ID2 VC
---------- ---------- --------------------
3 3 3x3x3x3x3x
3 3 3x3x3x3x3x
--//再次查詢:
SCOTT@book> select * from t where id2=3 and sleep(1)=1 union all select * from t where id1=3 and sleep(1)=1;
ID1 ID2 VC
---------- ---------- --------------------
3 3 3X3X3X3X3X
3 3 3X3X3X3X3X
--//11g這種改動可能會出現許多奇怪的情況,也許還可以測試更多的情況,不想做了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2761014/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20181206]關於一致性讀取3.txt
- [20210304]bbed的assign命令.txt
- [20211025]11g sequemce nocahe測試.txt
- [20180819]關於父子游標問題(11g).txt
- [20201116]測試CURSOR_SPACE_FOR_TIME=false(11g).txtFalse
- [20180907]訪問v$檢視與一致性讀取.txt
- [20180713]關於hash join 測試中一個疑問.txt
- 深度剖析 | 關於資料鎖定和讀取一致性問題
- 關於測試
- 面試題-python 如何讀取一個大於 10G 的txt檔案?面試題Python
- [20220815]奇怪的隱式轉換問題(11g測試補充).txt
- [20201210]11G ACS相關問題.txt
- 技能篇:關於快取資料的一致性探討快取
- [20190502]查詢條件不等於測試.txt
- 關於流媒體的效能測試
- [20210813]關於測試sql語句子游標的效能的一些補充說明.txtSQL
- [20181213]ogg大量讀取操作.txt
- 關於安卓 sdk 測試安卓
- 關於 Android 單元測試Android
- JS讀取本地TXT文字的兩種方法JS
- mysql~關於mysql分割槽表的測試MySql
- 關於Electron框架應用的安全測試框架
- Servlet中關於web.xml的測試ServletWebXML
- [20201126]11g VPD的問題.txt
- php迴圈讀取txt裡面關鍵詞並按頁數PHP
- [20210318]bbed讀取資料塊.txt
- 關於SignalR併發量測試SignalR
- 關於11G DataGuard 日誌傳輸的案例
- [20191129]關於hugepages的問題.txt
- [20210410]關於time命令的解析.txt
- 關於Thinkphp 使用AdvModel來讀取Blob欄位PHP
- 關於sklearn下class_weight引數的一點原始碼閱讀與測試原始碼
- 讀取txt檔案的簡易演算法演算法
- 關於軟體測試領域的 Happy PathAPP
- 關於發版測試的認知與案例
- 關於效能測試的這點事,值得收藏~
- 關於資料庫壓力測試的故事資料庫
- 關於測試用例的一些迷茫