成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

數(shù)據(jù)庫表空間高水位的知識有哪些

本篇內(nèi)容主要講解“數(shù)據(jù)庫表空間高水位的知識有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“數(shù)據(jù)庫表空間高水位的知識有哪些”吧!

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供潮安網(wǎng)站建設(shè)、潮安做網(wǎng)站、潮安網(wǎng)站設(shè)計(jì)、潮安網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、潮安企業(yè)網(wǎng)站模板建站服務(wù),十年潮安做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

一、對于手動段空間管理(MSSM)的表空間

  • 高水位標(biāo)記(HWM)是指這個段空間中已使用和未使用的block的分界線,HWM之上的空間在格式化之前不能被使用。即在HWM以上的數(shù)據(jù)塊均為未格式化的塊,這些未格式化的塊在格式化之前是不能被 insert數(shù)據(jù)的。

  • 在數(shù)據(jù)庫事務(wù)中,當(dāng)請求新的空閑塊并且現(xiàn)有空閑列表中的塊不能滿足要求時,HWM會向上移動,然后格式化一組數(shù)據(jù)塊并加入Free List提供使用。

  • 在HWM之下的數(shù)據(jù)塊也可能存在空閑的情況,當(dāng)數(shù)據(jù)被刪除時,數(shù)據(jù)塊被釋放重新回到FreeList,又可以被其它數(shù)據(jù)變更所用,HWM通常只能向上增長,不會自動收縮。

  • HWM會影響Oracle執(zhí)行全表掃描時的讀取行為,對于全表掃描操作,Oracle必須讀取HWM下的所有數(shù)據(jù)塊,如果一個數(shù)據(jù)表由于DELETE操作刪除了大部分記錄,但是HWM并不會降低,所以再次執(zhí)行全表掃描時,Oracle仍然需要讀取對象段中所有的數(shù)據(jù)塊(也就是HWM以下的所有數(shù)據(jù)塊)

  • 對于通常的對象,我人不太需要關(guān)注其HWM的影響,但是如果表的刪除操作非常頻繁,表中的在部分Block已經(jīng)為空,那么可能就需要關(guān)注其空間性能問題。

二、簡單的估算表中的空塊的數(shù)據(jù)

     通過dba_tables視圖查出表所占用的blocks數(shù)量

SELECT blocks FROM dba_tables WHERE table_name='表名';

     通過rowid計(jì)算出實(shí)際表中的數(shù)據(jù)占用blocks數(shù)量

     目前Oracle(8i以后版本)的rowid格式是 OOOOOO.FFF.BBBBBB.RRR共18位,占用10個字節(jié),代表80位二進(jìn)數(shù),

     其中 O 代表 對象號,F(xiàn)代表文件號,B代表塊號,R代表行號,這80位的方式 為:

      32bit obj# + 10bit rfile# + 22bit block# + 16bit row#

     因此我們通過這樣一個SQL就可以大概算出表占用的block數(shù)量(取rowid的前15位)

SELECT COUNT(DISTINCT(SUBSTR(ROWID,1,15))) FROM 表名;

    兩步得出來的結(jié)果相除就可以得出使用數(shù)據(jù)塊占用比和空塊的占用比

