Oracle效能調優原則
任何事情都有它的源頭,要解決問題,也得從源頭開始,影響ORACLE效能的源頭非常多,主要包括如下方面:
[@more@]Ø 資料庫的硬體配置: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_slaves (後臺寫程式數)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9099175/viewspace-905038/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 效能調優的通用準則
- Oracle 效能調優工具:SQL MonitorOracleSQL
- Spark效能調優——9項基本原則Spark
- React效能優化:PureComponent的使用原則React優化
- 掌握Oracle資料庫效能調優方法Oracle資料庫
- iOS效能優化系列篇之“優化總體原則”iOS優化
- 效能優化指南:效能優化的一般性原則與方法優化
- 【效能調優】Oracle AWR報告指標全解析Oracle指標
- Spark 效能調優--資源調優Spark
- 【效能調優】效能測試、分析與調優基礎
- adnroid效能調優
- ElasticSearch效能調優Elasticsearch
- oracle 效能優化Oracle優化
- 效能調優學習之硬體調優
- Linux之效能調優Linux
- 效能監控調優
- .Net效能調優-MemoryPool
- .Net效能調優-ArrayPool
- linux調優效能命令Linux
- 效能調優實戰
- Oracle 高效能SQL引擎剖析--SQL優化與調優機制詳解OracleSQL優化
- TiDB 效能分析&效能調優&優化實踐大全TiDB優化
- (轉)SQL 優化原則SQL優化
- Nginx安全優化與效能調優Nginx優化
- java效能調優記錄Java
- Kafka 線上效能調優Kafka
- 2. 效能調優概述
- android效能調優詳解Android
- 效能調優命令之jstackJS
- 淺談Nginx效能調優Nginx
- solr研磨之效能調優Solr
- 【Oracle】Oracle wrong result一則(優化器問題)Oracle優化
- 雅虎前端優化原則(Yahoo)前端優化
- Oracle效能優化-SQL優化(案例一)Oracle優化SQL
- Oracle效能優化-SQL優化(案例二)Oracle優化SQL
- Oracle效能優化-SQL優化(案例三)Oracle優化SQL
- Oracle效能優化-SQL優化(案例四)Oracle優化SQL
- Oracle調優之看懂Oracle執行計劃Oracle
- oracle資料庫調優描述Oracle資料庫