熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

ORACLE性能調優原則下篇

2013-11-13 15:59:55  來源: Oracle 

  用戶SQL質量
  
  以上講的都是硬件方面的東西在條件有限的條件下我們可以調整應用程序的SQL質量
  
   不要進行全表掃描(Full Table Scan)全表掃描導致大量的I/O
  
   盡量建好和使用好索引建索引也是有講究的在建索引時也不是索引越多越好當一個表的索引達到個以上時ORACLE的性能可能還是改善不了因為OLTP系統每表超過個索引即會降低性能而且在一個sql 中 Oracle 從不能使用超過 個索引當我們用到GROUP BY和ORDER BY時ORACLE就會自動對數據進行排序而ORACLE在INITORA中決定了sort_area_size區的大小當排序不能在我們給定的排序區完成時ORACLE就會在磁盤中進行排序也就是我們講的臨時表空間中排序 過多的磁盤排序將會令 free buffer waits 的值變高而這個區間並不只是用於排序的對於開發人員我提出如下忠告:
  
  )selectupdatedelete 語句中的子查詢應當有規律地查找少於%的表行如果一個語句查找的行數超過總行數的%它將不能通過使用索引獲得性能上的提高
  
  索引可能產生碎片因為記錄從表中刪除時相應也從表的索引中刪除表釋放的空間可以再用而索引釋放的空間卻不能再用頻繁進行刪除操作的被索引的表應當階段性地重建索引以避免在索引中造成空間碎片影響性能在許可的條件下也可以階段性地truncate表truncate命令刪除表中所有記錄也刪除索引碎片
  
  在使用索引時一定要按索引對應字段的順序進行引用
  
  用(+)比用NOT IN更有效率
  
  降低ORACLE的競爭
  
  先講幾個ORACLE的幾個參數這幾個參數關系到ORACLE的競爭
  
  freelists 和 freelist 組他們負責ORACLE的處理表和索引的空間管理
  
  pctfree 及 pctused該參數決定了freelists 和 freelist 組的行為pctfree 和pctused 參數的唯一目的就是為了控制塊如何在 freelists 中進出
  
  設置好pctfree 及 pctused對塊在freelists的移走和讀取很重要
  
  其他參數的設置
  
  包括SGA區(系統全局區)系統全局區(SGA)是一個分配給Oracle 的包含一個 Oracle 實例的數據庫的控制信息內存段
  
  主要包括數據庫高速緩存(the database buffer cache)
  
  重演日志緩存(the redo log buffer)
  
  共享池(the shared pool)
  
  數據字典緩存(the data dictionary cache)以及其它各方面的信息
  
  db_block_buffers(數據高速緩沖區)訪問過的數據都放在這一片內存區域該參數越大Oracle在內存中找到相同數據的可能性就越大也即加快了查詢速度
  
  share_pool_size (SQL共享緩沖池)該參數是庫高速緩存和數據字典的高速緩存
  
  Log_buffer (重演日志緩沖區)
  
  sort_area_size(排序區)
  
  processes (同時連接的進程數)
  
  db_block_size (數據庫塊大小)Oracle默認塊為KB太小了因為如果我們有一個KB的數據KB塊的數據庫要讀次盤才能讀完KB塊的數據庫只要次就讀完了大大減少了I/O操作數據庫安裝完成後就不能再改變db_block_size的值了只能重新建立數據庫並且建庫時要選擇手工安裝數據庫
  
  open_links (同時打開的鏈接數)
  
  dml_locks
  
  open_cursors (打開光標數)
  
  dbwr_io_slaves (後台寫進程數)
From:http://tw.wingwit.com/Article/program/Oracle/201311/17647.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.