• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試數據庫中在Oracle9i中使用多種Block Size

    發布: 2010-7-05 12:43 | 作者: 網絡轉載 | 來源: 領測軟件測試網采編 | 查看: 30次 | 進入軟件測試論壇討論

    領測軟件測試網

    軟件測試數據庫中在Oracle9i中使用多種Block Size 

    Oracle9i為Oracle數據庫引擎帶來了一些令人吃驚的復雜性。它推出了許多新的內部特性,包括bitmap free lists,基于redo log的復制,動態SGA,還有一個可能是最重要的特性,可以支持多種塊大。˙lock Size)。

      當你忽略全部的高級特性時,Oracle的工作就是傳送數據,磁盤的I/O管理和調整對于任何的Oracle數據庫都是一個重要的部分。任何可以令磁盤I/O減少的工作都對Oracle數據庫系統有一個正面的影響。

      如果我們查看一下各種各樣調整Oracle數據庫性能的方法,就會發現其實Oracle性能調整的共同目標都是減少磁盤的I/O。例如,調整一個SQL語句以除去一個全表搜索的操作可以令查詢運行得更快,因為這樣可以直接地減少需要由磁盤上讀取的數據塊。調整實例的參數,例如DB_CACHE_SIZE也可以減少磁盤的開銷。

      要理解怎樣使用多種塊大小來提升Oracle數據庫的性能,我們首先查看一下磁盤I/O的基本特性。任何時候由磁盤上訪問一個Oracle數據塊時,我們通常會見到三種延遲。第一種也是最重要的延遲來源于讀-寫頭的移動時間。這個時間是指讀-寫頭需要將自己定位到正確的柱面所需要的時間。還有選擇延遲的時間,這是讀-寫頭等待相應的塊出現在它的下面,第三個延遲來源于將數據由磁盤傳回到Oracle SGA。

      其實99%的延遲都是在真正訪問實際數據塊前發生的,那么我們就可以知道讀取一個32K的塊所需要的時間其實和讀取一個2K大小的塊相差不大。也就是說,磁盤的延遲時間都是差不多的,它和塊的大小無關。因此我們可以得出這樣的結論:如果每次I/O都能夠讀取最大的塊,那么Oracle數據庫所需要的整體I/O就會變少。

      緩沖的原理并不是Oracle數據庫特有的。對于內存的訪問是以納秒計算的,而對磁盤的訪問通常是用毫秒計算的。如果我們可以將Oracle的數據塊都放入磁盤的緩沖中,性能將有著很大的提升。隨著Oracle的成熟和內存變得越來越便宜,我們將會發現Oracle數據庫的系統全局空間(SGA)的大小通常都超過10GB。這樣對于Oracle數據庫的性能有著很大的提升,因為在讀取時,Oracle數據塊都處在內存中,相對于需要由磁盤上得到數據塊,這樣將會快成千上萬倍。

      內存緩沖中保留著Oracle訪問過的數據塊,在緩沖中的數據讀取速度要比由磁盤中讀取要快14,000倍。內存數據緩沖已經由Oracle7的單一緩沖發展為Oracle8i中的三個數據緩沖。它們的名字分別是KEEP pool,RECYCLE pool和 DEFAULT pool(如圖1所示)。


    ****************圖一***************

      Oracle數據緩沖

      在Oracle9i中我們仍然有三個數據緩沖,不過我們還可以為Oracle服務器支持的每個塊大小創建一個數據緩沖(如圖2所示)。


    ************圖2-Oracle9i的8個數據緩沖*******

      在每個數據緩沖中,由數據緩沖的命中率可以知道一個數據塊處在內存中的可能性。在數據緩沖間分配內存頁以確保內存緩沖的最優利用是Oracle管理員的工作。有時通過增加一些緩沖就有明顯的效果(見圖3)


    ************圖三***************
    (增加到一個小的數據緩沖的內存頁)

      隨著內存緩沖的增加,增加頁面帶來的好處就會下降(如圖4所示)。


    **************圖4***************

      在大的數據緩沖下,由此而帶來的好處下降

      索引和大的數據塊

      在Oracle9i前,Oracle的專家發現通過將整個數據庫移植到更大的數據塊,可以減少磁盤的I/O,從而令整個系統的性能得到提升。由表面看來這有點不符合常理,人們可能會問"如果我只需要一個80字節的行,那么讀取16K的塊又有什么好處呢?"

      這個問題的答案和索引有關。大部分經過很好地調優的Oracle數據庫都擁有和表數據差不多大小的索引。對于索引來說,大的數據塊無疑可以減少I/O,從而可以提升整個數據庫的性能。

      所以,Oracle9i數據庫管理員要做的第一件事可能就是創建一個32K的表空間,一個相應的32K大小的數據緩沖,然后將他們系統中的全部索引移植到這個32K的表空間中。通過這樣,Oracle9i數據庫就可以在一次磁盤I/O中讀取相當數量的索引節點分枝,因此可以減輕系統的壓力并且提高總體的性能。
      將對象分配到多個塊緩沖中

      通過這種方式,我們就可以在Oracle數據庫創建多個數據緩沖,那么我們怎樣決定放些什么數據到這些數據緩沖中呢?

      讓我們先來看一些更常見的技巧。

      

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: Block 軟件測試 數據庫 Size

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>