《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計(jì)應(yīng)用 > Oracle 10g HWM原理及性能優(yōu)化
Oracle 10g HWM原理及性能優(yōu)化
來源:微型機(jī)與應(yīng)用2013年第8期
蔡 焰
(廣東韶關(guān)學(xué)院 圖書館, 廣東 韶關(guān)512005)
摘要: HWM(High Water Mark)是表中已經(jīng)使用過的存儲空間與未使用過的存儲空間之間的分界線,HWM對全表掃描的性能有非常大的影響。當(dāng)全表掃描時(shí),Oracle會讀取HWM下所有的塊,即使這些塊中有很多是空塊,空塊的存在,也即是表中碎片的存在,必將增加全表掃描額外的物理I/O開銷及CPU開銷,嚴(yán)重降低訪問Oracle數(shù)據(jù)表的性能。通過對Oracle中關(guān)于表中HWM的原理及性能優(yōu)化問題的討論,針對HWM下的碎片問題提出相關(guān)的優(yōu)化策略,并對其空間重組前后進(jìn)行性能對比測試。
關(guān)鍵詞: Oracle HWM 性能優(yōu)化
Abstract:
Key words :

摘  要: HWM(High Water Mark)是表中已經(jīng)使用過的存儲空間與未使用過的存儲空間之間的分界線,HWM對全表掃描的性能有非常大的影響。當(dāng)全表掃描時(shí),Oracle會讀取HWM下所有的塊,即使這些塊中有很多是空塊,空塊的存在,也即是表中碎片的存在,必將增加全表掃描額外的物理I/O開銷及CPU開銷,嚴(yán)重降低訪問Oracle數(shù)據(jù)表的性能。通過對Oracle中關(guān)于表中HWM的原理及性能優(yōu)化問題的討論,針對HWM下的碎片問題提出相關(guān)的優(yōu)化策略,并對其空間重組前后進(jìn)行性能對比測試。
關(guān)鍵詞: Oracle; HWM; 性能優(yōu)化

    Web2.0與Web3.0的發(fā)展都離不開后臺支持?jǐn)?shù)據(jù)庫,數(shù)據(jù)庫運(yùn)行的好壞、快慢,直接影響到使用者的應(yīng)用,因而本文將重點(diǎn)研究信息資源建設(shè)中后臺數(shù)據(jù)庫的優(yōu)化策略。Oracle 數(shù)據(jù)庫是具有高可靠性、高安全性、高兼容性的大型關(guān)系型數(shù)據(jù)庫,是信息化建設(shè)的重要基礎(chǔ)平臺。網(wǎng)絡(luò)中的信息資源數(shù)據(jù)庫具有異構(gòu)、數(shù)據(jù)量大、多媒體內(nèi)容多、查詢頻繁等特點(diǎn),伴隨網(wǎng)絡(luò)不斷深入的應(yīng)用,其存儲在數(shù)據(jù)庫中的數(shù)據(jù)量越來越多,而傳統(tǒng)的數(shù)據(jù)庫設(shè)計(jì)方法使得數(shù)據(jù)庫隨著訪問數(shù)據(jù)量的增大其性能明顯地降低[1]。Oracle的邏輯空間管理是Oracle管理和優(yōu)化的重要部分,ASSM段空間自動管理下的HWM問題對Oracle的存儲管理和性能優(yōu)化有重大影響。本文在探討Oracle 10g邏輯存儲管理的基礎(chǔ)上,針對HWM下的碎片問題提出了相關(guān)的優(yōu)化策略,并對其空間重組前后進(jìn)行了性能測試。
1 Oracle存儲管理
1.1 Oracle邏輯存儲管理

    Oracle在邏輯存儲上分4個(gè)粒度,如圖1所示。

    (1) Block(塊):粒度最小的存儲單位,標(biāo)準(zhǔn)默認(rèn)大小是8 KB,Oracle每一次I/O操作都是按Block來進(jìn)行的。
    (2) Extent(區(qū)):由一系列相鄰的Block組成,是Oracle空間分配的基本單位[2],Oracle是以Extent為單位進(jìn)行擴(kuò)展的。
    (3) Segment(段):由一系列的Extents所組成[2],當(dāng)創(chuàng)建一個(gè)對象時(shí)(表或索引),就會分配一個(gè)Segment給這個(gè)對象。
    (4) Tablespace(表空間):包括Segment、Extent和Block,Tablespace的數(shù)據(jù)物理上存儲在其所在的數(shù)據(jù)文件中,一個(gè)數(shù)據(jù)庫最少要有一個(gè)Tablespace。
