oracle 11g 體系結構研究
Oracle體系結構
Oracle在線上事務處理上比較強
記憶體IO能力200倍於普通磁碟
select * from emp where empno=:1 繫結變數 透過hash value
有索引走索引,無索引走全表掃描
執行計劃會計算總成本,選出執行計劃最低的
Shared pool到library cache
1)語句找出 從library cache找出最優的執行計劃,找出這條語句
2)物件失效 原先表上有100條資料,表上的資料沒有變化,繼續執行全表掃描
如果表上的資料增加到了100萬條,那麼執行計劃會改變
3)併發控制 有些票務系統會用到
Library cache中快取了數百萬條記錄,如何從中找出這條語句的執行計劃,11g裡面的SQL語句區分大小寫,hash每個字母轉化為ASCII碼,進行hash運算
用hash value定義SQL語句
資料表用lock控制併發
1)計算hash3個SQL都是相同一個emp表,但是歸屬於不同的schema,那麼就會出現3個是一樣的hash value,但是確是不同的執行計劃。
上圖的橫線就是軟解析的整個等待過程,產生的等待事件是latch library cache
從上到下依次是父遊標和子游標
增加mutex鎖,為了縮短連結串列長度,提高檢索速度
找到父遊標的mutex,找到父遊標獲取mutex,再找到執行計劃。
出現mutex等待事件,說明SQL語句版本過多
硬解析
先獲取latch,發現沒有,釋放latch,再申請latch shared pool,獲得chunk記憶體
語法解析 語義解析 表上資料分佈 有無索引
硬解析多,會有等待事件:
latch library cache
latch shared pool
資料字典cache,data dictionary cache主要用來做硬解析時候用
還有一個叫軟軟解析,在library cache執行完軟解析後,會有一個指標直接指向heap6,就是代表軟軟解析
UGA 放在PGA
session cached cursor
library cache 的heap6 指標指向heap6
可以參考dsi文件
讀不阻塞寫,但寫會阻塞讀
當B塊正在寫的時候,如果A塊要去讀B塊的內容,是無法讀的,需要等到
產生了buffer busy waits的等待事件,DML語句產生等待
檢查點事件
checkpoint
資料庫操作在記憶體中完成,把資料檔案讀到記憶體中去,3000到5000
理想情況下,要在斷電前把5000寫入磁碟,保證資料不丟失
5000;執行commit,代表事務結束
只要commit就把資料寫入磁碟,同步寫,效率低,效能差。8k一個資料塊
但是資料庫同步寫入磁碟速度太慢。
現在是如果系統重啟完了,資料庫在啟動時候把資料重新構造出來,資料塊用非同步來寫
只寫日誌,日誌先行,commit,先把日誌寫入磁碟,資料塊緩行。
把上面的1、2、3、4用DBWr寫入下面的磁碟內
DBWr負責寫髒塊,3秒一寫,充滿1/3空間一寫,DBWr把1、2、3、4寫回磁碟,DBWr去把原先記憶體中移除掉已經寫回到磁碟裡面的1、2、3、4日誌
checkpoint程式監控資料檔案同步
把當前狀態寫入控制檔案,剛好把日誌4寫入了磁碟,如果例項掛了,就從日誌4開始恢復
Database buffer cache記憶體空間總要用完
3秒內BCH就會增加1
會把BCH數值小的清除掉
Shared pool做解析,到database buffer cache取資料,database dictionary cache用來做硬解析
Redo log buffer日誌先進,先進記憶體,commit,lgwr寫入日誌到磁碟
Large pool:對磁碟操作要做記憶體緩衝,IO操縱,記憶體緩衝區在large pool定義,如果沒有設定large pool會導致在RMAN恢復的時候導致資料庫效能下降,因為RMAN恢復會消耗IO資源,導致佔用shared pool資源,使資料庫效能下降。
用dbms_mview.explain_rewrite物化檢視不能查詢重寫在這裡都能看到
一個表,如果多列資料無關聯,執行計劃正確,如果出現多列資料相關,會導致資料庫的執行計劃有偏差,需要增加虛擬列來進行修復
多列統計資訊和索引無關
收集統計資訊
exec dbms_stats.gather_table_stats(‘scott’,’T1’,’CASCADE=>TRUE);
資料庫採用哪個執行計劃?
Profile優於spm,先profile,再spm
Spm:SQL plan baseline
把SQL語句放入baseline
當第二個accept變成了yes,才會從兩個accept中間進行選擇
1. sql tunning advice 驗證,資料庫自動執行
會從兩個accept的yes中進行選擇
2. envolve 手動進行驗證
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22996654/viewspace-2127880/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g體系結構Oracle
- oracle體系結構Oracle
- ORACLE體系結構小結Oracle
- oracle體系結構總結Oracle
- Oracle體系結構之-物理結構Oracle
- Oracle體系結構之-記憶體結構Oracle記憶體
- Oracle記憶體結構研究-PGA篇Oracle記憶體
- Oracle記憶體結構研究-SGA篇Oracle記憶體
- oracle體系結構(轉)Oracle
- ORACLE-體系結構Oracle
- Oracle體系結構梳理Oracle
- Oracle 體系結構圖Oracle
- oracle體系結構(1)Oracle
- oracle體系結構(2)Oracle
- oracle體系結構(3)Oracle
- oracle之 11g RAC R2 體系結構---GridOracle
- Oracle體系結構:記憶體結構和程式結構(轉)Oracle記憶體
- 3:Oracle體系結構(邏輯結構)Oracle
- Oracle記憶體體系結構Oracle記憶體
- 【Oracle體系結構】 Oracle19C 系統結構介紹Oracle
- oracle體系結構概覽Oracle
- Oracle 體系結構介紹Oracle
- Oracle體系結構之記憶體結構(SGA、PGA)Oracle記憶體
- Oracle體系結構部落格連結Oracle
- Oracle OCP(37):Database 體系結構OracleDatabase
- Oracle體系結構理論篇Oracle
- Oracle 12C 體系結構Oracle
- Oracle資料庫體系結構Oracle資料庫
- 【00】Oracle體系結構詳解Oracle
- Oracle RAC 體系結構--儲存Oracle
- Oracle 體系結構介紹(轉)Oracle
- Oracle 體系結構 SGA 和PGA 總結Oracle
- Oracle系列:Oracle RAC叢集體系結構Oracle
- Oracle體系結構之-Oracle後臺程式Oracle
- [ADMIN]oracle入門-oracle體系結構Oracle
- Oracle Data block 的物理結構-體系架構OracleBloC架構
- 0718_oracle 體系結構Oracle
- Oracle體系結構學習筆記Oracle筆記