查看: 2298|回复: 8

update优化和诊断

[复制链接]
认证徽章
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
发表于 2011-3-1 09:40 | 显示全部楼层 |阅读模式
update tep.SXBD_OWE_SERV_END_201012 t
   set t.asset_Row_id =
       (select p.crm_serv_nbr
          from tep.SXBD_OWE_SERV_END_201012_1 p
         where p.serv_id =t.serv_id
         group by p.crm_serv_nbr)
         
         
  UPDATE STATEMENT, GOAL = ALL_ROWS        1113192        10284                10230                        810245054
UPDATE                                                       tep        SXBD_OWE_SERV_END_201012       
  TABLE ACCESS FULL                       1113192        10284                10230        tep        SXBD_OWE_SERV_END_201012        810245054
  HASH GROUP BY                             1               5                   4                        15041607
   TABLE ACCESS BY INDEX ROWID             1              4                  4        tep        SXBD_OWE_SERV_END_201012_1        29226
    INDEX RANGE SCAN                       1                3                  3        tep        INDX_SERV_ID_SERV_1        21764

         
         SXBD_OWE_SERV_END_201012有1113192条记录
         SXBD_OWE_SERV_END_201012_1有531435条记录
         
         索引情况:
         
         INDEX_NAME                     COLUMN_NAME
------------------------------ --------------------------------------------------------------------------------
IDX_SOSE_201012                SERV_ID
INDX_ACCT_NBR_97_201012        ACCT_NBR_97
INDX_SERV_ID                   SERV_ID
INDX_ASSET_ROW_ID_END2         ASSET_ROW_ID
INDX_SERV_ID_SERV              SERV_ID


INDEX_NAME                     COLUMN_NAME
------------------------------ --------------------------------------------------------------------------------
INDX_SERV_ID_SERV_1            SERV_ID
INDX_ASSET_ROW_ID_END          CRM_SERV_NBR
INDX_SERV_ID_SERV_1            SERV_ID
         
         
         跑了好几个小时跑不出来。我怀疑不是语句问题是不是锁阻塞所致:
         
         对应的session下有log file sync等待
         对应的session下有2个sid:
         79  sep transaction    exclusive
         79  sep DML            row-x(sx)
         
         
         > SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,
  2         l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_time
  3      FROM v$locked_object l, all_objects o, v$session s
  4     WHERE l.object_id = o.object_id
  5       AND l.session_id = s.sid
  6  ORDER BY sid, s.serial# ;
  

       SID    SERIAL# LOCKED_MODE ORACLE_USERNAME                OS_USER_NAME                   MACHINE                                                          TERMINAL                       OBJECT_NAME                    LOGON_TIME
---------- ---------- ----------- ------------------------------ ------------------------------ ---------------------------------------------------------------- ------------------------------ ------------------------------ -----------
        36       4306           6 pote                         administrator                  DW\ETL-SERVER3                                                 ETL-SERVER3                         PRE_E           2011-3-1 上午
        79      61046           3 tep
认证徽章
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
发表于 2011-3-1 11:31 | 显示全部楼层
update /*+ full(T) parallel(T 4) */ tep.sxbd_owe_serv_end_201012 t
   set t.asset_Row_id =
       (select /*+ index_ffs(T IDX_SOSE_201012) parallel_index(T IDX_SOSE_201012 4) */crm_serv_nbr
          from tep.sxbd_owe_serv_end_201012_1 p
         where t.serv_id = p.serv_id
         group by crm_serv_nbr)
where exists (select 1
          from tep.sxbd_owe_serv_end_201012_1 p1
         where t.serv_id = p1.serv_id)

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2011-3-1 11:46 | 显示全部楼层
不会吧,你在修改全表, 8亿条记录, 不要说几个小时, 几十个小时也未必能完成,

改用INSERT方式实现吧.

使用道具 举报

回复
认证徽章
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
发表于 2011-3-1 12:42 | 显示全部楼层
cpucost 是810245054
cpucost是?

对应的session下有2个sid:
         79  sep transaction    exclusive
         79  sep DML            row-x(sx)
这个内部详细的机制是怎么样的??
这个内部详细的机制是怎么样的??

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2011-3-1 13:36 | 显示全部楼层
原帖由 yyp2009 于 2011-3-1 12:42 发表
cpucost 是810245054
cpucost是?

对应的session下有2个sid:
         79  sep transaction    exclusive
         79  sep DML            row-x(sx)
这个内部详细的机制是怎么样的??
这个内部详细的机制是怎么样的??


嗯, 你贴出来的数据格式, 我看成是8亿条, 不过1千万数据也很多, 不要去那些锁, 还是改用INSERT快, 否, 很可能出现快照太老错误.

使用道具 举报

回复
认证徽章
论坛徽章:
86
秀才
日期:2015-09-21 09:46:16目光如炬
日期:2014-07-28 06:00:03马上有钱
日期:2014-06-16 15:55:42马上有房
日期:2014-06-16 15:55:422014年世界杯参赛球队: 伊朗
日期:2014-06-13 11:29:242014年世界杯参赛球队:巴西
日期:2014-06-06 14:36:14马上有钱
日期:2014-04-04 13:51:21马上加薪
日期:2014-04-04 13:35:40马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02
发表于 2011-3-1 13:49 | 显示全部楼层
用merge 来实现吧

使用道具 举报

回复
认证徽章
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
发表于 2011-3-1 14:24 | 显示全部楼层
原帖由 ZALBB 于 2011-3-1 13:36 发表


嗯, 你贴出来的数据格式, 我看成是8亿条, 不过1千万数据也很多, 不要去那些锁, 还是改用INSERT快, 否, 很可能出现快照太老错误.



谢谢版主!我熟悉锁的,就是常常的有dml操作时对应的session的lock下就加了若干锁(对应的sid是一样的但是lock type和lmode来区别就有很多)。但是不清楚这些锁定的内部详细机制。这个我之前有个帖子中看到过,分析的很不错,可是后来一忙死活找不到了,郁闷!

使用道具 举报

回复
认证徽章
论坛徽章:
58
生肖徽章2007版:马
日期:2009-11-06 23:12:33授权会员
日期:2013-01-10 14:38:592013年新春福章
日期:2013-02-25 14:51:24马自达
日期:2013-08-07 10:54:45红旗
日期:2013-08-09 13:48:48劳斯莱斯
日期:2013-09-12 15:56:37萤石
日期:2013-10-31 08:44:19优秀写手
日期:2013-12-18 09:29:13Jeep
日期:2014-01-14 10:53:432014年新春福章
日期:2014-02-18 16:43:09
发表于 2011-3-1 14:25 | 显示全部楼层
原帖由 buptdream 于 2011-3-1 13:49 发表
用merge 来实现吧


merge快不了多少的。

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2011-3-1 15:34 | 显示全部楼层
原帖由 yyp2009 于 2011-3-1 14:24 发表



谢谢版主!我熟悉锁的,就是常常的有dml操作时对应的session的lock下就加了若干锁(对应的sid是一样的但是lock type和lmode来区别就有很多)。但是不清楚这些锁定的内部详细机制。这个我之前有个帖子中看到过,分析的很不错,可是后来一忙死活找不到了,郁闷!


是不是锁堵塞, 看一下它的事件就知, 从你1楼的内容看, 没有堵塞, 就是数据量大, 忙.

使用道具 举报

回复

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

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

大会官网>>
TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表