三、對于自動段空間管理(ASSM)的表空間

  • 對于ASSM方式管理的段,在其段頭是會存在兩種高水位標(biāo)記,分別是LHWM和HHWM,即低高水位和高高水位

  • 由于在ASSM管理方式下不存在Free List ,所以LHWM和HHWM概念被引入用于實(shí)現(xiàn)段空間管理,在ASSM管理模式下,當(dāng)一個會話向表中插入數(shù)據(jù)時,數(shù)據(jù)庫首先格式化一個位圖塊(而不是像以前那樣格式化一組塊),這個位圖塊代替Free List用于跟蹤段中的數(shù)據(jù)塊的狀態(tài)變化,數(shù)據(jù)庫通過位圖塊去尋找空閑塊并在使用前對其進(jìn)行格式化。

  • ASSM管理方式下的Segment 的LHWM和HHWM的特點(diǎn)如下:

       所有在HHWM以上的數(shù)據(jù)塊一定是未格式化的塊

       所有在LHWM以下的數(shù)據(jù)塊一定是格式化的塊

       在LHWM和HHWM之間的數(shù)據(jù)塊有可能是格式化的也有可能是未格式化的

        Oracle在全表掃描一個Segment時,會一直掃描到HHWM為止

  • 對于使用ASSM管理的Segment,可以通過Oracle提供的DBMS_SPACE直接計(jì)算其空間使用情況

  • create   or replace procedure show_space_assm(
    p_segname   in varchar2,
    p_owner   in varchar2 default user,
    p_type   in varchar2 default 'TABLE' )   
    as 
    l_fs1_bytes   number;
    l_fs2_bytes   number;
    l_fs3_bytes   number;
    l_fs4_bytes   number;
    l_fs1_blocks   number;
    l_fs2_blocks   number;
    l_fs3_blocks   number;
    l_fs4_blocks   number;
    l_full_bytes   number;
    l_full_blocks   number;
    l_unformatted_bytes   number;
    l_unformatted_blocks   number;  
    procedure   p( p_label in varchar2, p_num in number )
    is
    begin
    dbms_output.put_line(   rpad(p_label,40,'.') ||p_num );
    end;
    begin
    dbms_space.space_usage(
    segment_owner      => p_owner,
    segment_name       => p_segname,
    segment_type       => p_type,
    fs1_bytes          => l_fs1_bytes,
    fs1_blocks         => l_fs1_blocks,
    fs2_bytes          => l_fs2_bytes,
    fs2_blocks         => l_fs2_blocks,
    fs3_bytes          => l_fs3_bytes,
    fs3_blocks         => l_fs3_blocks,
    fs4_bytes          => l_fs4_bytes,
    fs4_blocks         => l_fs4_blocks,
    full_bytes         => l_full_bytes,
    full_blocks        => l_full_blocks,
    unformatted_blocks   => l_unformatted_blocks,
    unformatted_bytes  => l_unformatted_bytes);  
    p('free   space 0-25% Blocks:',l_fs1_blocks); 
    p('free   space 25-50% Blocks:',l_fs2_blocks);
    p('free   space 50-75% Blocks:',l_fs3_blocks);
    p('free   space 75-100% Blocks:',l_fs4_blocks);
    p('Full   Blocks:',l_full_blocks);
    p('Unformatted   blocks:',l_unformatted_blocks);
    end;
    /
  • 我們知道,在ASSM下,block的空間使用分為free space: 0-25%,25-50%,50-75%,70-100%,full 這樣5中情況,show_space_assm會對需要統(tǒng)計(jì)的table匯總這5中類型的block的數(shù)量。

    我們來看table HWM1的空間使用情況:

    SQL> exec show_space_assm('HWM1','DLINGER');

    free space 0-25% Blocks:.................0

    free space 25-50% Blocks:...............1

    free space 50-75% Blocks:...............0

    free space 75-100% Blocks:..............8

    Full Blocks:.....................................417

    Unformatted blocks:.........................0

    這個結(jié)果顯示,table HWM1,full的block有417個,free space 為75-100% Block有8個,free space 25-50% Block有1個。當(dāng)table HWM下的blocks的狀態(tài)大多為free space較高的值時,我們考慮來合并HWM下的blocks,將空閑的block釋放,降低table的HWM。