1.2 HWM
    高水標(biāo)記HWM(High-Water Mark)這個(gè)概念在Segment的存儲內(nèi)容中是比較重要的。簡單來說,HWM代表一個(gè)表使用的最大(top limit)塊(如圖2所示),就是一個(gè)Segment中已使用和未來使用的Block的分界線[3]。圖2顯示了HWM首先位于新創(chuàng)建表的第一個(gè)塊中,隨著數(shù)據(jù)的插入和更新,使用了越來越多的塊,當(dāng)現(xiàn)有空間不足而進(jìn)行空間擴(kuò)展時(shí)HWM會隨之向上移。如果刪除一部分行數(shù)據(jù),可能會有許多塊不再包含數(shù)據(jù),但HWM不會往下移,被占用的最高空間稱為HWM。

     Oracle在做全表掃描時(shí)會讀取HWM下的所有Blocks,即使其中不包含任何數(shù)據(jù),Oracle都會一一讀取,這會大大影響系統(tǒng)的性能,特別是當(dāng)HWM之下的大多數(shù)塊都為空時(shí)。
     如果一個(gè)OLTP系統(tǒng)(即聯(lián)機(jī)事務(wù)處理,就是常說的關(guān)系數(shù)據(jù)庫,對記錄進(jìn)行增、刪、改、查)應(yīng)用頻繁地對某個(gè)表里的記錄進(jìn)行DML(Data Manipulation Language)操作(即數(shù)據(jù)操縱語言,一種命令使用戶能夠查詢數(shù)據(jù)庫以及操作已有數(shù)據(jù)庫中的數(shù)據(jù)的計(jì)算機(jī)語言),會造成Block中數(shù)據(jù)分布稀疏,導(dǎo)致HWM下存在大量的碎片,浪費(fèi)大量的空間。當(dāng)做全表掃描時(shí),Oracle會讀取HWM之下的所有塊,即使其中不包含數(shù)據(jù)[3]。對于HWM以下表的碎片,做全表訪問時(shí)必然增加一致性讀,因而影響到響應(yīng)時(shí)間,降低系統(tǒng)性能。
2 優(yōu)化策略
    對于增、刪、改操作比較頻繁的表,尤其是刪除操作比較頻繁的表,一般表的高水位HWM值會偏高,也就是表中數(shù)據(jù)塊碎片高,雖然ASSM的自動空間管理能提高DML操作并發(fā)訪問的性能,但是HWM下高碎片的產(chǎn)生會大大影響訪問效率,而減少碎片、降低對象的HWM可提高對象的訪問效率,從而達(dá)到性能優(yōu)化,大大提高數(shù)據(jù)的訪問效率。表對象可以通過shrink或move方法實(shí)現(xiàn)重組、減少碎片、降低HWM,進(jìn)行性能優(yōu)化;索引對象可以提供rebuild的方法來實(shí)現(xiàn)重組、減少碎片、降低HWM,進(jìn)行性能優(yōu)化。當(dāng)然,在對表及索引進(jìn)行shrink或move及rebuild操作時(shí),最好選擇在非業(yè)務(wù)高峰時(shí)進(jìn)行,避免影響業(yè)務(wù)的正常運(yùn)轉(zhuǎn)。
    shrink與move操作有一些不同,但都可以完成表中碎片的整理,在此可做一些比較:
    (1) move的執(zhí)行效率比shrink高,因?yàn)閟hrink會產(chǎn)生redo log、undo log;
    (2) shrink對數(shù)據(jù)的移動是從后往前的,所以shrink不需要使用額外的空閑空間,而move是需要額外空閑空間的;
    (3) 對帶有索引的表進(jìn)行shrink操作時(shí),索引是不需要重建的;而對帶有索引的表進(jìn)行move操作時(shí),索引是需要rebuild重建的,否則索引不可用;
    (4) 對表進(jìn)行shrink操作時(shí),必須打開表的行遷移屬性。
    shrink和move都會對操作的表加表級獨(dú)占鎖,因此其他session對此表執(zhí)行 DML操作時(shí),存在鎖等待;當(dāng)shrink或move操作執(zhí)行完成,鎖釋放。
    索引的rebuild是可以在線完成的,比較適合在高可用環(huán)境下完成。
    另外,shrink是10g的新特性,僅對ASSM管理表空間有效。
    具體命令操作如下:
    shrink命令:
    Alter table XXX enable row movement(打開表XXX的行遷移屬性);
    Alter table XXX shrink space(僅僅對表XXX進(jìn)行縮小,不對表中的索引進(jìn)行空間縮小);
    Alter table XXX shrink space cascade(縮表的同時(shí),也對表中的索引進(jìn)行縮小);
    Alter table XXX disable row movement(縮表完成后,關(guān)閉表XXX的行遷移屬性)。
    move命令:
    Alter table XXX move(對表進(jìn)行move);
    Alter index YYY rebuild(如果表有索引,則需要對表的索引進(jìn)行重建)。
