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

2021-08-30 03:09:57 字數 2525 閱讀 3846

任何事情都有它的源頭,要解決問題,也得從源頭開始,影響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可以根據實際需要對這些引數進行設定

使用者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_slxdyes (後台寫程序數)

Oracle效能調優

在過去的十年中,oracle已經成為世界上最專業的資料庫之一。對於it專家來說,就是要確保利用oracle的強大特性來提高他們公司的生產力。最有效的方法之一是通過oracle調優。它有大量的調整引數和技術來改進你的oracle資料庫的效能。oracle調優是乙個複雜的主題。關於調優可以寫整整一本書,...

Oracle效能調優原則

任何事情都有它的源頭,要解決問題,也得從源頭開始,影響oracle效能的源頭非常多,主要包括如下方面 資料庫的硬體配置 cpu 記憶體 網路條件。1.cpu 在任何機器中cpu的資料處理能力往往是衡量計算機效能的乙個標誌,並且oracle是乙個提供並行能力的資料庫系統,在cpu方面的要求就更高了,如...

調優 Nginx效能調優

一.nginx優化配置 1.主配置檔案優化 注 部分配置詳解 worker processes 8 nginx程序數,建議按照cpu數目來指定,一般為它的倍數。worker cpu affinity 00000001 00000010 00000100 00001000 00010000 00100...