Oracle sql 性能的優(yōu)化調(diào)整的2大步驟
以下的文章主要是介紹Oracle sql 性能的優(yōu)化調(diào)整 ,其中包括如何選用適合的Oracle優(yōu)化器,以及如何訪問Table的相關(guān)方式,Oracle所采用兩種不同訪問表中記錄的相關(guān)方式的內(nèi)容的介紹。
1. 選用適合的Oracle優(yōu)化器
Oracle的優(yōu)化器共有3種:
a. RULE (基于規(guī)則)
b. COST (基于成本)
c. CHOOSE (選擇性)
設(shè)置缺省的Oracle sql 性能優(yōu)化器,可以通過對(duì)init.ora文件中OPTIMIZER_MODE參數(shù)的各種聲明,如RULE,COST,CHOOSE,ALL_ROWS,F(xiàn)IRST_ROWS . 你當(dāng)然也在SQL句級(jí)或是會(huì)話(session)級(jí)對(duì)其進(jìn)行覆蓋。
為了使用基于成本的優(yōu)化器(CBO, Cost-Based Optimizer) , 你必須經(jīng)常運(yùn)行analyze 命令,以增加數(shù)據(jù)庫中的對(duì)象統(tǒng)計(jì)信息(object statistics)的準(zhǔn)確性。
如果數(shù)據(jù)庫的優(yōu)化器模式設(shè)置為選擇性(CHOOSE),那么實(shí)際的優(yōu)化器模式將和是否運(yùn)行過analyze命令有關(guān)。 如果table已經(jīng)被analyze過, 優(yōu)化器模式將自動(dòng)成為CBO , 反之,數(shù)據(jù)庫將采用RULE形式的優(yōu)化器。
在缺省情況下,Oracle采用CHOOSE優(yōu)化器,為了避免那些不必要的全表掃描(full table scan) , 你必須盡量避免使用CHOOSE優(yōu)化器,而直接采用基于規(guī)則或者基于成本的優(yōu)化器。
2. 訪問Table的方式Oracle 采用兩種訪問表中記錄的方式
a. 全表掃描
全表掃描就是順序地訪問表中每條記錄。 Oracle采用一次讀入多個(gè)數(shù)據(jù)塊(database block)的方式Oracle sql 性能優(yōu)化全表掃描。
b. 通過ROWID訪問表
你可以采用基于ROWID的訪問方式情況,提高訪問表的效率, ROWID包含了表中記錄的物理位置信息……Oracle采用索引(INDEX)實(shí)現(xiàn)了數(shù)據(jù)和存放數(shù)據(jù)的物理位置(ROWID)之間的聯(lián)系。 通常索引提供了快速訪問ROWID的方法,因此那些基于索引列的查詢就可以得到性能上的提高。
文章出自: http://www.programbbs.com/doc/3371.htm
【編輯推薦】