日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Informix-Online數(shù)據(jù)庫的查詢優(yōu)化策略( 二 )


由此可見,優(yōu)化器的豐富功能為我們提供了靈活的手段,管理員可以根據(jù)不同應(yīng)用情況選擇最佳的方式,既能達到最佳的查詢效果,又能將由此而造成的系統(tǒng)開銷降至最低 。
2.進行統(tǒng)計更新和數(shù)據(jù)分布
當(dāng)數(shù)據(jù)庫表做了大量的插入、刪除操作或表的索引發(fā)生變化后,Online數(shù)據(jù)庫系統(tǒng)表的相關(guān)信息與實際表的統(tǒng)計數(shù)字不一致,這對數(shù)據(jù)的完整性沒有任何損害,但會影響到查詢的速度 。因為優(yōu)化器所制定的計劃和策略得以正確實施的前提是對系統(tǒng)表信息的精確讀取,統(tǒng)計信息的正確性將直接影響到查詢的執(zhí)行效果,因此我們必須定期執(zhí)行系統(tǒng)表信息的統(tǒng)計更新工作 。此外還要經(jīng)常做好數(shù)據(jù)分布工作,使數(shù)據(jù)的組織形式更為合理 。通過數(shù)據(jù)分布,優(yōu)化器可以根據(jù)有關(guān)信息確定如下內(nèi)容:過濾器字段的選擇率(Selectivity)、訪問過濾器字段和表的策略、最佳的連接策略 。一旦確定這些內(nèi)容,查詢的執(zhí)行時間將會顯著縮短 。
進行統(tǒng)計更新和數(shù)據(jù)分布的唯一方法是運行SQL命令:Update Statistics……,其結(jié)果是:IDS 流覽表和索引,一方面對統(tǒng)計信息加以編譯,最終將編譯好的信息存儲到相應(yīng)的系統(tǒng)表中,另一方面讀取表中記錄并對其進行排序以生成最好的組織形式 。具體格式如下:
Update Statistics [ High | Medium | Low ] [ Distributions Only ] [ for table tabname [ (fIEld1,field2……) ] ]
其中,High對表中的所有記錄進行排序以產(chǎn)生數(shù)據(jù)分布 。
Medium隨時從表中選取部分記錄進行排序以產(chǎn)生數(shù)據(jù)分布 。
Low僅執(zhí)行統(tǒng)計更新,即僅修改系統(tǒng)表systables、sysindexes、syscolumns的內(nèi)容,但不進行數(shù)據(jù)分布 。
Distributions Only進行數(shù)據(jù)分布和部分統(tǒng)計更新工作,不更新系統(tǒng)表sysindexes的內(nèi)容 。
為實現(xiàn)科學(xué)有效的統(tǒng)計更新和數(shù)據(jù)分布,通常應(yīng)執(zhí)行以下優(yōu)化步驟:
(1)針對每張表運行
Update Statistics Medium for table tabname Distributions Only
(2)針對每張表中帶索引的第一個字段運行
Update Statistics High for table tabname (fieldname)
(3)對某些表中帶復(fù)合索引的每一個字段運行
Update Statistics Low for table tabname (fieldname1,fieldname2……)
以上順序非常重要,不能搞錯 。為方便運行,我們可以將以上命令按順序?qū)懭氲揭粋€shell程序文件中,讓操作系統(tǒng)在每日數(shù)據(jù)最少改動時間定時運行該程序 。
3.使用SQL語句緩存(SSC,SQL Statement Cache)功能
SSC是Informix IDS2000 V9中增加的新功能,提供了共享的語句緩存,從而實現(xiàn)了快速的SQL調(diào)用 。傳統(tǒng)情況下,每條SQL語句運行前都要進行邏輯分析以判斷語法正誤,還要在共享內(nèi)存中為各語句分配空間 。實踐表明,無論是OLTP還是DSS應(yīng)用,大量運行的SQL語句具有相同的格式,通過SSC,重復(fù)的SQL語句可以單一在共享內(nèi)存中存儲及共享使用,這樣不僅大大減少了大量語句的分析過程,使查詢的速度明顯加快,而且節(jié)省了大量共享內(nèi)存空間,帶來了其他應(yīng)用效果的改善 。SSC的使用方法如下 。
(1) 在IDS配置文件$ONCONFIG中定義
STMT_CACHE 1
或運行SQL命令:onmode -e enable 以激活SSC功能 。
(2)用戶使用前還必須定義環(huán)境變量STMT_CACHE
export STMT_CACHE = 1
或運行SQL命令:set statement cache on
經(jīng)過以上設(shè)置后,所有的查詢都將充分基于SSC進行高效處理 。
三、查看優(yōu)化結(jié)果
查詢優(yōu)化器給用戶提供了大量詳盡的關(guān)于優(yōu)化的信息,包括:
1.連接過程中的開銷估計
2.查詢過程中表的使用順序(即查詢路徑)
3.查詢過程中用到的臨時表
4.對每個表的訪問類型,如:順序掃描、索引掃描、哈希連接等
一名合格的系統(tǒng)管理員應(yīng)熟知每一項信息所代表的含義,并進行反復(fù)的優(yōu)化和輸出比較方可制定出最佳的優(yōu)化方案 。為使系統(tǒng)提供以上信息,要求執(zhí)行查詢前先運行SQL命令:set explain on,查詢完畢后再運行:set explain off,這樣在用戶當(dāng)前工作目錄下會生成一個包含以上信息sqlexplain.out文本文件 。通過該文件內(nèi)容,管理員可清楚地看到經(jīng)過優(yōu)化后的查詢效果 。

推薦閱讀