oracle中的段區塊的說明

來源:互聯網
上載者:User

段:segment

一個段建立以後,oracle會給它分配一個區,這個區一般是8個塊(空塊)。em建立資料表空間:建立資料表空間要考慮的事項有:1:資料檔案個數2:段的管理方式          自動:資料表空間中的對象將自動管理其空閑空間,這將提高空閑空間管理效能(毫無疑問選擇自動管理)          手動:資料表空間中的對象將使用空閑列表來管理其空閑空間,這是為了確保向後相容3:區的管理方式          本地管理(毫無疑問選擇本地管理)                        選擇本地管理後,區的分配方式可以設定為(自動,統一)一般選擇自動          字典管理4:資料表空間的狀態(讀寫,唯讀,離線)5:資料表空間的類型(永久,temp,undo)6:是否啟動事件記錄(redolog),一般選擇啟動。訪問:localhsot:1158/em登入後進入(管理)->(資料表空間)-(建立)建立資料表空間需要給資料表空間指定資料檔案,在右下角點擊(添加)添加資料檔案:點擊確定後:通過em設定後,產生的sql語句為:CREATE SMALLFILE TABLESPACE "DATA1"DATAFILE '/u01/app/oracle/oradata/jiagulun/data1_01.dbf' SIZE 100M REUSEAUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITEDLOGGINGEXTENT MANAGEMENT LOCALSEGMENT SPACE MANAGEMENT AUTO意思為建立資料表空間名稱為:data1資料檔案為:/u01/app/oracle/oradata/jiagulun/data1_01.dbf,資料檔案大小為100m,重用資料檔案資料表空間自動擴充(AUTOEXTEND ON) ,每次擴充大小100M (NEXT 100M) ,最大擴充,不限制(UNLIMITED)啟動redolog(LOGGING)區管理方式為本地(EXTENT MANAGEMENT LOCAL)段管理方式為 自動(SEGMENT SPACE MANAGEMENT AUTO)查詢一個段的資訊:v$segments;user_tablesselect segment_name,blocks,extents,bytes,segment_type,tablespace_name from dba_segments where segment_name = 'T2';segment_name:段的名稱blocks:有384個塊extents:有18個區bytes:段大小segment_type:段類型tablespace_name:段對應的資料表空間blocks和extents和bytes,3個欄位的值不是即時的反應段的使用方式的。需要統計分析後才會準確一些。對錶進行分析,使blocks和extents和bytes準確:analyze table t2 compute statistics 或者exec dbms_stats.gather_table_stats('SYS','T2')查看錶的使用方式:select table_name,num_rows,blocks,empty_blocks,avg_space,chain_cnt,avg_row_len from user_tables where table_name = 'T2'table_name 表名num_rows:表有多少行blocks:表中資料所佔的資料區塊數empty_blocks:表中的空塊數avg_space:資料區塊中平均的使用空間(平均每個塊908位元組)chain_cnt:表中行串連和行遷移的數量avg_row_len:每條將記錄的平均長度查看區相關的資訊:v$extents select * from dba_extents where segment_name = 'T2';extent_id:是區的編號,上面查詢說明了該段分配了0~17編號的區,共18個區file_id:區所在的檔案,上面查詢說明了這些區都在1號檔案上(dba_data_files)block_id:起始塊id ,上面的查詢中0號區的起始塊id是61433blocks:總共塊數,上面的查詢中0號區的分配了8個塊,因為oracle發現分的區太多,oracle會認為你這個段的資料會比較大,所以在第16個區的時候以下就分配了128個塊,(這就是區的自動管理,如果是統一管理,那麼一直都會是8個塊)高水位線的問題:     段使用分給他的區的最後一個塊的位置,高水位線是oracle對錶進行全表掃描的一個位置,(假如段分配了有10萬個塊,但是實際使用了2000個塊,那麼高水位線在2000個塊的位置,那麼如果你訪問這個表的時候,oracle只訪問2000個塊,如果在10個塊的位置,那麼oracle訪問表的時候會訪問10萬個塊。)通過delete對一個表刪除,表的高水位線沒有下來(假如有1w個塊,當前如果高水位在1000,delete表後,高水位線還會在1000個塊的位置)需要對錶進行空間整理delete from t2;commit;analyze table t2 compute statistics;select table_name,num_rows,blocks,empty_blocks,avg_space,chain_cnt,avg_row_len from user_tables where table_name = 'T2'查詢發現,資料是0行,但是還是佔用265個塊,那麼oracle訪問表的時候,會訪問265個塊。set autotrace on;select count(*) from t2;//查看執行計畫通過查詢可以看到還是發生了269個讀,也就是高水位沒有釋放truncate table t2;commit;analyze table t2 compute statistics;select table_name,num_rows,blocks,empty_blocks,avg_space,chain_cnt,avg_row_len from user_tables where table_name = 'T2'查詢看出,blocks已經清空,高水位降了set autotrace on;select count(*) from t2;//查看執行計畫發現讀幾乎沒有了oracle塊的物理結構:     oracle塊預設是8k     塊頭:塊的物理地址,塊屬於哪個資料表空間,事務槽,行目錄。塊頭從上往下用資料行從下往上用行的結構:     行的頭部記錄行的鎖資訊,第一列的長度,第一列值,第二列的長度,第二列的列值。。。所有的行都是連在一起的,首尾相連,沒個行的長度都是不一樣的oracle讀資料區塊的方式:在塊的頭部有行目錄,行目錄裡面將記錄了每一行的起始位置。當oracle要找某一行的時候,會在行目錄裡面找到對應行的起始位置,然後到那個位置去,然後找對應的列,比如要找第三列,那麼會先找到第一列的長度,然後跳過第一列的列值,接著找到第二列的長度,再跳過第二列值,就找到了第三列;如果把經常訪問的列放在行頭部,會有些許的最佳化,但是效果很小。查詢oracle預設資料區塊的大小:show parameter block可以看到 db_block_size 是8k查看作業系統的塊大小:dumpe2fs /dev/sda1block size是4k也就是說2個作業系統的塊是一個oracle的資料區塊行串連和行遷移:pct_free行串連:如果一行的資料太大了超過8k(block預設是8k),那麼oracle會用多個Block Storage1行資料,第一個塊指向第二個塊,這就是行串連行遷移:pct_free是一個塊剩餘空間,當oracle更新資料時原來更新後的資料長度過大,並達到塊的pct_free時,這時這個行就不能放到這個塊了,那麼會啟用新的塊來放置更新的行,舊塊裡面的行不會指向新塊裡面的行。查看一張表的行串連和行遷移狀態:select table_name,num_rows,blocks,empty_blocks,avg_space,chain_cnt,avg_row_len from user_tables where table_name = 'T2'chain_cnt就是行串連和行遷移的數量,當avg_row_len大於塊的大小時(8k或者查看參數),那麼就是行串連,反之則是行遷移,

可以把表匯出來再導進去,進行表整理.也可以對這張表建立16k或者32k的資料表空間.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.