資料塊調整
層次
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料檔案位置調整
- 調整資料庫引數資料庫
- Oracle 資料庫引數調整Oracle資料庫
- 資料庫引擎調整顧問資料庫
- oracle資料庫的效能調整Oracle資料庫
- 調整資料庫的資料檔案記錄資料庫
- 調整CALLCENTER系統的資料庫資料庫
- oracle資料庫的效能調整(轉)Oracle資料庫
- 達夢資料庫引數調整方法資料庫
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- 【效能調整】海量資料的效能設計
- 【資料操作】SQL語句效能調整原則SQL
- 為什麼資料庫調整大小如此困難?資料庫
- 資料庫安裝初始化引數調整資料庫
- Oracle資料庫效能調整 - 建議器 ADVICEOracle資料庫
- 如何調整畫布內容並獲得調整大小(壓縮)的影像Base64資料?
- 資料字典快取命中率低怎麼調整。快取
- 最佳化調整Oracle 8i資料庫(轉)Oracle資料庫
- 調節Oracle資料緩衝區引數,緩衝整個資料庫(轉)Oracle資料庫
- Gamma調整GAM
- Oracle效能調整之--DML語句效能調整Oracle
- 調整分割槽後分割槽不見的資料找到方法
- 解決latch free問題的資料庫引數調整資料庫
- 【調優】從吞吐量角度提升資料庫整體效能資料庫
- 【DataGuard】調整Data Guard資料保護模式詳細步驟模式
- Oracle效能最佳化調整--調整重做機制Oracle
- 網路調整——效能調整手冊和參考
- 阿里雲:一張圖看懂DTS資料同步最新價格調整阿里
- Oracle整體資料庫複製解決方案調查報告Oracle資料庫
- Oracle資料庫SQL語句效能調整的基本原則 (3)Oracle資料庫SQL
- Oracle資料庫SQL語句效能調整的基本原則 (2)Oracle資料庫SQL
- Oracle資料庫SQL語句效能調整的基本原則 (1)Oracle資料庫SQL
- Nginx調整(一)Nginx
- oracle 效能調整Oracle
- 調整策略工具
- 【TABLESPACE】資料庫Open狀態下調整表空間資料檔案位置及名稱資料庫
- 【TABLESPACE】資料庫Mount狀態下調整表空間資料檔案位置及名稱資料庫
- PostgreSQL技術大講堂 - 第32講:資料庫引數調整SQL資料庫