Oracle 高水位问题
生活随笔
收集整理的這篇文章主要介紹了
Oracle 高水位问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- Oracle 對數據段的管理有一個高水位(HWM, High Water Mark)的概念。高水位是數據段中使用過和未使用過的數據塊的分界線。高水位以下的數據塊是曾使用過的,以上的是從未被使用或初始化過的。
- 當 Oracle 進行全表掃描(FTS, Full table scan)的操作時,它會讀高水位下的所有數據塊。如果高水位下還有很多空閑空間(碎片),讀取這些空閑數據塊會降低操作的性能。
- 當針對一個表的刪除操作很多時,表會產生大量碎片。刪除操作釋放的空間不會被插入操作立即重用,甚至永遠也不會被重用,這被稱之為高水位問題;
如何檢查表是否有高水位問題?
高水位問題會產生什么不好的影響?
- 查詢響應時間(尤其是全表掃描)變慢
- 產生大量行遷移
- 浪費空間
如何解決高水位問題?
10g之前有兩種方式
10g之后
提供 shrink 命令,需要表空間是基于自動段管理的,分兩步走:
- 第一步:整理表,不影響DML操作
- 第二步:重置高水位,此時不能有DML操作
也可以一步到位:
alter table TABLE_NAME shrink space;shrink 的優勢:不需要重建索引。可以在線操作。
注意 :segment shrink執行的兩個階段:
- 注意:shrink space語句兩個階段都執行。shrink space compact只執行第一個階段。如果系統業務比較繁忙,可以先執行shrink space compact重組數據,然后在業務不忙的時候再執行shrink space降低HWM釋放空閑數據塊。
轉載于:https://www.cnblogs.com/fubinhnust/p/9925731.html
總結
以上是生活随笔為你收集整理的Oracle 高水位问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot+mybatis+t
- 下一篇: iOS 之持久化存储 plist、NSU