Oracle数据库使用Analyze提升sql性能
?
Oracle數(shù)據(jù)庫使用Analyze提升sql性能
?
????? 如果你不使用analyze完成sql優(yōu)化,將意味著:你拒絕使用數(shù)據(jù)庫的查詢優(yōu)化器,也失去了使用優(yōu)化連接的機(jī)會。假設(shè)你創(chuàng)建了一張擁有100萬條記錄的臨時表,如果不對其進(jìn)行分析,那么優(yōu)化器將無法從現(xiàn)有的線索中獲取表中真正的內(nèi)容,于是它只能決定使用嵌套循環(huán)連接來一行行地掃描數(shù)據(jù)表,隨著數(shù)據(jù)集的增長,你的數(shù)據(jù)庫性能會越來越差。
?
?? ORACLE數(shù)據(jù)庫的PL/SQL語句執(zhí)行的優(yōu)化器,有基于代價的優(yōu)化器(CBO)和基于規(guī)則的優(yōu)化器(RBO)。
???RBO的優(yōu)化方式,依賴于一套嚴(yán)格的語法規(guī)則,只要按照規(guī)則寫出的語句,不管數(shù)據(jù)表和索引的內(nèi)容是否發(fā)生變化,不會影響PL/SQL語句的"執(zhí)行計劃"。
CBO自ORACLE7版被引入,ORACLE自7版以來采用的許多新技術(shù)都是只基于CBO的,如星型連接排列查詢,哈希連接查詢,反向索引,索引表,分區(qū)表和并行查詢等。CBO計算各種可能"執(zhí)行計劃"的"代價",即cost,從中選用cost最低的方案,作為實際運(yùn)行方案。各"執(zhí)行計劃"的cost的計算根據(jù),依賴于數(shù)據(jù)表中數(shù)據(jù)的統(tǒng)計分布,ORACLE數(shù)據(jù)庫本身對該統(tǒng)計分布是不清楚的,須要分析表和相關(guān)的索引,才能搜集到CBO所需的數(shù)據(jù)。要想使用好CBO,使SQL語句發(fā)揮最大效能,必須保證統(tǒng)計數(shù)據(jù)的及時性。
?
? ? 統(tǒng)計信息的生成可以有完全計算法和抽樣估算法。SQL例句如下:
?? 完全計算法:analyze table abc compute statistics;
??? 抽樣估算法(抽樣20%): analyze table abc estimate statistics sample 20percent;
?
??? 可以通過定時任務(wù)方式,定時通過analyze命令完成數(shù)據(jù)庫中相應(yīng)表內(nèi)容的分析處理。
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/widget90/p/9678884.html
總結(jié)
以上是生活随笔為你收集整理的Oracle数据库使用Analyze提升sql性能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学建模:1.概述 监督学习--回归分析
- 下一篇: 【mysql】配置 选项文件