Oracle 高水位(HWM)回收原理及操作方法

来源:http://www.cnblogs.com/ZiyuanZhu/archive/2016/10/10/5923620.html
-Advertisement-
Play Games

一. 高水位(HWM)及其產生原因 High Water Mark,HWM) 是Oracle(Segment)級別的概念。在僅有DML(比如delete,insert)操作時,高水位線只會增長,不會降低。具體來說,由於程式使用的delete語句不回收使用過的空間,數據雖然刪除了,但是高水位線卻沒有降 ...


一.  高水位(HWM)及其產生原因

       High Water Mark,HWM) 是Oracle(Segment)級別的概念。在僅有DML(比如delete,insert)操作時,高水位線只會增長,不會降低。具體來說,由於程式使用的delete語句不回收使用過的空間,數據雖然刪除了,但是高水位線卻沒有降低,仍然處於之前的水位。

         下圖為一個Segment內高水位不斷增長的示意圖:

          註:一個表在初次插入記錄時,Oracle會為其分配Segment和block。

  

         插入大量數據後,高水位線隨之增長

          

         當數據被刪除(Delete)後,高水位線並未下降

     

       數據block       已分配的block      未分配block

圖1. 段(Segment) 內數據塊(block)使用示意圖

二.  回收操作的目

        1. 降低Oracle資料庫中某些段(Segment)的高水位線,減少使用空間,從而避免不必要的表空間文件膨脹。在此稍作解釋:

            如上一節所述,隨著高水位線的增長,表空間文件中的used space部分會逐漸增大,當所有的free  space均被使用後,表空間文件的大小會在操作系統級別增大,直到達到最大可擴展大小。如下圖所示:

        2. 提高表的掃描效率:由於Oracle的select語句會掃描高水位線以下的所有block,已分配而無數據的block過多時,必然會影響語句的執行效率。而降低高水位能提高這一效率。

三.  回收高水位的方法和操作步驟

                在查詢過參考資料、咨詢過相關專家、並且在測試系統充分測試後,在期權生產系統中對當前表空間的一些表進行了高水位回收。擇一例並附步驟解釋如下:

        操作對象選擇當前數據表空間TX_DATA_TBS中的BK_OPT_CUST_HOLD_DETAIL表。

        此操作在關閉應用程式後執行,併在執行後重新開啟程式。

        步驟主要分為三個:

                       1.    操作前狀態檢查,供操作後比對;

                       2.    高水位回收操作;

                       3.    操作後狀態檢查,與操作前狀態比對。

         以下為詳細步驟,關鍵查詢結果用不同顏色標註。

          1.操作前狀態檢查

           -- 查看各表空間的空餘空間(free space),此時TX_DATA_TBS表空間空餘部分(free space)為721MB。

-- 查看表空間文件狀態,可見TX_DATA_TBS表空間文件當前大小為9900 MB。

-- 查看待回收的表狀態。 -- 查詢表BK_OPT_CUST_HOLD_DETAIL記錄數。

-- 查詢BK_OPT_CUST_HOLD_DETAIL表上的索引狀態。

-- 分析BK_OPT_CUST_HOLD_DETAIL表的狀態。

-- 查詢BK_OPT_CUST_HOLD_DETAIL表的高水位狀態。可知回收前該表所在段共占用122234個block。

-- 查詢該表所在段占用磁碟大小。目前該表所在段共占用955MB。

2.高水位回收操作 -- 由於shrink space操作需要使用“行移動”功能,需要在操作前開啟該功能。

-- 收縮表,回收高水位。

-- 關閉“行移動”功能。

3.操作前狀態檢查 -- 查詢表記錄數、索引情況。與操作前比對,未發生改變。

-- 再次分析BK_OPT_CUST_HOLD_DETAIL表的狀態。

-- 再次查詢BK_OPT_CUST_HOLD_DETAIL表的高水位狀態。可知回收後該表所在段共占用599 個block,回收122234-599 = 121635個block。

-- 再次查詢該表所在段占用磁碟大小。回收後該表所在段共占用4.875 MB,回收950MB。

 

-- 再次查詢表空間使用情況。與回收前對比,表空間空餘空間上漲1671-721 = 950 MB,與表回收空間相同。

-- 但是表空間文件大小仍為9900 MB。可見shrink space操作僅作用於數據段Segment,而對錶空間文件級別的大小並無影響。如要改變表空間文件大小,需要另外使用表空間級別的resize操作。 用下圖可簡單解釋回收前後表空間內部空間的變化。

 

四.  小結 

1.回收高水位操作shrink space可對高水位之下未儲存數據的block加以回收,並降低高水位線。既能減少空間使用,又能提高查詢效率,而對錶內的數據、表上的索引沒有影響。

2.回收高水位操作shrink space是表和段級別的操作,能釋放表空間文件內的空間,但不能縮小表空間文件的大小。

3.回收操作是DDL操作而非DML操作,不由應用程式完成,需要管理員定期執行。

           
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.Android Studio 將module編譯打包成aar文件,module依賴的 (例如 )不會被打包進入aar文件,應用引入該aar文件(無論是本地引入,還是網路庫引入)時,都還需要在應用(app)module的依賴中填加aar module的依賴。否則應用運行時會crash。 因此,開發 ...
  • Android Weekly中文筆記, Issue #225. 本期內容包括: Android 7.0的Quick Settings; Firebase; 相容舊版本的shared element transition; Wear; ORM: 用ActiveAndroid做資料庫存儲; 崩潰報告工具... ...
  • 在之前的文章中,我們將用戶的密碼使用SharedPreferences存儲,我們打開/data/data/com.wuyudong.mobilesafe/shared_prefs文件夾下的 config.xml 文件,導入到本地,查看內容: 密碼居然使用的是明文,這樣是非常不安全的。這裡採用md5加 ...
  • 做App測試時監測使用期間的cpu,記憶體,流量,電量等指標時,發現的企鵝很好用的工具。 備份至此,方便後期查閱 轉載自CSDN的文章:【騰訊開源】Android性能測試工具APT使用指南 原文URL http://www.csdn.net/article/2014-04-23/2819366-ten ...
  • android去掉滑動到頂部和底部的陰影 解釋一下listview用到的各個屬性 去除拖動時預設的帶顏色的背景: android:cacheColorHint="#00000000" 去除ListView滑到頂部和底部時邊緣的黑色陰影: android:fadingEdge="none" 去除下滑到 ...
  • 本文接著實現“確認密碼”功能,也即是用戶以前設置過密碼,現在只需要輸入確認密碼 本文地址:http://www.cnblogs.com/wuyudong/p/5940718.html,轉載請註明出處。 佈局文件和《Android 手機衛士--設置密碼對話框》中的佈局基本類似,所有copy一下,修改一 ...
  • 本文章向大家介紹phpmyadmin #2003 無法登錄 MySQL伺服器的解決方法,需要的碼農可以參考一下。 通過phpmyadmin連接mysql資料庫時提示:“2003 無法登錄 MySQL伺服器”。。。很明顯這是沒有啟動mysql服務,右擊我的電腦-管理-找到服務,找到mysql啟動一下, ...
  • 背景 背景 我們知道Azure Sql Database 可以降低運維成本、是一種Pass模式,有資源彈性設置,可以自由調整資源自動對應不同業務高峰(當然也可以降低費用成本),也方便項目後期的資源擴展,以及一些其他優點或特性,這就不一一列出。那麼資料庫開發工程師來說,操作Azure Sql Data ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...