資料塊調整

murkey發表於2014-01-13

 

層次

DATABASE – TABLESPACE –SEGMENT-EXTENT-BLOCK

 

資料檔案頭:檢查點號,metadata(屬於哪個表空間等)

區至少有2個連續的塊(第一個塊為segment header 存放metadata HWM extent map freelist,不存放資料)

 

插入塊的時候,從下往上寫,先尋找freelist定位 (隨機)

blockheader 的資料時由上往下增長

 

區的分配

避免動態分配區:
? 建立本地化管理的表空間.
? 合理的設定段的大小.
? 監視段.

 

避免動態分配區

SQL> SELECT owner, table_name, blocks, empty_blocks
2 FROM dba_tables
3 WHERE empty_blocks / (blocks+empty_blocks) < .1;

 

避免動態分配

SQL> ALTER TABLE hr.employees ALLOCATE EXTENT;
Table altered.

 

高水位線:
? 在段頭塊記錄高水位線資訊
? 在段建立的時候設定
? 使用TRUNCATE 可以重置高水位線
? DELETE語句不會重置高水位線

 

 

收回空閒空間
降低高水位線:
? 使用匯出和匯入工具:
? 匯出表Export the table
? Drop 或者truncate 表
? 匯入表
或者使用Alter Table Employees Move命令遷移表,釋放空
閒空間,需要雙倍的空間。
對於Oracle 10g可以採用alter table shrink space;
? 使用Alter Table Employees Deallocate Unused; 命令會
釋放高水位線以上的空間.

 

可以參考

 

DB_BLOCK_SIZE引數
資料塊大小:
? 使用DB_BLOCK_SIZE 引數設定資料塊大小
? 當建立資料庫時設定
? Oracle最小的I/O單位
? 預設是2 KB 或者4 KB, 最大可以設定64 KB
? 改變資料塊大小很困難
? 是作業系統塊大小整數倍
? 小於或者等於作業系統I/O尺寸

 

設定小資料塊的優點和缺點
優點:
? 減少資料塊衝突
? 適合小記錄
? 適合隨機訪問記錄
缺點:
? 產生一些額外的開銷
? 每個資料塊只能存放很少的記錄
? 可能會訪問更多的索引塊

 

 

PCTFREE:為一個塊保留的空間百分比,表示資料塊在什麼情況下可以被insert,預設是10,表示當資料塊的可用空間低於10%後,就不可以被insert了,只能被用於update;即:當使用一個block時,在達到pctfree之前,該block是一直可以被插入的,這個時候處在上升期。

      PCTUSED:是指當塊裡的資料低於多少百分比時,又可以重新被insert,一般預設是40,即40%,即:當資料低於40%時,又可以寫入新的資料,這個時候處在下降期

 

當你刪除一個資料後,再想插入個新資料行不行?不行,必須是刪除41個,即低於40個以後才能插入新的資料的,這是受pctused來控制的。

注意:如果表空間上啟用了ASSM,在建立表的時候,只能指定PCTFREE,否則可用指定PCTFREE和PCTUSED。

1、透過user_tables的pct_free,pct_used來檢視
select a.table_name, a.pct_free, a.pct_used, a.* from user_tables a;
說明:
pctfree表示用於保留更新操作的百分比,如果超過該值不能插入資料。
pctused表示資料所佔最低百分比,如果達到pctfree時不能插入,delete後如果達到pctused才可以用來insert

2、如果你使用的是自動管理表空間pctused不需要設定
altertable tablename pctfree values;
說明:
pctfree預設是10,主要看更新的資料有多大,可以檢視錶的max_row_len如果很大又頻繁更新可以考慮增加該值。
pctused主要看刪除資料的大小,如果很大可以調大該值,如果不是很頻繁可以設定小一些30-40
pctused+pctfree<90

3、檢視自動管理表空間
select tablespace_name,segment_space_management from user_tablespaces; --segment_space_management為auto表示自動管理表空間
主要起到節省表空間的作用

 

大資料塊的優點和缺點
優點:
? 很少的開銷
? 適合讀取連續的資料
? 適合存放大記錄
? 使用索引能獲的很好的效能
缺點:
? 資料塊衝突增加
? 佔用更多的資料庫緩衝區

 

PCTFREE 和PCTUSED設定準則
PCTFREE
? 預設是10
? 如果沒有UPDATE 則設定成0
? PCTFREE = 100 × UPD / (Average row length)

upd=update

5月1日 40位元組

5月30 50位元組 

(50-40)/50=20


PCTUSED
? 預設是40
? 如果有行刪除時設定
? PCTUSED = 100 – PCTFREE – 100 × Rows × (Average row
length) / Block size

100-20-100*10*50/8192

檢測行遷移和行連結r

如果ts segment為自動管理,就使用點陣圖不是freelist,並存放在多個快中,為了並行insert

pctused:如果是自動管理,就不用

pctfree:一致都用

 

表分析:analyze table test estimate statistics;

檢檢測測行行遷遷移移和和行行鏈連結接::
Statistic Total Per transaction ...
------------------------- ----- --------------- ...
table fetch continued row 495 .02 …
Statistic Total Per transaction ...
------------------------- ----- --------------- ...
table fetch continued row 495 .02 …
從從SSTTAATTSSPPAACCKK中中獲獲取取行行遷遷移移和和行行鏈連結接信資訊息::
SQL> ANALYZE TABLE sales.order_hist COMPUTE STATISTICS;
Table analyzed.
SQL> ANALYZE TABLE sales.order_hist COMPUTE STATISTICS;
Table analyzed.
SQL> SELECT num_rows, chain_cnt FROM dba_tables
2 WHERE table_name=‘ORDER_HIST’;
NUM_ROWS CHAIN_CNT
--------- ---------
168 102
SQL> SELECT num_rows, chain_cnt FROM dba_tables
2 WHERE table_name=‘ORDER_HIST’;
NUM_ROWS CHAIN_CNT
--------- ---------
168 102

查詢出行遷移記錄
SQL> ANALYZE TABLE sales.order_hist LIST CHAINED ROWS;
Table analyzed.
SQL> SELECT owner_name, table_name, head_rowid
2 FROM chained_rows
3 WHERE table_name = 'ORDER_HIST';
OWNER_NAME TABLE_NAME HEAD_ROWID
---------- ---------- ------------------
SALES ORDER_HIST AAAAluAAHAAAAA1AAA
SALES ORDER_HIST AAAAluAAHAAAAA1AAB
...
SQL> ANALYZE TABLE sales.order_hist LIST CHAINED ROWS;
Table analyzed.
SQL> SELECT owner_name, table_name, head_rowid
2 FROM chained_rows
3 WHERE table_name = 'ORDER_HIST';
OWNER_NAME TABLE_NAME HEAD_ROWID
---------- ---------- ------------------
SALES ORDER_HIST AAAAluAAHAAAAA1AAA

 

消除行遷移
? Export / Import
?匯出表.
? Drop或者 truncate表.
?匯入表.
? 遷移表: Alter Table Employees Move
? 複製行遷移的記錄
?使用ANALYZE命令查詢出行遷移記錄.
?複製行遷移記錄到新表中.
?刪除原始表中行遷移記錄.
?將新表中記錄複製到原始表中.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/500314/viewspace-1069848/,如需轉載,請註明出處,否則將追究法律責任。

相關文章