累計的力量,delete全表掃描導致程式執行時間過長。
昨天晚上熬夜加班到3點多,主要時間耗在一個做賬業務上,這個業務是三個月前開始的,前幾次做都還是比較快的不到一個小時,可是昨天晚上竟然花費了4個多小時。我手頭工作太多,當時沒顧得上找原因。今天早上分析了一下那個時段的AWR,原來禍首是個DELETE語句。
DELETE ZC67 WHERE BAZ203 = :B2 AND BAC100='0' AND AAE140 = :B1 ;
執行計劃
----------------------------------------------------------
Plan hash value: 318370648
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 1 | 19 | 2447 (2)| 00:00:30 |
| 1 | DELETE | T_ZC67 | | | | |
|* 2 | TABLE ACCESS FULL| T_ZC67 | 1 | 19 | 2447 (2)| 00:00:30 |
-----------------------------------------------------------------------------
統計資訊
----------------------------------------------------------
4 recursive calls
0 db block gets
10989 consistent gets
這個語句迴圈的呼叫,執行了接近6萬次。
1.GIF
整個包的CPU時間是13389,可這個語句就執行了12774秒。(這個語句是包呼叫的)。
解決辦法是對BAZ203增加索引,這個欄位是個序列產生的,每條記錄都唯一。區分度非常好。
之所以前幾次比較快是由於資料量還不大,隨著資料量變大,執行時間長也就在所難免了。
[ 本帖最後由 wei-xh 於 2010-7-1 12:00 編輯 ]
DELETE ZC67 WHERE BAZ203 = :B2 AND BAC100='0' AND AAE140 = :B1 ;
執行計劃
----------------------------------------------------------
Plan hash value: 318370648
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 1 | 19 | 2447 (2)| 00:00:30 |
| 1 | DELETE | T_ZC67 | | | | |
|* 2 | TABLE ACCESS FULL| T_ZC67 | 1 | 19 | 2447 (2)| 00:00:30 |
-----------------------------------------------------------------------------
統計資訊
----------------------------------------------------------
4 recursive calls
0 db block gets
10989 consistent gets
這個語句迴圈的呼叫,執行了接近6萬次。
1.GIF
整個包的CPU時間是13389,可這個語句就執行了12774秒。(這個語句是包呼叫的)。
解決辦法是對BAZ203增加索引,這個欄位是個序列產生的,每條記錄都唯一。區分度非常好。
之所以前幾次比較快是由於資料量還不大,隨著資料量變大,執行時間長也就在所難免了。
[ 本帖最後由 wei-xh 於 2010-7-1 12:00 編輯 ]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-666809/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- delete 與全表掃描delete
- 隱形轉換導致全表掃描案例
- delete 刪除資料 全表掃描還是掃描所有塊的測試delete
- Oracle JDBC驅動使用setDate()、setTimestamp()導致全表掃描OracleJDBC
- oracle實驗記錄(分割槽全表掃描(全區掃描) FTS 時候的成本計算)Oracle
- 計算表掃描中執行計劃的COST
- oracle是如何進行全表掃描的Oracle
- 一次簡單的效能優化診斷,聚簇因子過高導致全表掃描。優化
- MySQL中的全表掃描和索引樹掃描MySql索引
- 優化全表掃描優化
- Greenplum儲存過程使用分割槽表將進行全表掃描儲存過程
- 執行計劃-資料訪問方式(全表掃描與4種索引的方式)索引
- 查詢全表掃描的sqlSQL
- 使用索引快速全掃描(Index FFS)避免全表掃描的若干場景索引Index
- oracle 全表掃描,索引範圍掃描與塊的理解Oracle索引
- ORACLE全表掃描查詢Oracle
- noworkload下全表掃描cost的計算
- Oracle中存取資料掃描Table及索引的方式(全表掃描,索引掃描等)Oracle索引
- Oracle 11g全表掃描以Direct Path Read方式執行Oracle
- 抓取全表掃描的表,篩選和分析
- 11GR2的delete全表的執行計劃變化delete
- 查詢全表掃描語句
- oracle優化:避免全表掃描Oracle優化
- 索引全掃描和索引快速全掃描的區別索引
- 透過pl/sql計算程式的執行時間SQL
- 通過pl/sql計算程式的執行時間SQL
- (轉)索引掃描還是全表掃描(Index Scan Or Full Table Scan)索引Index
- 轉)索引掃描還是全表掃描(Index Scan Or Full Table Scan)索引Index
- 優化Oracle with全表掃描的問題優化Oracle
- oracle實驗記錄 (全表掃描COST計算方法)Oracle
- 一條全表掃描sql語句的分析SQL
- 優化Oracle with全表掃描的問題(二)優化Oracle
- 計算php程式執行時間的程式PHP
- 如何減少 Hyperf 框架的掃描時間框架
- 24_Oracle資料庫全表掃描詳解(四)_全表掃描生產最佳化案例三則Oracle資料庫
- 掃描整個網段的多執行緒程式(轉)執行緒
- 使用全表掃描快取大表的相關問題快取
- 有索引卻走全表掃描的實驗分析索引