Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

69

积分

0

好友

13

主题
1#
发表于 2012-8-7 16:59:08 | 查看: 3739| 回复: 2
接受同事的MERGE into 代码 从 每天的300万数据  MERGE INTO 到 B表 该B表每个分区有4千万的数据.
源数据先FETCH BULK 到数组里. 根据 5个关键字段匹配
  1. MACHTED then UPDATE
  2. NOT  MACHTED THEN  
  3.    INSERT INTO B (...) values(...)
复制代码

  
  
PLAN:
  1. DEPTH    OPERATION    OBJECT_TYPE    OPTIONS    COST    ROW_NUM    BYTES    ACCESS_PREDICATES    FILTER_PREDICATES
  2. 0             MERGE STATEMENT                                         3               
  3. 1             MERGE                           
  4. 2             VIEW                           
  5. 3            NESTED LOOPS                           OUTER          3                  1            159        
  6. 4             FAST DUAL                                                        2                  1            
  7. 4             PARTITION RANGE                      SINGLE          1                  1              159        
  8. 5                TABLE ACCESS    TABLE         BY LOCAL INDEX ROWID  1    1        159                                                        ("AREA_ID"=:B8 AND "CHANNEL_ID"=:B9)
  9. 6                  INDEX                   INDEX          RANGE SCAN 1                 2                         "USERNUMBER"=:B6 AND "MONTHNO"=:B5 AND "SITECODE"=:B1      
  10.    
复制代码


等待事件                        db file sequential read
总执行次数                     568
平均逻辑读                     79121
平均物理读                      3826
平均处理行数                  9984
ROWS_PROCESSED    5671885
平均执行时间(秒)           32.56
平均CPU花费(秒)           1.82
平均I/O花费(秒)              30.58
总的逻辑读                    44948687
总的物理读                    2173803
总的执行时间(秒)             18499.43
最后一次执行花费时间(秒)    1821

有个本地索引 包含关键子 KEY-MONTH,KEY-USERNAME,KEY-CODE; 没有包含另外两个关键. 应该不太需要;

整个MERGE 需要1小时40分钟.

各位大神不知道 可有更好的解决办法, 简单快速?
2#
发表于 2012-8-7 20:31:57
就统计信息看 似乎有点问题,

请使用 sql health check 脚本 分析该SQL 然后上传HTML
http://www.oracledatabase12g.com ... h-check-script.html

回复 只看该作者 道具 举报

3#
发表于 2012-8-10 11:13:27

加提示

MERGE /*use_hash(t2,t1)*/ into
方式 避免嵌套循环

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-11-16 02:52 , Processed in 0.052354 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569