最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Oracle提高空間使用率的方法小結(jié)

 更新時(shí)間:2024年02月21日 09:10:23   作者:Dnui_King  
這篇文章給大家詳細(xì)介紹了Oracle 如何提高空間使用率,文中給大家總結(jié)了八種提高Oracle空間使用率的方法,并通過圖文講解的非常詳細(xì),需要的朋友可以參考下

一,行遷移和行鏈接

oracle盡量保證一行的數(shù)據(jù)能夠放在同一個(gè)數(shù)據(jù)塊當(dāng)中,有的時(shí)候行會(huì)發(fā)生行遷移和行鏈接。

行鏈接 :有一個(gè)列的字段是大對(duì)象(long,longlong)一行占的數(shù)據(jù)一整個(gè)塊都放不下,則oracle會(huì)把這行的數(shù)據(jù)分為兩部分或多部份,存放到不同的數(shù)據(jù)塊,這種現(xiàn)象叫做行鏈接。

行鏈接的缺陷顯而易見,原本我只需要找到一個(gè)塊就能找到所有數(shù)據(jù),現(xiàn)在可能讀更多的塊才能夠找到數(shù)據(jù),增加了io。

行遷移:原本的行在一個(gè)數(shù)據(jù)塊中,如果我們?cè)谶@一行進(jìn)行了update操作,使得這一行的尺寸變大了

oracle在默認(rèn)情況下,如果這一行發(fā)生了增長(zhǎng),所需的多余空間會(huì)從這個(gè)塊的可用空間里面去獲取,這是最好的情況。但是如果這個(gè)塊可用的空間用滿了,則會(huì)發(fā)生行遷移。oracle會(huì)把這一行的數(shù)據(jù)遷移到一個(gè)新的數(shù)據(jù)塊,但是在原來的塊中會(huì)保留它的row id。

缺陷也是如此,原來只需要一次io,現(xiàn)在需要兩次io,降低了性能。

二,自動(dòng)段空間管理(Auto Segment Space Management)

簡(jiǎn)稱ASSM

段是oracle管理空間的一種機(jī)制

如果表空間是自動(dòng)管理的,則會(huì)用到位圖管理機(jī)制。

BMB(bitmap blocks) 在一個(gè)段中會(huì)有很多個(gè)位圖塊,在位圖中記錄了對(duì)應(yīng)塊的信息,如(剩余空間,可用空間,這個(gè)機(jī)制使得管理更加靈活)

總結(jié)一下就是:我們給段分配很多數(shù)據(jù)塊,oracle會(huì)拿出一些數(shù)據(jù)塊來記錄這些數(shù)據(jù)塊的使用情況,這些數(shù)據(jù)塊叫做:BMB(位圖塊)。

三,oracle表空間分配類型

主要分為兩種方式:1.uniform(固定分配)。2.autoallocate(自動(dòng)分配)

示例:

自動(dòng)分配:

固定分配:

四,使用 unusable索引

如果把一個(gè)索引變成unusable,oracle會(huì)把這個(gè)索引段刪掉,但是保留索引的定義,節(jié)省了空間,以后需要時(shí)可以用rebuild重建索引。

五,使用臨時(shí)表

臨時(shí)表只有在事務(wù)和會(huì)話過程中存在數(shù)據(jù)。

如果我們以后為了測(cè)試。表中的數(shù)據(jù)有沒有無(wú)所謂,我們可以基于有數(shù)據(jù)的表建一個(gè)臨時(shí)表,我們?cè)谂R時(shí)表上面進(jìn)行測(cè)試,退出會(huì)話時(shí)oracle會(huì)把這個(gè)臨時(shí)表刪掉。

臨時(shí)表有兩種類型:

Global:建的臨時(shí)表的定義所有的會(huì)話都可見,內(nèi)容只有創(chuàng)建臨時(shí)表的會(huì)話看得見,其它會(huì)話不可見

Private:只有創(chuàng)建臨時(shí)表的會(huì)話可見,其它會(huì)話不可見。

臨時(shí)表的段只有在進(jìn)行第一次insert操作時(shí)才會(huì)分配,

創(chuàng)建全局臨時(shí)表:

插入數(shù)據(jù)后當(dāng)前會(huì)話可見,其它會(huì)話不可見。

on commit delete 關(guān)鍵字:當(dāng)事務(wù)提交,臨時(shí)表數(shù)據(jù)全部刪除。

創(chuàng)建私有臨時(shí)表:

