<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            Oracle性能調優(yōu)原則

            發(fā)表于:2007-07-13來(lái)源:作者:點(diǎn)擊數: 標簽:
            影響ORACLE 性能 的源頭非常多,主要包括如下方面: 數據庫 的硬件配置:CPU、內存、網(wǎng)絡(luò )條件 1. CPU:在任何機器中CPU的數據處理能力往往是衡量計算機性能的一個(gè)標志,并且ORACLE是一個(gè)提供并行能力的數據庫系統,在CPU方面的要求就更高了,如果運行隊列數

            影響ORACLE性能的源頭非常多,主要包括如下方面:

            數據庫的硬件配置:CPU、內存、網(wǎng)絡(luò )條件

            1. CPU:在任何機器中CPU的數據處理能力往往是衡量計算機性能的一個(gè)標志,并且ORACLE是一個(gè)提供并行能力的數據庫系統,在CPU方面的要求就更高了,如果運行隊列數目超過(guò)了CPU處理的數目,性能就會(huì )下降,我們要解決的問(wèn)題就是要適當增加CPU的數量了,當然我們還可以將需要許多資源的進(jìn)程KILL掉;

            2. 內存:衡量機器性能的另外一個(gè)指標就是內存的多少了,在ORACLE中內存和我們在建數據庫中的交換區進(jìn)行數據的交換,讀數據時(shí),磁盤(pán)I/O必須等待物理I/O操作完成,在出現ORACLE的內存瓶頸時(shí),我們第一個(gè)要考慮的是增加內存,由于I/O的響應時(shí)間是影響ORACLE性能的主要參數,我將在這方面進(jìn)行詳細的講解

            3. 網(wǎng)絡(luò )條件:NET*SQL負責數據在網(wǎng)絡(luò )上的來(lái)往,大量的SQL會(huì )令網(wǎng)絡(luò )速度變慢。比如10M的網(wǎng)卡和100的網(wǎng)卡就對NET*SQL有非常明顯的影響,還有交換機、集線(xiàn)器等等網(wǎng)絡(luò )設備的性能對網(wǎng)絡(luò )的影響很明顯,建議在任何網(wǎng)絡(luò )中不要試圖用3個(gè)集線(xiàn)器來(lái)將網(wǎng)段互聯(lián)。

            OS參數的設置

            下表給出了OS的參數設置及說(shuō)明,DBA可以根據實(shí)際需要對這些參數進(jìn)行設置內核參數名

            說(shuō)明

            bufpages    對buffer空間不按靜態(tài)分配,采用動(dòng)態(tài)分配,使bufpages值隨nbuf一起對buffer空間進(jìn)行動(dòng)態(tài)分配。

            create_fastlinks   對HFS文件系統允許快速符號鏈接

            dbc_max_pct      加大最大動(dòng)態(tài)buffer空間所占物理內存的百分比,以滿(mǎn)足應用系統的讀寫(xiě)命中率的需要。

            dbc_min_pct       設置最小動(dòng)態(tài)buffer空間所占物理內存的百分比

            desfree      提高開(kāi)始交換操作的最低空閑內存下限,保障系統的穩定性,防止出現不可預見(jiàn)的系統崩潰(Crash)。

            fs_async        允許進(jìn)行磁盤(pán)異步操作,提高CPU和磁盤(pán)的利用率

            lotsfree          提高系統解除換頁(yè)操作的空閑內存的上限值,保證應用程序有足夠的可用內存空間。

            maxdsiz         針對系統數據量大的特點(diǎn),加大最大數據段的大小,保證應用的需要。(32位)

            maxdsiz_64bit                 maximum process data segment size for 64_bit

            Maxssiz          加大最大堆棧段的大小。(32_bit)

            maxssiz_64bit           加大最大堆棧段的大小。(64_bit)

            Maxtsiz                   提高最大代碼段大小,滿(mǎn)足應用要求

            maxtsiz_64bit               原值過(guò)大,應調小

            Minfree           提高停止交換操作的自由內存的上限

            Shmem             允許進(jìn)行內存共享,以提高內存的利用率

            Shmmax                設置最大共享內存段的大小,完全滿(mǎn)足目前的需要

            Timeslice              由于系統的瓶頸主要反映在磁盤(pán)I/O上,因此 降低時(shí)間片的大小,一方面可避免因磁盤(pán)I/O不暢造成CPU的等待,從而提高了CPU的綜合利用率。另一方面減少了進(jìn)程的阻塞量。

            unlockable_mem         提高了不可鎖內存的大小,使可用于換頁(yè)和交換的內存空間擴大,用以滿(mǎn)足系統對內存管理的要求。

            用戶(hù)SQL質(zhì)量

            以上講的都是硬件方面的東西,在條件有限的條件下,我們可以調整應用程序的SQL質(zhì)量:

            1. 不要進(jìn)行全表掃描(Full Table Scan):全表掃描導致大量的I/O

            2. 盡量建好和使用好索引:建索引也是有講究的,在建索引時(shí),也不是索引越多越好,當一個(gè)表的索引達到4個(gè)以上時(shí),ORACLE的性能可能還是改善不了,因為OLTP系統每表超過(guò)5個(gè)索引即會(huì )降低性能,而且在一個(gè)sql 中, Oracle 從不能使用超過(guò) 5個(gè)索引;當我們用到GROUP BY和ORDER BY時(shí),ORACLE就會(huì )自動(dòng)對數據進(jìn)行排序,而ORACLE在INIT.ORA中決定了sort_area_size區的大小,當排序不能在我們給定的排序區完成時(shí),ORACLE就會(huì )在磁盤(pán)中進(jìn)行排序,也就是我們講的臨時(shí)表空間中排序, 過(guò)多的磁盤(pán)排序將會(huì )令 free buffer waits 的值變高,而這個(gè)區間并不只是用于排序的,對于開(kāi)發(fā)人員我提出如下忠告:

            1)、select,update,delete 語(yǔ)句中的子查詢(xún)應當有規律地查找少于20%的表行.如果一個(gè)語(yǔ)句查找的行數超過(guò)總行數的20%,它將不能通過(guò)使用索引獲得性能上的提高.

            2)、索引可能產(chǎn)生碎片,因為記錄從表中刪除時(shí),相應也從表的索引中刪除.表釋放的空間可以再用,而索引釋放的空間卻不能再用.頻繁進(jìn)行刪除操作的被索引的表,應當階段性地重建索引,以避免在索引中造成空間碎片,影響性能.在許可的條件下,也可以階段性地truncate表,truncate命令刪除表中所有記錄,也刪除索引碎片.

            3)、在使用索引時(shí)一定要按索引對應字段的順序進(jìn)行引用。

            4)、用(+)比用NOT IN更有效率。

            降低ORACLE的競爭:

            先講幾個(gè)ORACLE的幾個(gè)參數,這幾個(gè)參數關(guān)系到ORACLE的競爭:

            1)、freelists 和 freelist 組:他們負責ORACLE的處理表和索引的空間管理;

            2)、pctfree 及 pctused:該參數決定了freelists 和 freelist 組的行為,pctfree 和pctused 參數的唯一目的就是為了控制塊如何在 freelists 中進(jìn)出

            設置好pctfree 及 pctused對塊在freelists的移走和讀取很重要。

            其他參數的設置

            1)、包括SGA區(系統全局區):系統全局區(SGA)是一個(gè)分配給Oracle 的包含一個(gè) Oracle 實(shí)例的數據庫的控制信息內存段。

            主要包括數據庫高速緩存(the database buffer cache),

            重演日志緩存(the redo log buffer),

            共享池(the shared pool),

            數據字典緩存(the data dictionary cache)以及其它各方面的信息

            2)、db_block_buffers(數據高速緩沖區)訪(fǎng)問(wèn)過(guò)的數據都放在這一片內存區域,該參數越大,Oracle在內存中找到相同數據的可能性就越大,也即加快了查詢(xún)速度。

            3)、share_pool_size (SQL共享緩沖池):該參數是庫高速緩存和數據字典的高速緩存。

            4)、Log_buffer (重演日志緩沖區)

            5)、sort_area_size(排序區)

            6)、processes (同時(shí)連接的進(jìn)程數)

            7)、db_block_size (數據庫塊大?。篛racle默認塊為2KB,太小了,因為如果我們有一個(gè)8KB的數據,則2KB塊的數據庫要讀4次盤(pán),才能讀完,而8KB塊的數據庫只要1次就讀完了,大大減少了I/O操作。數據庫安裝完成后,就不能再改變db_block_size的值了,只能重新建立數據庫并且建庫時(shí),要選擇手工安裝數據庫。

            8)、open_links (同時(shí)打開(kāi)的鏈接數)

            9)、dml_locks

            10)、open_cursors (打開(kāi)光標數)

            11)、dbwr_io_slaves (后臺寫(xiě)進(jìn)程數)



              

            原文轉自:http://kjueaiud.com

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>