日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle 段区块 分配 (2)

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle 段区块 分配 (2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接上文 Oracle 段區塊 分配 (1)

, oracle 的行遷移和行鏈接. (
Row Chaining and Migrating)
???
上面提過了, oracle是允許把多個數據行放到同1個塊中的。
???? 而且, oracle會盡量把同1個數據行的所有數據放到同1個塊中, 這樣避免讀取1個數據行要訪問2個或以上的塊.

???? 而oracle是怎么避免這個問題呢。1個關鍵就是pctfree 和 pctused 的設置

?????
6.1 pctfree
????
這個參數在新建1個table/cluster的時候可以被指定。? 默認是10%

????? 假如 pctfree 的值是10%, 那么1個block的剩余空間一但只剩下10%時, 這個block就不允許insert 新的數據行入來了。
????? 那么這個10% 空間是否就沒用呢, 不是, 它用于預留給這個block 當前存在的數據行
數據行因為update操作而造成的數據增長。

???????? 也就是說當1個block的剩余空間減少到pctfree的值時。 就不允許被insert 新的數據行了。但是里面的數據允許被update或delelte.

???????? 這樣做的好處是避免因為update動作, 導致blocks的里面空間不夠用. 當因為這種情況出現時, 那么其中一條或多條數據行的數據就在這個block里裝不下了。

???????? 6.2 行遷移
??????? 因為上面的出現的情況
???????? oracle就會把這個整個行移動另1個塊(很可能不是物理連接的下1個塊),而在原來那個block那個行原來位置寫上1個指針。指向被轉移到的那個新block的地址(編號)。 這個就是行遷移( Row chainnig)

???????? 這個情況下, 為了讀取這個數據行。 就必須讀取兩個塊。 性能下降了。
???????? 所以行遷移的出現通常是因為pctfree過少。 被一次update動作擠暴..
???????? 行遷移多了,就會導致數據表性能下降。

???????? 6.3 行鏈接

????
上文說過了, Oracle會盡最大努力把1個數據所有行放如到1個中/
????? 但是當1個數據行數據實在太大(大于塊的容量), 這時就必需用2個或以上的block來存放這個數據行。

????? 鏈接同樣會導致訪問1個數據行而訪問多個blocks

????? 而行鏈接通常是因為blocksize大小不足導致的。 所以如果一張表的列很多很長, 建議把它放到blocksize 比較大的表空間中。


????
? ? ? ?? 6.4 查看行遷移和行鏈接.
?
SELECT table_name,NUM_ROWS, --表中的記錄數
BLOCKS, --表中數據所占的數據塊數 //高水位線
EMPTY_BLOCKS, --表中的空塊數
AVG_SPACE, --數據塊中平均的使用空間
CHAIN_CNT, --表中行連接和行遷移的數量
AVG_ROW_LEN --每條記錄的平均長度
FROM DBA_TABLES where table_name='EMP'


利用如上語句去查看 行遷移的或行鏈接的數量。
如果chain_cnt的值很大。 ? 那么就要查看avg_row_len 平均長度。 如果行平均長度很小,遠小于blocksize, 那么這個問題就很可能是行遷移導致的, 這時我們就要調整pctfree的大小。

如果avg_row_len的值很接近blocksize, 則可以判斷肯定是發生了行鏈接了。 建議把表轉移到blocksize較大的表空間。 ??????



??????? 6.5 pctused
?????
那么是否block的剩余空間一旦觸發pctfree,就永遠不能被Insert新數據行呢。
?????? 時pctused 的作用就出來了, 假如pctused設置為40%

?????? 當這個block里面的數據被delete 或update造成了數據減少, 當數據減少到40%時, 這時pctfree的限制被接觸。又能被insert新的數據了,直至重新觸發pctfree.

?????? 但是在段的管理模式是自動管理模式(強烈推薦的模式)下,設置這個參數是沒意義的.所以
oracle會自動管理,所以大部分情況請忽略掉這個參數吧.

總結

以上是生活随笔為你收集整理的Oracle 段区块 分配 (2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。