注意:私有臨時(shí)表 ,表名必須以  ORA$PTT_開頭。

私有表前綴由private_temp_table_prefix 指定,可以自己指定

六,表壓縮

1.Basic table compression(基礎(chǔ)壓縮) 壓縮率:10倍

2.Advanced row compression(高級(jí)行壓縮) 壓縮率:2-4倍

壓縮原理:

Basic table compression 當(dāng)可用空間 是0 時(shí)觸發(fā)壓縮。

Advanced row compression 當(dāng)可用空間 剩余10% 觸發(fā)壓縮

例如:數(shù)據(jù)塊可用空間只剩下百分十10,觸發(fā)壓縮,把原來塊的數(shù)據(jù)進(jìn)行壓縮,騰出來一部分空間來存放新的數(shù)據(jù),再進(jìn)行insert操作后,可用空間又只剩下百分十10,再一次進(jìn)行壓縮。

總結(jié):oracle的壓縮原理是逐步壓縮。

basic壓縮:

空間大小比較:

注意如果使用 basic壓縮方式   使用insert方式進(jìn)行插入則不會(huì)進(jìn)行壓縮。

高級(jí)行壓縮:

不壓縮,插入數(shù)據(jù)十次:

 insert into EMP_NOCMP select * from emp_nocmp; (重復(fù) 10 次)

高級(jí)行壓縮,插入數(shù)據(jù)十次:

insert into EMP_CMP select * from emp_cmp; (重復(fù) 10 次)

所占空間對(duì)比:

比較清晰,高級(jí)行壓縮所占空間明顯減少。

表壓縮缺陷:

打開計(jì)時(shí)器,對(duì)表進(jìn)行update操作,比對(duì)壓縮表和非壓縮表效率:

可見非壓縮表 update性能明顯高于壓縮表。

七,通過 shringking 操作回收空間

只能對(duì)段空間管理方式為ASSM方式的表空間使用。

如果塊中發(fā)生大量的delete操作,導(dǎo)致塊中的行不緊湊,浪費(fèi)了大量塊空間,我們可以通過shringking 操作回收空間,降低高水位線,從而高水位線以上的塊就會(huì)被回收。

示例:創(chuàng)建一個(gè)表,表空間段空間管理為自動(dòng)管理,即ASSM,插入十五次數(shù)據(jù)。

insert into emp_shr select * from emp_shr;(執(zhí)行15次)

查看數(shù)據(jù)字典,該表占用空間情況:

進(jìn)行刪除操作,導(dǎo)致出現(xiàn)空閑空間。

讓表允許移動(dòng)行,否則無(wú)法使用shrink:

對(duì)表進(jìn)行shrink整理,查看數(shù)據(jù)字典。

發(fā)現(xiàn)此時(shí)空間并沒有被釋放,原因是我們的高水位線并沒有變低,只是把行變的緊湊了,沒有塊被oracle自動(dòng)回收。

改變高水位線,讓高水位線以上的空閑塊被oracle回收。

此時(shí),查看數(shù)據(jù)字典。

八,可恢復(fù)空間分配。

Oracle 數(shù)據(jù)庫(kù)服務(wù)器提供了一種暫停和稍后恢復(fù)執(zhí)行的方法空間分配失敗時(shí)的大型數(shù)據(jù)庫(kù) 操作。

簡(jiǎn)而言之:假如我們的表空間大小不夠了,正常來說會(huì)直接報(bào)錯(cuò),假如我們執(zhí)行了兩個(gè)小時(shí)的inert操作,到最后因?yàn)楸砜臻g大小不足而導(dǎo)致操作失敗就很崩潰,所以oracle允許我們有補(bǔ)救措施。

resumable_timeout = 300;

假如我們的操作因?yàn)楸砜臻g大小不足,設(shè)置這個(gè)參數(shù)后不會(huì)立即報(bào)錯(cuò),而是會(huì)把這個(gè)事務(wù)掛起,在300s中,如果我們有補(bǔ)救措施,如resize表空間,增加了數(shù)據(jù)文件,使得表空間足夠進(jìn)行接下來的操作,該操作將繼續(xù)進(jìn)行。

如果300s之內(nèi)沒有補(bǔ)救,才會(huì)報(bào)錯(cuò),該操作失敗。

