Oracle效能優化-SQL優化(案例四)
Oracle 效能優化 -SQL 優化 ( 案例四 )
環境:
DB:Oracle 11.2.0.1.0
問題:
ERP 薪資發放節點計算時間耗時 較長,需要15 分鐘左右;
問題原因:
有兩個SQL 執行特別慢
第一個查詢WA_CACU_DATA 的 SQL ,在 plsql 中執行特別快,返回 0 條,懷疑某些堆表被當成臨時表使用,導致執行計劃有問題,手動刪除和鎖定這些表的統計資訊後查詢 SQL 速度有明顯提高;
第二個更新WA_CACU_DATA 的 SQL ,第一次執行快,第二次執行慢,執行計劃不穩定,禁用基數反饋 (_optimizer_use_feedback) 後速度正常;
解決過程:
問題重現時,檢視主要慢在兩個SQL ,一個 select wa_cacu_data ... ,另一個 update ...;
一 耗時長的查詢SQL 如下
執行計劃如下:
解決方案:
在plsql 中執行特別快,返回 0 條,懷疑某些堆表被當成臨時表使用,導致執行計劃有問題,手動刪除和鎖定這些表的統計資訊後查詢 SQL 速度有明顯提高;
SQL> exec dbms_stats.delete_table_stats( ‘ cjc ’ , ’ tbm_period ’ );
SQL> exec dbms_stats.delete_table_stats( ‘ cjc ’ , ’ org_adminorg ’ );
SQL> exec dbms_stats.delete_table_stats( ‘ cjc ’ , ’ org_hrorg ’ );
SQL> exec dbms_stats.lock_table_stats( ‘ cjc ’ , ’ tbm_period ’ );
SQL> exec dbms_stats.lock_table_stats( ‘ cjc ’ , ’ org_adminorg ’ );
SQL> exec dbms_stats.lock_table_stats( ‘ cjc ’ , ’ org_hrorg ’ );
二:耗時長的update 語句
抓取完整sql 單獨執行時,發現第一次執行很快,第二次執行特別慢,並且第一次和第二次生成的執行計劃不一樣,第二次執行計劃帶有“ cardinality feedback used for this statement ”,懷疑和 oracle 11g 基數反饋特性有關,導致執行計劃不穩定, SQL 執行效率低。
解決方案:
session 級別禁用基數反饋後,多次手動執行 SQL ,速度穩定變快了。
alter session set "_optimizer_use_feedback"=false;
臨時解決辦法可以考慮系統級別禁用基數反饋,或研發更改程式碼,在sql 級別增加 hint 禁用基數反饋。
alter system set "_optimizer_use_feedback"=false;
歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2676120/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle效能優化-SQL優化(案例一)Oracle優化SQL
- Oracle效能優化-SQL優化(案例二)Oracle優化SQL
- Oracle效能優化-SQL優化(案例三)Oracle優化SQL
- Oracle某行系統SQL優化案例(三)OracleSQL優化
- Oracle某行系統SQL優化(案例五)OracleSQL優化
- Oracle某行系統SQL優化案例(二)OracleSQL優化
- Oracle 某行系統SQL優化案例(一)OracleSQL優化
- oracle 效能優化Oracle優化
- SQL優化案例-使用with as優化Subquery Unnesting(七)SQL優化
- Oracle優化案例-使用with as優化Subquery Unnesting(七)Oracle優化
- Oracle案例10——HWM(高水位線)效能優化Oracle優化
- SQL效能優化技巧SQL優化
- Oracle SQL效能優化的40條軍規OracleSQL優化
- MySQL SQL優化案例(一)MySql優化
- Oracle優化案例-(三十四)Oracle優化
- Oracle 效能優化-expdp備份速度優化02Oracle優化
- Oracle 效能優化-expdp備份速度優化03Oracle優化
- sql語句效能優化SQL優化
- Oracle 高效能SQL引擎剖析--SQL優化與調優機制詳解OracleSQL優化
- Oracle SQL優化之sql tuning advisorOracleSQL優化
- Oracle優化案例-復現SQL ordered by Parse Calls(三十二)Oracle優化SQL
- SQL優化案例-union代替or(九)SQL優化
- Oracle優化案例-union代替or(九)Oracle優化
- 效能調優——SQL最佳化SQL
- Oracle優化案例-join列索引缺失導致的sql效能問題(二十六)Oracle優化索引SQL
- 資料庫效能優化-索引與sql相關優化資料庫優化索引SQL
- Oracle優化案例-教你線上搞定top cpu的sql(十二)Oracle優化SQL
- 【前端效能優化】vue效能優化前端優化Vue
- SQL優化案例-單表分頁語句的優化(八)SQL優化
- Oracle優化案例-單表分頁語句的優化(八)Oracle優化
- Oracle優化案例-從執行計劃定位SQL問題(三)Oracle優化SQL
- Oracle優化案例-關閉auto space advisor和sql tuning advisor(十九)Oracle優化SQL
- MySQL的SQL效能優化總結MySql優化
- Oracle優化案例-儲存過程的優化思路(二十三)Oracle優化儲存過程
- 前端效能優化(JS/CSS優化,SEO優化)前端優化JSCSS
- Oracle某行系統SQL最佳化(案例四)OracleSQL
- sql優化之邏輯優化SQL優化
- 資料庫優化 - SQL優化資料庫優化SQL