3 性能優(yōu)化測試
    對于碎片較多的表,可以通過shrink或move操作降低表中HWM高水位的值來進(jìn)行性能優(yōu)化。下面以shrink命令為例子進(jìn)行測試。
3.1 對TEST表進(jìn)行分析
     (1) 表大小
    SQL> select segment_name, bytes/1024/1024 表大小MB from dba_segments where segment_name=′TEST′;
    SEGMENT_NAME           表大小MB
    TEST                                5.632
    (2) 表的實(shí)際數(shù)據(jù)大小:2.439 MB
    SQL>select table_name, AVG_ROW_LEN ,NUM_ROWS,AVG_ROW_LEN*NUM_ROWS/1024/1024 表實(shí)際大小MB,LAST_ANALYZED from dba_tables where table_name=′TEST′;
TABLE_NAME AVG_ROW_LEN NUM_ROWS 表實(shí)際大小MB   LAST_ANALYZED
    TEST  157  16290    2.439     2012-12-01 00:13:12
    (3)根據(jù)表實(shí)際大小公式可得出該表的碎片率為:56.7%
    (1-表實(shí)際數(shù)據(jù)大小/表大小)×100/%=(1-2.439/5.632)×100%=56.7%碎片率:56.7%
    (4)執(zhí)行SQL語句:select * from test;
    查詢表test中所有記錄,查詢所需時(shí)間為2 s。
    SQL的解釋計(jì)劃如下:
    Execution Plan
    |Id|Operation |Name |Rows | Cost (%CPU)| Time|
    |0| SELECT STATEMENT |  |   | 141   (0)|    |
    |1| TABLE ACCESS FULL|TEST|16290|141(0)|00:00:02|
    從以上的SQL解釋計(jì)劃來看,SQL采用的是全表掃描讀的方式訪問,SQL將讀取表的高水位HWM以下的所有數(shù)據(jù)塊。
    由上可知: (1)表TEST的大小為5.632 MB, 但實(shí)際數(shù)據(jù)大小約為2.439 MB,碎片率約為56.7%,表TEST中存在大量的碎片; (2)查詢該表所有記錄所需要的時(shí)間為2 s。
3.2 碎片重組  優(yōu)化處理
    通過shrink方式對表TEST作碎片重組實(shí)現(xiàn)對表的優(yōu)化處理。
    SQL> select segment_name, bytes/1024/1024 表大小MB from dba_segments where segment_name=′TEST′;
    segment_name                表大小MB
        TEST                         5.632
    SQL>alter table test enable row movement;
    SQL>alter table test shrink space;
    SQL>alter table test disable row movement;
    SQL>select segment_name,bytes/1024/1024 表大小MB from dba_segments where segment_name=′TEST′;
    SEGMENT_NAME               表大小MB
        TEST                            3.072
    通過對上對TEST表進(jìn)行優(yōu)化處理后可以看到:(1) shrink縮表操作后TEST表的大小從5.632 MB縮小到3.072 MB,縮小了近一半,從而降低了表TEST的HWM值; (2)再次執(zhí)行全表掃描的查詢SQL:select * from test;查詢時(shí)間縮短為1 s,SQL執(zhí)行速度大大提高。