以上就是Oracle提高空間使用率的方法小結(jié)的詳細(xì)內(nèi)容,更多關(guān)于Oracle提高空間使用率的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Oracle + mybatis實(shí)現(xiàn)對(duì)數(shù)據(jù)的簡(jiǎn)單增刪改查實(shí)例代碼

    Oracle + mybatis實(shí)現(xiàn)對(duì)數(shù)據(jù)的簡(jiǎn)單增刪改查實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于利用Oracle + mybatis如何實(shí)現(xiàn)對(duì)數(shù)據(jù)的簡(jiǎn)單增刪改查的相關(guān)資料,文中圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Oracle 11GR2的遞歸WITH子查詢方法

    Oracle 11GR2的遞歸WITH子查詢方法

    這篇文章主要介紹了Oracle 11GR2的遞歸WITH子查詢方法,非常不錯(cuò),具有參考借鑒價(jià)值,朋友可以參考下
    2017-02-02
  • Oracle數(shù)據(jù)加載和卸載的實(shí)現(xiàn)方法

    Oracle數(shù)據(jù)加載和卸載的實(shí)現(xiàn)方法

    這篇文章主要介紹了Oracle數(shù)據(jù)加載和卸載的實(shí)現(xiàn)方法,非常不錯(cuò),具有一定的參考借鑒加載,需要的朋友可以參考下
    2018-08-08
  • oracle AWR性能監(jiān)控報(bào)告生成方法

    oracle AWR性能監(jiān)控報(bào)告生成方法

    這篇文章主要為大家詳細(xì)介紹了oracle AWR性能監(jiān)控報(bào)告的生成方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • oracle實(shí)現(xiàn)根據(jù)字段分組排序,取其第一條數(shù)據(jù)

    oracle實(shí)現(xiàn)根據(jù)字段分組排序,取其第一條數(shù)據(jù)

    這篇文章主要介紹了oracle實(shí)現(xiàn)根據(jù)字段分組排序,取其第一條數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • PLSQL14下載與安裝使用教程

    PLSQL14下載與安裝使用教程

    PL/SQL Developer 14是allround automations最新推出的一款PL/SQL數(shù)據(jù)庫(kù)管理軟件,但是是收費(fèi)的,今天小編給大家?guī)砹薖LSQL14下載與安裝使用教程,一起看看吧
    2021-09-09
  • oracle適配器連接不上的解決辦法

    oracle適配器連接不上的解決辦法

    racle 的Developer連接不上報(bào)錯(cuò):listener does not currently know of SID given in connect descriptor,如何解決呢?下面小編給大家分享oracle適配器連接不上的解決辦法,需要的朋友可以參考下
    2015-10-10
  • 解決Hibernate JPA中insert插入數(shù)據(jù)后自動(dòng)執(zhí)行select last_insert_id()

    解決Hibernate JPA中insert插入數(shù)據(jù)后自動(dòng)執(zhí)行select last_insert_id()

    這篇文章主要介紹了Hibernate JPA中insert插入數(shù)據(jù)后自動(dòng)執(zhí)行select last_insert_id()的解決方法。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-12-12
  • Oracle歸檔日志爆滿問題的處理方法

    Oracle歸檔日志爆滿問題的處理方法

    Oracle歸檔日志(Archivelog)是Oracle數(shù)據(jù)庫(kù)的一種特性,它主要用于數(shù)據(jù)恢復(fù)和高可用性的目的,但有什么經(jīng)常會(huì)出現(xiàn)無(wú)法連接,手動(dòng)清除歸檔日志后可以恢復(fù)訪問,但是過不了幾天依舊會(huì)爆滿,所以本文給大家介紹了Oracle歸檔日志爆滿問題的處理方法,需要的朋友可以參考下
    2024-10-10
  • 淺析Oracle和Mysql分頁(yè)的區(qū)別

    淺析Oracle和Mysql分頁(yè)的區(qū)別

    Mysql使用limit分頁(yè)而Oracle使用rownum分頁(yè),下面通過本文給大家介紹Oracle和Mysql分頁(yè)的區(qū)別,需要的的朋友參考下吧
    2017-09-09

最新評(píng)論

灵山县| 衡阳市| 栖霞市| 清流县| 隆昌县| 和硕县| 黎城县| 抚顺县| 兰西县| 忻城县| 黔西| 金门县| 江山市| 汾西县| 崇信县| 习水县| 郑州市| 黔南| 电白县| 虹口区| 定日县| 商水县| 安化县| 平远县| 大兴区| 贡嘎县| 宁德市| 安龙县| 南投县| 黔西县| 桓台县| 南川市| 景洪市| 苗栗市| 武邑县| 绥芬河市| 合水县| 吕梁市| 东丽区| 汾西县| 于田县|