四、降低高水位的方法

  • 導(dǎo)出/導(dǎo)入與TRUNCATE結(jié)合

    truncate命令可以降低高水位,但是可能這種方法的場景非常少

    可以通過EXP導(dǎo)出數(shù)據(jù)或者使用CTAS創(chuàng)建一張香表,然后Truncate表,再導(dǎo)入或者insert回?cái)?shù)據(jù),但是對于不間斷服務(wù)的數(shù)據(jù)表并不合適

  • RENAME和INSERT結(jié)合

    對于連續(xù)使用的數(shù)據(jù)表,如果數(shù)據(jù)是以寫為主的日志類數(shù)據(jù),則可以通過RENAME將數(shù)據(jù)表更名,然后按原來的結(jié)構(gòu)重建數(shù)據(jù)表,此時插入操作可以恢復(fù),這個過程非常迅速,對于數(shù)據(jù)庫影響較小,然后可以將RENAME表中的數(shù)據(jù)插入回來,這就完成了數(shù)據(jù)整理,HWM可以降低,這種方法適用于寫為主的業(yè)務(wù)類型,不適合增刪改查頻繁的對象。

  • 在線重定義(DBMS_REDEFINITION)

    從Oracle 9I開始引入了在線重定義特性,通過DBMS_REDEFINITION包可以對表進(jìn)行在線重定義,如修改表字段名稱、增加字段等,當(dāng)然也可以借用這個包進(jìn)行空間整理。

    在線重定義過程中,Oracle通過中間的臨時表來記錄中間變化數(shù)據(jù),完成重定義后可以將數(shù)據(jù)整合到重定義表中,數(shù)據(jù)庫的正常操作可以繼續(xù)進(jìn)行。

  • Shrink特性

    從Oracle 10g開始引入了用于支持在線空間重整,這僦是聯(lián)機(jī)段空間回收功能 (Shrink Database Segments Online)

    聯(lián)機(jī)段收縮公對ASSM表空間中的表有效,Shrink的本質(zhì)就是對表執(zhí)行一系列的DML操作,刪除表末端的稀疏行,并在表的頂端重新插入。通過這樣的一系列操作,可以填滿表段中的“漏洞”空間,逐步將所有剩余空間留在表的末端,然后Oracle可以重置該表的HWM,釋放空間。由于Shrink是針對數(shù)據(jù)行進(jìn)行處理的 ,在表上會獲得行級排他鎖,所以并不會影響全表的DML操作,這也是Online的意義所在,但是Shrink可能會產(chǎn)生大量Redo,影響歸檔量,在操作時需要考慮。

    由于回收段空間需要移動行數(shù)據(jù),數(shù)據(jù)的rowid會發(fā)生變化,索引會被同時維護(hù),也因此在執(zhí)行Shrink之前,需要設(shè)置表的ENABLE ROW MOVEMENT屬性。

    但需要注意的是,由于段空間重整是通過DML操作來完成的,所以會產(chǎn)生額外的redo,如果數(shù)據(jù)表非常大,那么產(chǎn)生的Redo可能是生產(chǎn)接受的

  • alter table 表名 enable row movement;
  • alter table 表名 shrink space;

    不支持Shrink的表:

    IOT mapping tables

    Tables with rowid based materialized views

    Tables with function-based indexes

    SECUREFILE LOBs

    Compressed tables

  • Move對象

    通過Move操作移動對象,可以降低HWM,但是Move之后,索引需要重建,而且在Move的過程中會影響在線應(yīng)用,所以這種方法使用較為有限

  • 其它方法

    空間的重建始終是一個難題,各種方法都是以一定的性能犧牲為代價(jià)的,這就使得很多方法在實(shí)際的生產(chǎn)過程中并不可用,所以更好的辦法應(yīng)該是從應(yīng)用入手、從規(guī)劃入手,從最開始就能夠避免一些可能出現(xiàn)的問題。

    在最常采用的方法中,分區(qū)是一個常用的手段,涉及大量數(shù)據(jù)變更的數(shù)據(jù)表,很多可以通過分區(qū)來處理,由于分區(qū)表可以針對分區(qū)進(jìn)行諸如DROP、TRUNCATE等操作,從而可以很容易地對分區(qū)進(jìn)行維護(hù),進(jìn)而解決一系列的空間問題。

    當(dāng)然分區(qū)并不是萬能的,其適用環(huán)境也是有限的,所以真正能夠解決問題的方法還是來自己我們自己,通過對Oracle各種技術(shù)的認(rèn)識和了解后,我們才能夠制定出適合我們需要的空間維護(hù)手段。

到此,相信大家對“數(shù)據(jù)庫表空間高水位的知識有哪些”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

網(wǎng)頁標(biāo)題:數(shù)據(jù)庫表空間高水位的知識有哪些
分享路徑:http://jinyejixie.com/article10/gdhodo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、定制開發(fā)、網(wǎng)站設(shè)計(jì)、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站制作網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
山阳县| 舟山市| 宜昌市| 清苑县| 来宾市| 延安市| 天水市| 巴彦淖尔市| 涿鹿县| 翼城县| 叶城县| 盐津县| 万载县| 进贤县| 基隆市| 龙门县| 黑龙江省| 长治市| 甘肃省| 嘉定区| 久治县| 临颍县| 子洲县| 通辽市| 南靖县| 聂荣县| 香港| 承德县| 枣庄市| 凤冈县| 新津县| 冕宁县| 龙州县| 新安县| 治县。| 大冶市| 古田县| 长春市| 林口县| 额敏县| 彭州市|