oracle实现分段,用Oracle分段空间管理功能改进数据库性能
如果Oracle數據庫表出現大量碎片數據,則會浪費磁盤空間和嚴重影響性能。這時可以使用Oracle分段空間管理功能,特別是Oracle數據庫分段壓縮功能。
更新或刪除表的記錄,會在數據塊中形成許多的空白空間。一些空白空間會被后來插入的記錄重用。然而,刪除和插入的大小差別會產生極小的碎片空間,以至它們永遠也不會被再使用。此外,在一個已經刪除大量記錄的表中,表分段將在高位線下包含大量的稀疏(或空白)塊。這樣會大大降低全表掃描的效率。
在線分段壓縮功能是Oracle分段空間管理的首選方法,它會回收分段中高位線之下的碎片空閑空間。在線分段壓縮操作不同于ALTER TABLE、INDEX或CLUSTER命令的DEALLOCATE UNUSED子句。解除分配操作會直接釋放分段中高位線之上的空閑空間。壓縮分段會整合高位線之下的碎片空閑空間和壓縮數據。高位線將向下移,回收的空間將會釋放。在壓縮操作執行之后,分段的數據將保存到較少的塊中。這樣可以優化緩存使用率,并且減少全表掃描時要讀取的塊數。
使用分段壓縮的Oracle分段空間管理
分段壓縮可以在使用表的工作時間執行。它不會影響DML操作或查詢,也不需要額外的磁盤空間。在壓縮操作結束時,并發DML操作將會暫停一小段時間,這段時間將用于釋放一些空間。分段的所有索引都會在壓縮操作期間保持不變。在操作完成之后,它們一樣保持不變。
壓縮操作會在物理上將數據文件的記錄移到新位置。要實現這個操作,必須使用ALTER TABLE.ENABLE ROW MOVEMENT命令,啟用對象的記錄移動。然后,還需要禁用分段中所有基于記錄ID的觸發器。此外,壓縮操作只能在本地管理且啟動自動分段空間管理的表空間的分段上執行。在線分段壓縮不支持以下幾種分段類型:壓縮表、IOT表、SecureFile LOB、有若干功能索引的表及有基于ID的物化視圖的表。
要分析在線壓縮分段是否會提高分段的運行效率,最簡單方法是使用Segment Advisor。Segment Advisor會檢查自動負載庫的使用率和增長統計信息,并從分段提取抽樣數據,從而確定可以回收空間的分段。默認情況下,分析工具會在維護時間內作為一個自動化維護任務執行。此外,它也可以手動執行。如果分析工具發現一個分段可以回收大量的空閑空間,那么它會建議執行一次在線分段壓縮操作。如果對象不適合執行分段壓縮操作,那么它會建議在線重新定義表(也稱為重組)。執行在線重定義的最終結果與在線分段壓縮很相似。然而,重定義操作在執行過程中需要使用額外的磁盤空間。
Oracle分段空間管理工作可以壓縮表、索引表、索引、分區、子分區、物化視圖或物化視圖日志的空間。這個操作的執行方式是:在各種ALTER語句(例如,ALTER TABLE、ALTER INDEX、ALTER MATERIALIZED VIEW或ALTER MATERIALIZED VIEW LOG)中使用SHRINK SPACE子句。此外,SHRINK SPACE子句還有兩個可選關鍵字,它可以控制壓縮操作的行為:COMPAT – 在子句中指定這個參數,就會把壓縮分段操作分布兩個階段。數據庫會整理分段空間的碎片,壓縮表的記錄,但是壓縮操作不會重置高位線或釋放空間。這個參數通常用在一些沒有長查詢操作的數據庫,這些表查詢可能會跨越多個操作,它們會試圖從回收塊中讀取數據。在數據庫活動較少的時候,數據庫會執行第二個SHRINK SPACE操作完成整個過程,但是這一次命令不帶COMPAT關鍵字。
CASCADE – 這個參數會讓分段壓縮操作在對象的所有獨立分段上執行。例如,壓縮一個表時添加CASCADE,就會在表的所有索引上執行分段壓縮操作。
關于ALTER TABLE、ALTER INDEX、ALTER MATERIALIZED VIEW和ALTER MATERIALIZED VIEW LOG語句和SHRINK SPACE子句的語法和限制,請參見Oracle數據庫SQL語言參考文檔。
總結
以上是生活随笔為你收集整理的oracle实现分段,用Oracle分段空间管理功能改进数据库性能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 美股周一:三大股指均已六连涨,理想汽车涨
- 下一篇: linux cmake编译源码,linu