Oracle數據庫只讀模式的CACHE BUFFERS CHAINS測試是本文我們主要要介紹的內容,雖然從Oracle 9i裡邊引入了只讀模式的CACHE BUFFERS CHAINS,但是在獲取BUFFER LOCK的時候,還是會請求CACHE BUFFERS CHAINS,但是情形沒有8i裡邊那麼嚴重了,接下來我們對其進行測試。
測試步驟如下:
1.首先建一個表。
- create table test (a int,b varchar2(20));
2.往這個表裡INSERT 50000行數據;
- declare
- i int;
- begin
- for i in 1..50000
- loop
- insert into test values(i,'adsfsafsa');
- end loop;
- end;
3.在A的欄位上創建一個INDEX;
- create index test_i on test(i);
4.編一個存儲過程;進行大量的索引掃描操作
- create or replace procedure test_k is
- begin
- for i in (select /*+ INDEX(TEST TEST_I) */ * from test where a>20000)
- loop
- null;
- end loop;
- end;
5.打開2000個會話來執行這個存儲過程;
- var i number;
- begin
- for j in 1..2000
- loop
- dbms_job.submit(:i,'TEST_K;');
- commit;
- end loop;
- end;
6.查詢等待事情發現latch: cache buffers chains等待很嚴重,CPU運大部分時間都運行在SYS模式下.
- Cpu(s): 16.3%us, 83.7%sy, 0.0%ni, 0.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
結論:就算以只讀模式獲取cache buffers chains LATCH並不能完全解決這個LATCH爭用的問題,只是爭用程度不那麼嚴重了。
關於Oracle數據庫只讀模式的CACHE BUFFERS CHAINS測試的相關知識就介紹到這裡了,希望本次的介紹能夠對您有所收獲!