


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Oralce數據庫結構深度分析(高級)目錄Oralce數據庫結構分析1數據庫結構:4數據塊地址:blockid4數據塊大小的設置:7行遷移和行鏈接:7Oracle的讀操作:9Oracle的一致性讀10Oracle的多數據塊讀:11Oracle的段12Oracle的段的存儲管理17Oracle的自動段管理18Oracle的表空間20數據庫結構:數據塊是我們操作數據庫的最小單位,我們的redo ,undo記錄的并不是改變的行。而是改變的塊。rman也是以塊為單位來進行備份,恢復時候也是按塊來進行一塊一塊恢復數據塊由兩部分組成一部分數據塊頭(oracle用來存放管理信息的地方),一部分數據包(真正放
2、數據的地方)數據塊地址:blockidITL SLOT就相當于事務槽,有事務要修改數據塊就會在定位一個行一般是objectid-fileid - blockid - rowid塊里每一行也有行頭,行頭也有一些管理信息。SQL> select rowid from text where rownum <=1;ROWID-AAAVxEAABAAAXchAAA AAAVxE AAB AAAXch AAAObject_id file_id block_id rowid用dbms_rowid包轉化出來SQL> select rowid ,dbms_rowid.rowid_object(
3、rowid) object_id,dbms_rowid.rowid_relative_fno(rowid) file_id,dbms_rowid.rowid_block_number(rowid) block_id,dbms_rowid.rowid_row_number(rowid) num from text where rownum<2;ROWID OBJECT_ID FILE_ID BLOCK_ID NUM- - - - -AAAVxEAABAAAXchAAA 89156 1 96033 0數據塊大小的設置:ORAP系統中數據塊可以設置的大一些,因為一次的讀取的數據量大并發用戶少。
4、ORTP系統中數據塊可以設置的小一些,因為一次讀取的數據量小并發數據多,數據塊大了會有更多并發事務訪問一個塊造成鎖和等待數據塊存儲屬性:PCTFREE當數據塊中當大數據量達到這個只時,將不允許繼續插入數據比如怕update一下變長了要留有伸縮余地PCTUSED當數據塊中數據占用空間小于這個比例時,數據塊會被再次使用行遷移和行鏈接:當一個數據塊里一行數據塊放不下了,就會吧剩下當數據放到另一個數據塊里。當一個數據塊里一行數據,就全部移到另一個數據塊里,都是通過在原庫留下指針指向移到的目標塊行鏈接一般發生在:比如4k的塊大小,插入數據一行16k。哪就需要把它分散四到五個數據塊里。行遷移一般發生在:u
5、pdate 以后原來的塊不夠存了,放到另一個塊里能夠。就全部遷移過去,這時行的rowid沒有改變,雖然物理上存儲地址變了。只是原塊通過指針指向遷移后的新塊。塊空閑空間的合并Oracle的讀操作:從磁盤讀取一個數據塊單塊讀:single block read對應等待事件 db file sequential read從磁盤讀取多個數據塊多塊讀:multi block read對應等待事件 db file multiblock read countoracle有一個計數器,數據塊被訪問得越多就越往熱端移。被訪問得越少就越往冷端移動。數據塊頭的計數器Oracle的一致性讀查詢語句要查詢27數據塊但查
6、詢語句發出但scn是132現在但27塊scn是150,查詢語句現在是不能讀這個數據塊但,要通過undo回滾重新構建一個scn為132的數據塊27。也不能是直接修改scn150的塊27因為讀不能阻塞現在讀寫。Oracle的多數據塊讀:多塊讀情況下oracle一但讀完直接把它扔到最右邊冷鏈上Extent:Select segment_name,extent_id,block_id,blocks from dba_extents;SEGMENT_NAME EXTENT_ID BLOCK_ID BLOCKS- - - -CUSTOMERS 13 3416 8CUSTOMERS 14 3424 8CUS
7、TOMERS 15 3432 8CUSTOMERS 16 3456 128CUSTOMERS 17 3584 128CUSTOMERS 18 3712 128CUSTOMERS 19 3840 128CUSTOMERS 20 3968 128CUSTOMERS 21 4096 128CUSTOMERS 22 4224 128CUSTOMERS 23 4352 128.Oracle的段表,表分區索引,索引分區大對象(LOB)大對象oracle會單獨給這個字段分配一個段分配來空間就是一個段數據段:通常存放數據的段就是數據段臨時段:排序,hash,merge(需要一個中間數據處理區域)創建索引,or
8、der by,hash join,merge join.只有在內存空間不足時,oracle才會在臨時表空間上創建臨時段。臨時段上段操作不會計入redo 所以快效率高回滾段:Undo臨時表:On commit設定 DELETE ROWS 臨時表中是基于事務的提交或回滾時,臨時表中的數據將被清空。PRESERVE ROWS 臨時表中的數據基于會話會話結束時,臨時表中的數據被清空。SQL> create global temporary table t_temp on commit delete rows as select * from dba_objects;Table created.S
9、QL> select count (*) from t_temp; COUNT(*)- 0因為create默認提交所以提交(commit)所以沒有數據再用插入語句實驗SQL> insert into t_temp select * from dba_objects;86314 rows created.SQL> select count (*) from t_temp; COUNT(*)- 86314SQL> commit;Commit complete.SQL> select count (*) from t_temp; COUNT(*)- 0PRESERVE
10、ROWS設定SQL> create global temporary table t_temp on commit PRESERVE ROWS as select * from dba_objects;Table created.SQL> select count (*) from t_temp; COUNT(*)- 86314吧這個會回窗口關閉就沒數據了SQL> select count (*) from t_temp; COUNT(*)- 0臨時表除了在數據安全上不一樣(沒有redo保護),其它都是一樣的。也可以建立索引段數據段壓縮Oracle允許對段進行壓縮優點減少儲存
11、空間減少處理段數據塊減少內存占用提高I/O速度提高查詢效率缺點因為要額外對數據做處理,在數據插入時,會消耗更多的資源和時間數據壓縮會做整理分為兩部分一部分是做為標簽標記數據出現幾次,一部分存放數據實驗:SQL> Create table MAX compress as select * from dba_objects;Table created.SQL> Create table XH as select * from dba_objects;Table created.SQL> select segment_name,extents,blocks,bytes from u
12、ser_segments where segment_name='MAX' or segment_name='XH'SEGMENT_NAME EXTENTS BLOCKS BYTES- - - -MAX 18 384 3145728XH 25 1280 10485760可以看到相同的數據源壓縮和非壓縮大小差了四倍多壓縮多級別表空間級:只要是在這個表空間建的表哪怕表不設壓縮屬性都自動壓縮表級:分區子分區查詢一張表是否壓縮:SQL> Select table_name,compression from user_tables where table_name=
13、'MAX'TABLE_NAME COMPRESSION- -MAX ENABLEDENABLED表示壓縮表取消壓縮SQL> Alter table MAX nocompress;Table altered.SQL> Select table_name,compression from user_tables where table_name='MAX'TABLE_NAME COMPRESSION- -MAX DISABLED再壓縮SQL> Alter table MAX move compress;Table altered.SQL> S
14、elect table_name,compression from user_tables where table_name='MAX'TABLE_NAME COMPRESSION- -MAX ENABLEDOracle的段的存儲管理MSSM - Manual segment space Management-手工設定對象的存儲參數· PCTFREE,PCTUSED,FREELISTS.ASSM-Automatic Segment space Management - ORACLE 自動設定對象存儲參數 · 只可以手工設定PCTFREE參數,其它參數由Ora
15、cle自動設定手動段管理-MSSMoralce段的頭部有一個表freelist,當要插入數據時先要在freelist里找。參數PCTFREE PCTFREE:為一個塊保留的空間百分比,表示數據塊在什么情況下可以被insert,默認是10,表示當數據塊的可用空間低于10%后,就不可以被insert了,只能被用于update;即:當使用一個block時,在達到pctfree之前,該block是一直可以被插入的,這個時候處在上升期。 PCTUSED:是指當塊里的數據低于多少百分比時,又可以重新被insert,一般默認是40,即4
16、0%,即:當數據低于40%時,又可以寫入新的數據,這個時候處在下降期。如果表時長要被update字段可能伸長就要多留些PCTFREE如果沒有update就不留了FREELISTS:如果有很多很多會話一起訪問FREELIST就會導致latch爭用因此oracle允許設置多個FREELIST增加并發應付能力。看數據庫用戶大小而定創建一個手工段管理段表空間:SQL> create tablespace ts_mssm segment space management manual;Tablespace created.設置參數SQL> Create table t_m(id int) p
17、ctfree 20 pctused 20 storage(freelists 20 next 5M)tablespace ts_mssm;Table created.SQL> Select pct_free,pct_used,freelists from user_tables where table_name='T_M' PCT_FREE PCT_USED FREELISTS- - - 20 20 20Oracle的自動段管理最下面是數據塊上面一層是EXTENT再上面一層是多個EXTENT最上面就是整個段里的信息數據塊每次插入或者變更都以一種位圖的方式level里去評估
18、哪一個塊能插入自動段管理段優勢簡化管理增大并發度如果有多個事務并發訪問一個段對MSSM由于使用FREELIST列表進行空間管理,導致大量會話訪問這些列表會出現資源爭用和等待;ASSM由于不使用FREELIST方式管理空間,會避免這種資源爭用和等待RAC環境下由于實例之間經常交叉訪問數據塊所以不需要freelist可以改善并發性能Oracle的表空間大文件表空間SQL> create bigfile tablespace big;Tablespace created.SQL> create table t_big tablespace big as select * from dba
19、_objects;Table created.減少數據庫文件個數方便文件管理,不需要人工干預表空間大文件大小減少數據庫文件頭大開銷表空間的管理方式本地管理表空間(Locally Managed Tablespaces) -最后還是依賴于ASSM和MSSM段管理方式來實現 避免了通過查詢數據字典獲得表空間都儲存信息自動跟蹤表空間上數據都變化并進行調整自動確定表空間上extent的大小字典管理表空間(Didtionary-Managed Tablespaces) -這種方法現在基本已經淘汰因為表空間中的儲存信息都記錄在oracle數據字典表(SYSTEM表空間)中,凡事DML操作都需要訪問SYSTEM表空間和相關視圖,集中訪問總是愛出現資源爭用表空間對存儲屬性數據管理方式Local -表空間信息在本地Dictionary -表空間信息在字典表里 這個方式已經過氣段管理ASSMMSSMextent管理AUTOALLOCATE 自動分配UNIFORM 同意一個尺寸 SQL> select TABLESPACE_NAME,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS,EXTENT_MANAGEMENT,S
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧省沈陽市重點高中聯合體2024-2025學年高考仿真卷物理試卷含解析
- 部編版三年級下冊語文課堂互動活動計劃
- 2025屆新鄉市重點中學高三沖刺模擬物理試卷含解析
- 小學數學復習計劃與個性化學習方案
- 九型人格測試培訓
- 2025年公共交通衛生管理計劃
- 非營利組織志愿者活動計劃
- 教師信息化工具使用培訓計劃
- 2025年度技術職業學校教師發展計劃
- 汽車培訓項目方案
- 《肺性腦病》課件
- 辯論賽辯詞:人工智能對人類發展利多于弊還是弊多于利
- 成人手術后疼痛評估與護理團體標準
- 《中小學教育懲戒規則(試行)》宣講培訓
- 傳統紋樣課程設計教案
- 村委租用農民土地合同范文
- 工程檢測技術咨詢合同
- 消防監督管理中級專業技術任職資格評審題庫大全-2多選題部分
- 職業衛生監測與評價作業指導書
- 天津市和平區2024-2025學年高一上學期11月期中英語試題(含答案含聽力原文無音頻)
- 國家開放大學《畜禽生產概論》形考作業1-4+實習報告1-2參考答案
評論
0/150
提交評論