oracle索引核心過程
索引的根塊、枝塊的查詢額度比葉塊、表塊高很多。
索引根塊、枝塊絕大多數的操作都是讀,除非發生索引分裂。
普通索引的根塊、枝塊 和 Unique索引、索引Unique掃描時索引時,索引的根塊、枝塊、葉塊、
表塊都是以CBC latch共享的模式保護。
Unique索引
如果Unique索引列使用等值條件查詢時(id是Unique索引的索引列,語句為where id=某個值),那索引的根塊、枝塊、葉塊、
表塊都共享CBC latch。
如果不是等值條件,則和非Unique索引一樣,只有根塊、枝塊是共享CBC latch,葉塊、表塊還是獨佔CBC latch。
也就是說,索引Unique掃描(INDEX UNIQUE SCAN)根塊、枝塊、葉塊、表塊都是以CBC latch共享
(例:where id=?,且id列是索引列)
用rowid直接邏輯讀表塊(TABLE ACCESS BY USER ROWID)是獨佔CBC latch。(例:where rowid='xxxxxxxxxxxx')
普通索引的根塊、枝塊
1.根據要訪問的檔案號、塊號,算出hash值
2.根據hash值找到hash bucket
3.根據每個hash bucket獨有的一個 指向CBC連結串列(cache buffers cache chains list)的連結串列頭(我願稱之為指標),
找到對應的CBC連結串列
4.從CBC連結串列的連結串列頭——CBC連結串列,中間的CBC latch鎖設成S模式(共享鎖)
5.在CBC latch鎖的保護下,搜尋連結串列
7.buffer pin鎖修改完成,釋放獨佔的CBC latch鎖。
8.查詢BH中的BA,不對buffer pin鎖狀態進行修改。
9.在共享CBC latch鎖的保護下,根據BH中的BA地址,查詢buffer中的資料
10.查詢buffer資料完畢,釋放CBC latch
本文從Oracle核心技術揭秘_呂海波中理解
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/69980685/viewspace-3004171/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 編譯核心過程編譯
- 驗證Oracle 10g線上整理碎片索引是否失效過程Oracle 10g索引
- ElasticSearch分片互動過程(建立索引、刪除索引、查詢索引)Elasticsearch索引
- 移動索引的儲存過程索引儲存過程
- 記一次Oracle分割槽表全域性索引重建的過程Oracle索引
- openGauss核心:SQL解析過程分析SQL
- Linux核心Kernel啟動過程Linux
- 【TUNE_ORACLE】Oracle索引設計思想(二)索引過濾列概述Oracle索引
- Oracle儲存過程Oracle儲存過程
- oracle-startup過程Oracle
- Oracle服務啟動-索引-子查詢-分頁儲存過程問題Oracle索引儲存過程
- Red Hat核心升級過程記錄
- Exynos4412 核心移植(二)—— 核心編譯過程分析編譯
- Druid.io系列4:索引過程分析UI索引
- 【索引】分割槽表索引重建過程的10704事件跟蹤索引事件
- Oracle儲存過程-1Oracle儲存過程
- oracle邏輯讀過程Oracle
- oracle的儲存過程Oracle儲存過程
- ORACLE 死鎖分析過程Oracle
- Oracle儲存過程例子Oracle儲存過程
- Oracle的啟動過程Oracle
- Oracle 發郵件過程Oracle
- oracle定期清空回收過程Oracle
- Oracle建立儲存過程Oracle儲存過程
- oracle 92 修改sga過程Oracle
- oracle rac vip 漂移過程Oracle
- oracle plsql儲存過程OracleSQL儲存過程
- Oracle DDL 執行過程Oracle
- ORACLE 儲存過程示例Oracle儲存過程
- ORACLE儲存過程中建立子過程的測試!Oracle儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- 原創:oracle 儲存過程Oracle儲存過程
- Oracle ASM Rebalance執行過程OracleASM
- oracle 儲存過程批次提交Oracle儲存過程
- oracle 儲存過程學習Oracle儲存過程
- ORACLE關閉過程淺析Oracle
- ORACLE啟動過程淺析Oracle
- [Flashback]Oracle flashback儲存過程Oracle儲存過程