Oracle數(shù)據(jù)庫中有關(guān)CBO優(yōu)化的三個(gè)問題

字號(hào):

一.如何使用CostBased優(yōu)化器優(yōu)化查詢操作?
    Oracle 提供了基于成本(CostBased)和基于規(guī)則(RuleBased)兩種優(yōu)化器,簡稱為CBO和RBO,用于確定查詢操作的執(zhí)行計(jì)劃。CostBased優(yōu)化器將計(jì)算各種執(zhí)行計(jì)劃的開銷,然后選出最低成本的執(zhí)行計(jì)劃??墒褂孟铝蟹椒ㄟx擇使用CBO:
    1.在INIT.ORA文件中設(shè)置參數(shù)OPTIMIZER_MODE=choose;
    2.在Session級(jí)設(shè)置OPTIMIZER_GOAL=FIRST_ROWS或ALL_ROWS。
    3、在查詢語句中使用Hint,包括CHOOSE、ALL_ROWS、FIRST_ROWS等。
    二.為什么我的執(zhí)行計(jì)劃不是的?
    CBO是依賴于表的一些統(tǒng)計(jì)信息來選擇出最低成本的執(zhí)行計(jì)劃,當(dāng)這些統(tǒng)計(jì)信息不準(zhǔn)確時(shí),產(chǎn)生的計(jì)劃便可能不是的。因而應(yīng)使用ANALYZE命令及時(shí)對(duì)表進(jìn)行分析統(tǒng)計(jì)。
    三.我的查詢上周的性能很好,為什么現(xiàn)在查詢速度很慢?
    這是由于執(zhí)行計(jì)劃被改變而造成的,下列因素將會(huì)改變一個(gè)執(zhí)行計(jì)劃:
    1、INIT.ORA文件中的參數(shù)OPTIMIZER_MODE被改變;
    2、表上定義或改變了并行查詢度;
    3、使用ANALYZE命令重新分析了表,而且使用了ESTIMATE方式,這種方式選擇不同的百分比可產(chǎn)生不同的分析結(jié)果;
    4、DB_FILE_MULTIBLOCK_READ_COUNT參數(shù)被修改;5、SORT_AREA_SIZE參數(shù)被修改。