3.3 測試結(jié)論
    在對高碎片表進(jìn)行全表掃描讀的訪問方式時(shí),碎片增加了不必要的物理讀與內(nèi)存讀,也就增加了不必要的物理I/O與CPU的消耗,最終降低了對表數(shù)據(jù)的訪問速度,即影響了SQL語句的響應(yīng)時(shí)間。通過shrink或者move操作對表碎片空間進(jìn)行重組,可以有效降低表中的HWM值,提高表的訪問效率,進(jìn)而提高block的命中率,在一定程度上,可以起到系統(tǒng)優(yōu)化的作用。
    本文針對HWM下碎片問題對性能的影響,探討減少碎片空間的優(yōu)化策略,通過對碎片空間的重組來減少碎片的產(chǎn)生,以提高訪問效率。
    數(shù)據(jù)庫性能優(yōu)化是一項(xiàng)復(fù)雜的系統(tǒng)工程,是一個(gè)循序漸進(jìn)的過程,應(yīng)該針對Oracle運(yùn)行過程中出現(xiàn)的各種問題,找出性能瓶頸,有針對性地對系統(tǒng)進(jìn)行調(diào)整,保證數(shù)據(jù)庫高效可靠的運(yùn)行。
參考文獻(xiàn)
[1] 高敬媛, 趙克寶.校園網(wǎng)數(shù)據(jù)庫性能優(yōu)化技術(shù)[J].煤炭技術(shù),2011,30(07):226-228.
[2] KYTE T, ORACLE E, Signature edition programming techniques and solutions for Oracle 7.3 through 8.1.7 (Expert One-On-One)[M]. New York: Apress,2010.
[3] KYTE T. Expert Oracle database architecture: 9i and 10g  programming techniques and solutions[M]. 2006,San Bernardino: Macsource press,2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜日韩福利| 欧美成年人网| 日韩天堂av| 亚洲国产一区二区三区a毛片| 在线看国产一区| 国产亚洲欧美日韩美女| 国产欧美综合一区二区三区| 国产精品青草综合久久久久99| 欧美金8天国| 欧美福利一区二区三区| 免费影视亚洲| 美女网站久久| 欧美成人亚洲成人| 欧美成人一区二区三区片免费| 欧美在线影院| 久久国产精品一区二区| 久久精品视频免费| 久久久在线视频| 米奇777超碰欧美日韩亚洲| 久久人人97超碰国产公开结果| 久久av一区二区| 久久久久久香蕉网| 暖暖成人免费视频| 欧美激情bt| 欧美日韩精品免费观看视频完整| 欧美精品国产精品日韩精品| 欧美精品亚洲精品| 欧美午夜不卡视频| 国产嫩草一区二区三区在线观看| 国产人久久人人人人爽| 国产又爽又黄的激情精品视频| 国产亚洲福利社区一区| 黄色成人在线免费| 亚洲激情午夜| 中文欧美在线视频| 香蕉久久夜色精品国产| 久久国产主播| 日韩亚洲欧美在线观看| 亚洲先锋成人| 欧美一区二区三区久久精品| 久久精品夜夜夜夜久久| 免费成人高清在线视频| 欧美日本免费| 国产精品wwwwww| 国产日韩精品视频一区二区三区| 国产三级欧美三级| 亚洲成色最大综合在线| 99国产精品国产精品久久| 亚洲欧美国产制服动漫| 亚洲承认在线| 一区二区三区四区五区精品视频| 亚洲视频网站在线观看| 欧美一区国产一区| 欧美成人官网二区| 国产精品h在线观看| 国内成+人亚洲+欧美+综合在线| 黄色影院成人| 一区二区久久久久| 欧美自拍偷拍午夜视频| 艳妇臀荡乳欲伦亚洲一区| 久久精品盗摄| 欧美精品99| 国产视频精品va久久久久久| 亚洲日本成人女熟在线观看| 午夜精品久久久久久久99黑人| 最新亚洲一区| 午夜精品成人在线视频| 免费观看在线综合| 国产精品一区免费在线观看| 91久久精品www人人做人人爽| 亚洲影院污污.| 亚洲精品一区中文| 久久成人免费日本黄色| 欧美日韩精品高清| 黄色日韩网站视频| 亚洲一区三区视频在线观看| 亚洲精品影视| 久久嫩草精品久久久久| 国产精品久在线观看| 亚洲黄色性网站| 久久精品123| 性感少妇一区| 欧美日韩一区在线| 亚洲第一精品久久忘忧草社区| 亚洲午夜精品一区二区三区他趣| 亚洲国产精品va在看黑人| 性欧美超级视频| 欧美日韩国产成人在线观看| 精品999网站| 亚洲欧美日韩精品在线| 在线亚洲欧美视频| 欧美国产免费| 激情久久五月天| 欧美一区二区三区婷婷月色| 亚洲一区视频| 欧美日韩精品高清| 亚洲激情不卡| 亚洲激情小视频| 久久亚洲精品欧美| 国产日韩精品一区二区| 亚洲线精品一区二区三区八戒| 最新成人在线| 蜜臀91精品一区二区三区| 国产一区二区三区丝袜| 午夜在线精品偷拍| 性感少妇一区| 国产精品―色哟哟| 一区二区三区www| 一区二区精品国产| 欧美绝品在线观看成人午夜影视| 一区二区三区在线观看视频| 欧美一级电影久久| 欧美怡红院视频一区二区三区| 欧美视频日韩视频| 日韩网站在线观看| 亚洲社区在线观看| 欧美日韩在线视频观看| 日韩视频一区二区三区在线播放| 亚洲精品1234| 欧美顶级艳妇交换群宴| 亚洲国产成人高清精品| 亚洲激情国产| 免费在线看一区| 亚洲精品1区2区| 日韩一级大片| 欧美日韩一二三四五区| 在线中文字幕不卡| 午夜在线精品偷拍| 国产欧美一区二区三区另类精品 | 国产综合久久| 欧美影视一区| 久久资源av| 亚洲第一精品夜夜躁人人爽| 亚洲三级网站| 欧美日韩精品免费观看视频| 宅男精品导航| 午夜精品亚洲| 国产一区二区三区在线播放免费观看| 中文精品视频| 欧美一区二区女人| 激情国产一区二区| 亚洲精品你懂的| 欧美区日韩区| 亚洲无吗在线| 久久精品30| 18成人免费观看视频| 日韩亚洲一区在线播放| 国产精品vvv| 久久er99精品| 欧美国产精品| 亚洲一区二区三区精品在线观看| 亚洲欧美日韩国产一区| 国产麻豆一精品一av一免费| 欧美一区二区视频网站| 蜜月aⅴ免费一区二区三区| 91久久久久久国产精品| 亚洲一区二区在线播放| 国产欧美一区二区精品秋霞影院 | 99日韩精品| 国产精品系列在线播放| 久久国产成人| 欧美日韩播放| 午夜精品一区二区三区在线播放| 久久另类ts人妖一区二区| 亚洲国产成人一区| 亚洲欧美日韩另类精品一区二区三区| 欧美午夜一区二区| 久久成人人人人精品欧| 欧美日本一区| 欧美一区综合| 欧美日韩成人网| 午夜视频久久久久久| 欧美成人亚洲成人| 亚洲自拍啪啪| 欧美激情第三页| 亚洲欧美精品一区| 欧美电影在线观看完整版| 亚洲你懂的在线视频| 嫩草伊人久久精品少妇av杨幂| 亚洲伦理久久| 久久亚洲色图| 一区二区三区日韩欧美| 久久久久国产一区二区三区| 亚洲美女黄色| 久久免费99精品久久久久久| 亚洲欧洲一区二区三区久久| 欧美一二三视频| 亚洲人成7777| 久久久99国产精品免费| 一区二区欧美亚洲| 蜜桃久久av一区| 亚洲在线一区二区| 欧美激情精品久久久久久大尺度 | 狠狠色香婷婷久久亚洲精品| 亚洲少妇自拍| 亚洲国产精品激情在线观看| 久久精品二区亚洲w码| 夜夜嗨av色一区二区不卡| 蜜臀av一级做a爰片久久| 午夜精品久久久久久久99热浪潮|