Decode360's Blog

          業(yè)精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            397 隨筆 :: 33 文章 :: 29 評論 :: 0 Trackbacks
          ASSM基礎(chǔ)了解
          ?
          ??? ASSM(Auto Segment Space Management)是Oracle內(nèi)部進(jìn)行segment管理的一種方式,與之對應(yīng)的是MSSM(Manual Segment Space Management)。由于在使用DBCA創(chuàng)建實例時需要選擇,所以專門去了解了一下這個概念。沒想到水還挺深,最近沒時間研究了,所以只了解一下這個概念的定義,一些具體的東西,eygle和piner兩位大佬已經(jīng)研究得比較透徹了,留下傳送門等以后有空了再來慢慢拜讀。注:ASSM必須工作在LMT下。
          ?
          -----------------------------------------
          ?
          ??? 在920以前,表的剩余空間的管理與分配都是由鏈接列表freelist來完成的,因為freelist存在串行的問題因此容易引起往往容易引起段頭的爭用與空間的浪費(其實這一點并不明顯),最主要的還是因為需要DBA 花費大量的精力去管理這些爭用并監(jiān)控表的空間利用。
          ??? 自動段空間管理(ASSM),它首次出現(xiàn)在Oracle920里。有了ASSM,鏈接列表freelist被位圖所取代,它是一個二進(jìn)制的數(shù)組,能夠迅速有效地管理存儲擴(kuò)展和剩余區(qū)塊(free block),因此能夠改善分段存儲本質(zhì),ASSM表空間上創(chuàng)建的段還有另外一個稱呼叫Bitmap Managed Segments(BMB 段)
          ??? 讓我們看看位圖freelist是如何實現(xiàn)的。我會從使用區(qū)段空間管理自動參數(shù)創(chuàng)建tablespace開始:
          ??? create tablespace demo
          ??? datafile '/ora01/oem/demo01.dbf'
          ??? size 5m
          ??? EXTENT MANAGEMENT LOCAL -- Turn on LMT
          ??? SEGMENT SPACE MANAGEMENT AUTO -- Turn on ASSM;
          ??? 一旦你定義好了tablespace,那么表和索引就能夠使用各種方法很容易地被移動到新的tablespace里,帶有ASSM的本地管理tablespace會略掉任何為PCTUSED、NEXT和FREELISTS所指定的值。當(dāng)表格或者索引被分配到這個tablespace以后,用于獨立對象的PCTUSED的值會被忽略,而Oracle9i會使用位圖數(shù)組來自動地管理tablespace里表格和索引的freelist。對于在LMT的tablespace內(nèi)部創(chuàng)建的表格和索引而言,這個NEXT擴(kuò)展子句是過時的,因為由本地管理的tablespace會管理它們。但是,INITIAL參數(shù)仍然是需要的,因為Oracle不可能提前知道初始表格加載的大小。對于ASSM而言,INITIAL最小的值是三個塊。
          ??? 新的管理機制用位圖來跟蹤或管理每個分配到對象的塊,每個塊有多少剩余空間根據(jù)位圖的狀態(tài)來確定,如>75%,50%-75%,25%-50%和<25%,也就是說位圖其實采用了四個狀態(tài)位來代替以前的pctused,什么時候該利用該數(shù)據(jù)塊則由設(shè)定的pctfree來確定。
          ??? 使用ASSM的一個巨大優(yōu)勢是,位圖freelist肯定能夠減輕緩沖區(qū)忙等待(buffer busy wait)的負(fù)擔(dān),這個問題在Oracle9i以前的版本里曾是一個嚴(yán)重的問題。在沒有多個freelist的時候,每個Oracle表格和索引在表格的頭部都曾有一個數(shù)據(jù)塊,用來管理對象所使用的剩余區(qū)塊,并為任何SQL插入聲明所創(chuàng)建的新數(shù)據(jù)行提供數(shù)據(jù)塊。當(dāng)數(shù)據(jù)緩沖內(nèi)的數(shù)據(jù)塊由于被另一個DML事務(wù)處理鎖定而無法使用的時候,緩沖區(qū)忙等待就會發(fā)生。當(dāng)你需要將多個任務(wù)插入到同一個表格里的時候,這些任務(wù)就被強制等待,而同時Oracle會在同時分派剩余的區(qū)塊,一次一個。
          ??? 有了ASSM之后,Oracle宣稱顯著地提高了DML并發(fā)操作的性能,因為(同一個)位圖的不同部分可以被同時使用,這樣就消除了尋找剩余空間的串行化。根據(jù)Oracle的測試結(jié)果,使用位圖freelist會消除所有分段頭部(對資源)的爭奪,還能獲得超快的并發(fā)插入操作。盡管ASSM顯示出了令人激動的特性并能夠簡化Oracle DBA的工作,但是Oracle9i的位圖分段管理還是有一些局限性的:
          ??? · 一旦DBA被分配之后,它就無法控制tablespace內(nèi)部的獨立表格和索引的存儲行為。
          ??? · 大型對象不能夠使用ASSM,而且必須為包含有LOB數(shù)據(jù)類型的表格創(chuàng)建分離的tablespace。
          ??? · 你不能夠使用ASSM創(chuàng)建臨時的tablespace。這是由排序時臨時分段的短暫特性所決定的。
          ??? · 只有本地管理的tablespace才能夠使用位圖分段管理。
          ??? · 使用超高容量的DML(例如INSERT、UPDATE和DELETE等)的時候可能會出現(xiàn)性能上的問題。
          ?
          -----------------------------------------
          ?
          ?
          Oracle ASSM內(nèi)部存儲研究大揭密(Piner):
          http://www.ixdba.net/article/e4/1605.html
          ?
          Oracle ASSM三級位圖塊結(jié)構(gòu)(Eygle):
          http://www.eygle.com/archives/2007/07/oracle_assm_level3_bmb.html
          ?
          dmt、lmt、mssm,assm的一點總結(jié)!(很好的文章):
          http://space.itpub.net/19602/viewspace-61756
          ?
          關(guān)于ASSM的位圖管理,證實了一些想法(Piner):
          http://www.itpub.net/viewthread.php?tid=734505&extra=&page=2
          ?
          ?
          -----------------------------------------
          ?
          ?
          ?
          posted on 2009-07-10 23:47 decode360 閱讀(751) 評論(0)  編輯  收藏 所屬分類: 07.Oracle
          主站蜘蛛池模板: 伊宁县| 松滋市| 哈密市| 湖州市| 多伦县| 文山县| 卓资县| 宜宾县| 固原市| 二连浩特市| 石嘴山市| 定州市| 徐州市| 绥化市| 鄂托克旗| 钟祥市| 上犹县| 奉贤区| 景谷| 曲水县| 宁阳县| 临西县| 宜川县| 乐山市| 灵璧县| 临江市| 汉中市| 新兴县| 阜新市| 大竹县| 偃师市| 静海县| 山丹县| 肥城市| 民勤县| 昌黎县| 望都县| 交口县| 博爱县| 滨州市| 开封市|