ITPub博客

首页 > 数据库 > Oracle > 跨DBLINK Insert into慢的问题解决

跨DBLINK Insert into慢的问题解决

原创 Oracle 作者:ginni_hua 时间:2018-08-31 10:30:27 0 删除 编辑

一、问题描述

今天用户给出一个SQL,select执行很快,但是insert进表时就很慢,半天没个动静。

SQL执行用时:310s

INSERT INTO uop_sta_cen.WXL_IDC_STATE

  (INS_DATE, DOMAIN_ID, EPARCHY_CODE, CUST_ID, USER_ID, SERIAL_NUMBER)

  SELECT SYSDATE,

         '3',

         EPARCHY_CODE,

         to_char(CUST_ID),

         to_char(USER_ID),

         SERIAL_NUMBER

    FROM UCR_CRM3.TF_F_USER@UQRY_SEL_TO_HACRMDB22 T

   WHERE T.REMOVE_TAG = '0'

     AND T.USER_ID IN

         (SELECT A.USER_ID

            FROM UCR_CRM3.TF_F_USER_SVC@UQRY_SEL_TO_HACRMDB22 A

           WHERE A.SERVICE_ID IN ('46000003', '46000005', '46000006')

             AND SYSDATE BETWEEN A.START_DATE AND A.END_DATE);

blob.png

单独执行SELECT,用时0.078s

SELECT SYSDATE,

         '3',

         EPARCHY_CODE,

         to_char(CUST_ID),

         to_char(USER_ID),

         SERIAL_NUMBER

    FROM UCR_CRM3.TF_F_USER@UQRY_SEL_TO_HACRMDB22 T

   WHERE T.REMOVE_TAG = '0'

     AND T.USER_ID IN

         (SELECT A.USER_ID

            FROM UCR_CRM3.TF_F_USER_SVC@UQRY_SEL_TO_HACRMDB22 A

           WHERE A.SERVICE_ID IN ('46000003', '46000005', '46000006')

             AND SYSDATE BETWEEN A.START_DATE AND A.END_DATE)

blob.png

二、原因分析

从上面执行计划,可以看出,连接方式有变化,Nested loops-->Hash join,这就是慢的原因。

不用DBLINK,直接本地INSERT很快,也是使用NL的方式。

三、问题解决

可用两种方法解决:

  1. 不用跨DBLINK,直接本地INSERT,再通过DBLINK读取即可;

  2. 使用hint方式,强制使用NL连接。

INSERT INTO uop_sta_cen.WXL_IDC_STATE  

 (INS_DATE, DOMAIN_ID, EPARCHY_CODE, CUST_ID, USER_ID, SERIAL_NUMBER)

 SELECT /*+ use_nl(A,T)*/ SYSDATE,

         '3',

        T.EPARCHY_CODE,

         to_char(T.CUST_ID),

         to_char(T.USER_ID),

         SERIAL_NUMBER

    FROM UCR_CRM3.TF_F_USER@DBLNK_NGCRM2 T,(SELECT distinct USER_ID

            FROM UCR_CRM3.TF_F_USER_SVC@DBLNK_NGCRM2

           WHERE SERVICE_ID IN ('46000003', '46000005', '46000006')

             AND SYSDATE BETWEEN START_DATE AND END_DATE) A

   WHERE T.REMOVE_TAG = '0'

     AND T.USER_ID =A.user_id

用时 0.109S

blob.png

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7836221/viewspace-2213282/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 職業生涯八大傻
请登录后发表评论 登录
全部评论

注册时间:2008-03-20

  • 博文量
    172
  • 访问量
    361645