Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL查询在具有1个vCPU的AWS RDS实例中工作正常,但在具有2个或更多vCPU的实例中运行时会挂起_Mysql_Amazon Web Services_Performance_Aws Lambda_Amazon Rds - Fatal编程技术网

MYSQL查询在具有1个vCPU的AWS RDS实例中工作正常,但在具有2个或更多vCPU的实例中运行时会挂起

MYSQL查询在具有1个vCPU的AWS RDS实例中工作正常,但在具有2个或更多vCPU的实例中运行时会挂起,mysql,amazon-web-services,performance,aws-lambda,amazon-rds,Mysql,Amazon Web Services,Performance,Aws Lambda,Amazon Rds,下面我用Phython代码在Lambda函数中执行以下SQL查询。Lambda函数连接到运行MySQL 5.7.22的AWS RDS 当对实例类型db.t2.small或db.t2.micro执行此查询时,查询工作正常,结果会在几秒钟内返回。这些实例类型有1个vCPU 但是,当我们将实例类型提升为db.t3.small或db.t3.medium时,查询将挂起,直到lambda超时约10分钟。即使在lambda函数超时之后,DB CPU在最长时间内仍保持50%的消耗,直到我决定重新启动RDS 这是

下面我用Phython代码在Lambda函数中执行以下SQL查询。Lambda函数连接到运行MySQL 5.7.22的AWS RDS

当对实例类型db.t2.small或db.t2.micro执行此查询时,查询工作正常,结果会在几秒钟内返回。这些实例类型有1个vCPU

但是,当我们将实例类型提升为db.t3.small或db.t3.medium时,查询将挂起,直到lambda超时约10分钟。即使在lambda函数超时之后,DB CPU在最长时间内仍保持50%的消耗,直到我决定重新启动RDS

这是违反直觉的,因为我认为拥有更多vCPU应该会提高性能。我猜它可能以某种方式链接到多线程,但找不到任何信息。希望在这里得到一些帮助/提示

下面是有问题的SQL查询

INSERT INTO
   CP58 (
   SELECT
      s.BRN, IFNULL(IFNULL((
      SELECT
         rtmp.DLR_CODE 
      FROM
         STABLE stmp, CP58_REPORT rtmp 
      WHERE
         stmp.DLR_CODE = rtmp.DLR_CODE 
         AND s.BRN = rtmp.BRN 
         AND stmp.HQ_FLAG = 'HQ' 
         AND stmp.STATUS = 'Active' 
      GROUP BY
         stmp.COMP_REGNO, rtmp.DLR_CODE 
      ORDER BY
         stmp.COMP_REGNO, SUM(rtmp.TOTAL) DESC LIMIT 1), 
         (
            SELECT
               rtmp.DLR_CODE 
            FROM
               STABLE stmp,
               CP58_REPORT rtmp 
            WHERE
               stmp.DLR_CODE = rtmp.DLR_CODE 
               AND s.BRN = rtmp.BRN 
               AND stmp.HQ_FLAG = 'HQ' 
            GROUP BY
               stmp.COMP_REGNO,
               rtmp.DLR_CODE 
            ORDER BY
               stmp.COMP_REGNO,
               SUM(rtmp.TOTAL) DESC LIMIT 1
         )
), 'NOHQDEALERCODE') as 'HQDEALERCODE', s.DEALERNAME, s.ADDRESS, IFNULL(MAX(x.CPTABLE_YEAR), MAX(y.EDTABLE_YEAR)) as 'YEAR', IFNULL(SUM(x.CPTABLE), 0) as 'CPTABLE_TOTAL', IFNULL(SUM(y.EDTABLE), 0) as 'EDTABLE_TOTAL', 
         (
            IFNULL(SUM(x.CPTABLE), 0) + IFNULL(SUM(y.EDTABLE), 0)
         )
         as 'TOTAL', '0' as 'PDF' 
      FROM
         (
            SELECT
               stmp.COMP_REGNO as 'BRN',
               stmp.DLR_CODE as 'DLR_CODE',
               stmp.DLR_NAME as 'DEALERNAME',
               CONCAT(stmp.ADDRESS, ' ', stmp.TOWN, ' ', stmp.POSTCODE, ' ', stmp.STATE) as 'ADDRESS' 
            from
               STABLE stmp 
            GROUP BY
               DLR_CODE
         )
         s 
         LEFT OUTER JOIN
            (
               SELECT
                  subqc.DESTDEALERCODE as 'DEALERCODE',
                  SUM(subqc.RM) as 'CPTABLE',
                  YEAR(subqc.DATETIME) as 'CPTABLE_YEAR' 
               FROM
                  CPTABLE subqc 
               GROUP BY
                  subqc.DESTDEALERCODE
            )
            x 
            on x.DEALERCODE = s.DLR_CODE 
         LEFT OUTER JOIN
            (
               SELECT
                  subsubqe.DEALERCODE as 'DEALERCODE',
                  SUM(subsubqe.AMOUNT) as 'EDTABLE',
                  YEAR(subsubqe.BANKACK_DATE) as 'EDTABLE_YEAR' 
               FROM
                  EDTABLE subsubqe 
               GROUP BY
                  subsubqe.DEALERCODE
            )
            y 
            on s.DLR_CODE = y.DEALERCODE 
      GROUP BY
         BRN 
      HAVING
         TOTAL > 0 
         AND HQDEALERCODE <> 'NOHQDEALERCODE')
请提供解释选择…请提供解释选择。。。