国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

ORACLE性能調優遵循的基本原則

2024-08-29 13:42:14
字體:
來源:轉載
供稿:網友
任何事情都有它的源頭,要解決問題,也得從源頭開始,影響Oracle性能的源頭非常多,主要包括如下方面:
  
  數據庫的硬件配置:CPU、內存、網絡條件
  1.CPU:在任何機器中CPU的數據處理能力往往是衡量計算機性能的一個標志,并且ORACLE是一個提供并行能力的數據庫系統,在CPU方面的要求就更高了,假如運行隊列數目超過了CPU處理的數目,性能就會下降,我們要解決的問題就是要適當增加CPU的數量了,當然我們還可以將需要許多資源的進程KILL掉;
  
  2.內存:衡量機器性能的另外一個指標就是內存的多少了,在ORACLE中內存和我們在建數據庫中的交換區進行數據的交換,讀數據時,磁盤I/O必須等待物理I/O操作完成,在出現ORACLE的內存瓶頸時,我們第一個要考慮的是增加內存,由于I/O的響應時間是影響ORACLE性能的主要參數,我將在這方面進行具體的講解
  
  3.網絡條件:NET*SQL負責數據在網絡上的來往,大量的SQL會令網絡速度變慢。比如10M的網卡和100的網卡就對NET*SQL有非常明顯的影響,還有交換機、集線器等等網絡設備的性能對網絡的影響很明顯,建議在任何網絡中不要試圖用3個集線器來將網段互聯。
  
  OS參數的設置
  下表給出了OS的參數設置及說明,DBA可以根據實際需要對這些參數進行設置
  
ORACLE性能調優遵循的基本原則

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 靖州| 新宾| 石城县| 个旧市| 新乡市| 炎陵县| 宁强县| 黑山县| 乳山市| 来宾市| 白沙| 合山市| 巢湖市| 奉新县| 奉新县| 延长县| 工布江达县| 呼伦贝尔市| 营山县| 洞头县| 名山县| 杭锦后旗| 读书| 仙游县| 梁河县| 彩票| 顺昌县| 乐至县| 西峡县| 北川| 都安| 大埔区| 闽侯县| 万安县| 烟台市| 莱州市| 德江县| 布尔津县| 余庆县| 马关县| 吉木乃县|