精华内容
下载资源
问答
  • 直到我去实习了,在优化的过程中,才发现自己无知,知识局限。为此... 文章 优惠券发放 2018-12-01 1812浏览量 MYSQL MyISAM表锁 锁是计算机协调多个进程或线程并发访问某一资源的机制 。在数据库中,除传统的 ...

    优化器

    Oracle 的优化器(Optimizer)实际上是数据库环境的参数设置。可以在INITsid.ORA 文件内的

    OPTIMZER_MODE=RULE 或OPTIMZER_MODE=COST 或OPTIMZER_MODE=CHOOSE 来

    设置优化目标。用户也可以在会话和查询方式下更改优化器的默认...

    文章

    eric0435

    2016-05-13

    1683浏览量

    我必须得告诉大家的MySQL优化原理(2)

    在可以思考一个问题,如果数据量非常大的情况下,您根据业务选择了合适的字段,精心设计了表和索引,还仔细的检查了所有的SQL,并确认已经没什么问题,但性能仍然不能满足您的要求,该怎么办呢?还有其他优化策略吗?答案是肯定的。

    接下来继续和您讨论一些常用的MySQL高级特性以及其背后的工作原理。

    分区表合...

    文章

    技术小能手

    2018-07-18

    2341浏览量

    管理Oracle实例

    前言

    正常生产环境下往往是通过应用服务器来与Oracle数据库相连接,大多数使用Oracle的开发语言以Java为主,针对于Java的中间件有很多,我们这里具体来看一下Oracle整体产品线的WLS产品

    安装Weblogic

    执行上图所示命令,启动WLS安装页面

    在欢迎页面中点击下一步继续

    ...

    文章

    技术小甜

    2017-11-15

    1039浏览量

    阿里云爆款特惠专场,精选爆款产品低至0.95折!

    爆款ECS云服务器8.1元/月起,云数据库低至1.5折,限时抢购!

    广告

    从Oracle迁移到MySQL的各种坑及自救方案

    讲师介绍  冯帅

    点融网高级DBA

    获有Oracle OCM、MySQL OCP,目前从事MySQL相关的运维和架构工作,擅长异构数据库交互。

    当企业内部使用的数据库种类繁杂时,或者有需求更换数据库种类时,都可能会做很多数据迁移的工作。有些迁移很简单,有些迁移可能就会很复杂,大家有没有...

    文章

    稀奇古怪

    2017-05-17

    2492浏览量

    从Oracle迁移到MySQL的各种坑及自救方案

    当企业内部使用的数据库种类繁杂时,或者有需求更换数据库种类时,都可能会做很多数据迁移的工作。有些迁移很简单,有些迁移可能就会很复杂,大家有没有考虑过为了顺利完成复杂的数据库迁移任务,都需要考虑并解决哪些问题呢?

    在以前的工作中,我迁移过Oracle到Informix、Oracle和SQLSer...

    文章

    技术小美

    2017-11-13

    1312浏览量

    前沿 | VLDB 2019论文解读:阿里巴巴大规模、海量数据实时分析型数据库系统——AnalyticDB

    前言

    一年一度的数据库领域顶级会议VLDB 2019于美国当地时间8月26日-8月30日在洛杉矶召开。在本届大会上,阿里云数据库产品团队多篇论文入选Research Track和Industrial Track。

    本文将对入围Industrial Track的论文《AnalyticDB: R...

    文章

    Roin123

    2019-08-30

    2400浏览量

    RMAN 初学者入门

    本文转自网络,地址不详。

    这篇文章是去年写的了,最初发表在chinaunix.net的oracle论坛里,收录在旧版文集中,可能很多没有看到,总有人写信要,今天乘改版之际就把它单独拿出来了。

    RMAN(RecoveryManager)是DBA的一个重要工具,用于备份、还原和恢复oracle数据...

    文章

    长烟慢慢

    2011-10-09

    973浏览量

    前沿 | VLDB论文解读:阿里云超大规模实时分析型数据库AnalyticDB

    前言

    一年一度的数据库领域顶级会议VLDB 2019于美国当地时间8月26日-8月30日在洛杉矶召开。在本届大会上,阿里云数据库产品团队多篇论文入选Research Track和Industrial Track。

    本文将对入围Industrial Track的论文《AnalyticDB: R...

    文章

    Roin123

    2019-09-02

    1277浏览量

    Oracle ASM 详解

    ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也是由实例和文件组成, 也可以通过sqlplus 工具来维护。

    ASM 实例的创建和删除也可以用DBCA 这个命令来操...

    文章

    技术小美

    2017-11-12

    549浏览量

    oracle 索引基本原理

    一.索引基本概念

    oracle提供了两种方式:从表中读取所有行(即全表扫描),或者通过ROWID一次读取一行。

    如果只访问大数据量表中的5%的行,并且使用索引标识需要读取的数据块,这样话费的I/O较少.

    索引对性能改进的程度:1.取决于数据的选择性 2.数据在表的数据块中的分布方式

    当数据分...

    文章

    技术小胖子

    2017-11-22

    1096浏览量

    oracle ASM

    ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也是由实例和文件组成, 也可以通过sqlplus 工具来维护。

    ASM 实例的创建和删除也可以用DBCA 这个命令来操...

    文章

    余二五

    2017-11-22

    951浏览量

    mysql各种引擎对比、实战

    1)存储引擎概述;

    (2)MySQL各大存储引擎;

    (3)InnoDB和MyIsam使用及其原理对比;

    (4)InnoDB和MyIsam引擎原理;

    (5)剩余引擎的使用DEMO(主要是Mrg_Myisam分表);

    文章目录:(例子下载在最下方)

    (1)存储引擎概述

    为什么要合理选择数据库存储...

    文章

    sunsky303

    2018-01-12

    1271浏览量

    磁盘安装启动的方法与ASM

    1.可用的raid级别

    raid0

    raid1

    raid5

    raid10   比raid 01好

    raid100  这种raid级别优点主要是:改进随机读的性能和消除热点

    2.更新的raid5

    尽管raid5是一种廉价的冗余方案,但它对于写入密集型操作的性能较差。

    当对raid...

    文章

    技术小胖子

    2017-11-15

    1021浏览量

    MySQL优化系列(五)--数据库存储引擎(主要分析对比InnoDB和MyISAM以及讲述Mrg_Myisam分表)

    MySQL优化系列(五)--数据库存储引擎(主要分析对比InnoDB和MyISAM以及讲述Mrg_Myisam分表)

    之前一直是使用默认MySQL的InnoDB存储引擎,没有思考过为什么使用,也没思考过其优缺和其他数据库存储引擎。直到我去实习了,在优化的过程中,才发现自己很无知,知识很局限。为此...

    文章

    优惠券发放

    2018-12-01

    1812浏览量

    MYSQL MyISAM表锁

    锁是计算机协调多个进程或线程并发访问某一资源的机制 。在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一 个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。 从这个角度来说,锁...

    文章

    航空母舰

    2016-05-12

    1724浏览量

    ORACLE体系结构-真正的数据库-文件系统

    前面文章,对于ORACLE部分前面主要阐述的是INSTANCE实例内部的一些东西,主要从共享池、数据缓冲区两大块去讲解,其实对于细节的说明还有一些知识点,如RMAN中的大池应用或PGA中的后台线程会在后面逐步说明,本文以ORACLE物理结构来讲解点点物理层的东西,其实这也是真正的数据库了,其余的都...

    文章

    钟隐

    2010-06-11

    1630浏览量

    Oracle数据库备份与恢复的三种方法

    转自blueskys567原文Oracle数据库备份与恢复的三种方法, 2006-10.

    有删改

    Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。

    导出备件是一种逻辑备份,冷备份和热备份是物理备份。

    一、 导出/导入(Export/Impor...

    文章

    橘子红了呐

    2017-11-11

    1137浏览量

    我的MYSQL学习心得(十四) 备份和恢复

    这一篇《我的MYSQL学习心得(十四)》将会讲解MYSQL的备份和恢复

    MYSQL里的备份分为逻辑备份和物理备份,还原的时候同样分逻辑还原和物理还原

    备份

    逻辑备份方法

    使用MYSQLDUMP命令备份

    MYSQLDUMP是MYSQL提供的一个非常有用的数据库备份工具。mysqldump命令执行...

    文章

    skyme

    2016-05-05

    2395浏览量

    [转载]聊聊Greenplum的那些事

    原文

    http://dbaplus.cn/news-21-341-1.html

    聊聊Greenplum的那些事

    李巍 2016-04-01 14:15:00 1024

    开卷有益——作者的话

    有时候真的感叹人生岁月匆匆,特别是当一个IT人沉浸于某个技术领域十来年后,蓦然回首,...

    文章

    德哥

    2016-07-11

    6805浏览量

    轻量级数据库中间件利器Sharding-JDBC深度解析(有彩蛋)

    讲师介绍

    张亮

    当当架构部总监

    负责分布式中间件和私有云平台建设

    目前主导开源项目:Elastic-Job及Sharding-JDBC

    主题简介:

    1、关系型数据库中间件核心功能介绍

    2、Sharding-JDBC架构及内核解析

    3、Sharding-JDBC未来展望

    一、...

    文章

    行者武松

    2017-08-02

    1199浏览量

    Oracle数据库备份与恢复的三种方法

    Oracle数据库有三种标准的备份方法,它们分别是导出/导入(EXP/IMP)、热备份和冷备份。导出备件是一种逻辑备份,冷备份和热备份是物理备份。

    一、 导出/导入(Export/Import)

    利用Export可将数据从数据库中提取出来,利用Import则可将提取出来...

    文章

    科技小先锋

    2017-11-15

    1034浏览量

    数据库产品事业部月刊(2020.3-4)

    一、重大事件

    1、飞刀接受印度知名IT媒体专访:阿里云的目标是实现数据库的完全自动化和智能化

    阿里云云原生数据库PolarDB和云原生数据仓库AnalyticDB在印度正式上线,当地知名的IT媒体YourStory对阿里云智能数据库事业部总负责人李飞飞博士进行了专访。

    在采访中李飞飞表示,随着计算...

    文章

    Roin123

    2020-05-29

    344浏览量

    带你读《HikariCP数据库连接池实战》之二:数据库连接池江湖

    点击查看第一章点击查看第三章第2章

    数据库连接池江湖

    本章将为读者介绍数据库连接池的一些基础概念。数据库连接池涉及的概念很多,这里介绍的是我认为在企业应用开发中非常基础和重要的概念。数据库连接的建立是一种耗时长、性能低、代价高的操作,频繁地进行数据库连接的建立和关闭会极大影响系统的性能,若多线程并...

    文章

    被纵养的懒猫

    2019-11-08

    1712浏览量

    2020这一年总结出来的Java面试题,常频面试题大汇总~

    面试就是大家身边总是存在各种各样的可能,而自身又具备这样的能力,就忍不住想试一试,尤其是到了年关,是一个好的蓄势并且认真积累的阶段。当然面试套路众多,但对于技术面试来说,主要是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。

    “面试造火箭,工作拧螺丝...

    文章

    游客jky5slpogbcdo

    2020-12-12

    7浏览量

    吃透Mysql

    Mysql概述

    数据库是一个易于访问和修改的信息集合。它允许使用事务来确保数据的安全性和一致性,并能快速处理百万条以上的数据。数据库一般可以用如下图形来理解:

    数据库功能模块图

    数据库是由多种互相交互的组件构成的。大致可以分为三层,最上层是面向用户的组件:查询管理器、数据管理器、工具包...

    文章

    彦帧要努力

    2018-09-02

    1064浏览量

    系统架构-基础篇-(高性能基础建设说明与选型条件)

    本文牵扯的面积可能会比较泛,或者说比较大,在这个层面很多人也有自己的见解,所以我这也仅仅是抛砖引玉,结合前面讲述的一些基础技术,从思想中阐述更为深入的架构思想基础,因为最好的架构思想是架构师结合实际情况思考出来最适合的架构,这里仅仅说明下一些常用的原理和思想,主要包含的内容有(内容很泛,所以都是简...

    文章

    钟隐

    2011-05-15

    1599浏览量

    [译] 系统设计入门 | 掘金翻译计划

    本文讲的是[译] 系统设计入门 | 掘金翻译计划,

    展开全文
  • 曾经发现这样一种情况,存储过程中的语句提取出来单独执行很快,但在存储过程中执行就很慢。----************* 存储过程中的语句,变量为 avc_acct_monthSELECT 2101,B.BUNDLE,COUNT( Distinct CASE WHEN (substr...

    曾经发现这样一种情况,存储过程中的语句提取出来单独执行很快,但在存储过程中执行就很慢。

    ----*************  存储过程中的语句,变量为 avc_acct_month

    SELECT 2101,B.BUNDLE,

    COUNT( Distinct CASE WHEN (substr(FAMILY_NUM_CREATE_T,1,6)<=&avc_acct_month AND SUBSTR(nvl(FAMILY_NUM_REMOVE_T,299912),1,6)>&avc_acct_month)

    THEN  E1.gsm_nbr END),

    COUNT(DISTINCT Case When    TO_CHAR(E1.GSM_INNET_DATE,'YYYYMM') = SUBSTR(E1.FAMILY_NUM_CREATE_T,1,6) AND

    SUBSTR(NVL(E1.FAMILY_NUM_REMOVE_T,'299912'),1,6) > &avc_acct_month AND

    SUBSTR(E1.FAMILY_NUM_CREATE_T,1,6) <= &avc_acct_month THEN

    E1.GSM_NBR END),

    COUNT(DISTINCT Case  WHEN TO_CHAR(E1.GSM_INNET_DATE,'YYYYMM') <> SUBSTR(E1.FAMILY_NUM_CREATE_T,1,6) AND

    SUBSTR(NVL(E1.FAMILY_NUM_REMOVE_T,'299912'),1,6) > &avc_acct_month AND

    SUBSTR(E1.FAMILY_NUM_CREATE_T,1,6) <= &avc_acct_month THEN

    E1.GSM_NBR  END),

    COUNT(DISTINCT Case  WHEN SUBSTR(NVL(E1.FAMILY_NUM_REMOVE_T,'299912'),1,6) = NVL(TO_CHAR(E1.GSM_REMOVE_DATE,'YYYYMM'),'299912') AND

    NVL(TO_CHAR(E1.GSM_REMOVE_DATE,'YYYYMM'),'299912') <= &avc_acct_month THEN

    E1.GSM_NBR END),

    COUNT(Distinct  CASE WHEN  SUBSTR(E1.FAMILY_NUM_CREATE_T,1,6)=&avc_acct_month

    THEN  E1.GSM_NBR END),

    COUNT(Distinct  CASE WHEN  SUBSTR(E1.FAMILY_NUM_REMOVE_T,1,6)=&avc_acct_month

    THEN  E1.GSM_NBR END),

    COUNT( Distinct CASE WHEN (E1.GSM_BRAND = '1' And substr(E1.FAMILY_NUM_CREATE_T,1,6)<=&avc_acct_month AND SUBSTR(nvl(E1.FAMILY_NUM_REMOVE_T,299912),1,6)>&avc_acct_month)

    THEN  E1.gsm_nbr END),

    COUNT( Distinct CASE WHEN (E1.GSM_BRAND = '1' And TO_CHAR(E1.GSM_INNET_DATE,'YYYYMM')=&avc_acct_month And substr(E1.FAMILY_NUM_CREATE_T,1,6)<=&avc_acct_month AND SUBSTR(nvl(E1.FAMILY_NUM_REMOVE_T,299912),1,6)>&avc_acct_month)

    THEN  E1.gsm_nbr END)

    FROM EDW_M_PROD_SYNC_RELA_OFFSET_M E1,(SELECT S.SERV_ID,s.subscription_id,COUNT(S.GSM_NBR) BUNDLE FROM EDW_M_PROD_SYNC_RELA_OFFSET_M S

    WHERE S.LATN_ID=2101

    AND S.ACCT_MONTH=&avc_acct_month

    AND SUBSTR(S.SERV_TYPE,1,4)='1110'

    AND S.PROD_TYPE='FAMILY_NUM'

    AND SUBSTR(S.GSM_NBR, 1, 3) IN

    ('130', '131', '132', '156', '155', '186')

    GROUP BY S.SERV_ID,s.subscription_id) B

    Where E1.SUBSCRIPTION_ID=B.SUBSCRIPTION_ID

    AND SUBSTR(E1.SERV_TYPE,1,4)='1110'

    AND E1.LATN_ID=2101

    AND E1.ACCT_MONTH=&avc_acct_month

    AND E1.PROD_TYPE='FAMILY_NUM'

    AND SUBSTR(E1.GSM_NBR, 1, 3) IN

    ('130', '131', '132', '156', '155', '186')

    AND SUBSTR(E1.SERV_TYPE,1,4)='1110'

    GROUP BY B.BUNDLE ;

    现象:单独执行的语句已经替换了变量,而存储过程中的变量是在过程中替换的,所以出现相同语句执行时间差异很大,单独执行语句只要几秒中,而存储过程中的语句却需要几小时。

    分析方法:把两个语句用explain分析(即F5),发现已经替换变量的语句随着显示出来的cost较大,代表执行效率低,但时间很快。而带变量的语句虽然cost很小,都用到了索引,代表执行效率高,但时间很慢。

    存储过程中的语句的执行计划:

    SELECT STATEMENT, GOAL = CHOOSE                        Cost=21        Cardinality=1        Bytes=74

    SORT GROUP BY                        Cost=21        Cardinality=1        Bytes=74

    VIEW        Object wner=SYS                Cost=13        Cardinality=1        Bytes=74

    SORT GROUP BY                        Cost=13        Cardinality=1        Bytes=199

    TABLE ACCESS BY GLOBAL INDEX ROWID        Object wner=CMSS        Object name=EDW_M_PROD_SYNC_RELA_OFFSET_M        Cost=2        Cardinality=1        Bytes=78

    NESTED LOOPS                        Cost=4        Cardinality=1        Bytes=199

    TABLE ACCESS BY GLOBAL INDEX ROWID        Object wner=CMSS        Object name=EDW_M_PROD_SYNC_RELA_OFFSET_M        Cost=2        Cardinality=1        Bytes=121

    INDEX RANGE SCAN        Object wner=CMSS        Object name=EDW_PROD_REAL_MON        Cost=1        Cardinality=2594

    INDEX RANGE SCAN        Object wner=CMSS        Object name=EDW_PROD_REAL_MON        Cost=1        Cardinality=2594

    已替换变量的语句的执行计划:

    SELECT STATEMENT, GOAL = CHOOSE                        Cost=784        Cardinality=1        Bytes=74

    SORT GROUP BY                        Cost=784        Cardinality=1        Bytes=74

    VIEW        Object wner=SYS                Cost=776        Cardinality=1        Bytes=74

    SORT GROUP BY                        Cost=776        Cardinality=1        Bytes=199

    HASH JOIN                        Cost=767        Cardinality=1        Bytes=199

    TABLE ACCESS FULL        Object wner=CMSS        Object name=EDW_M_PROD_SYNC_RELA_OFFSET_M        Cost=383        Cardinality=1        Bytes=121

    TABLE ACCESS FULL        Object wner=CMSS        Object name=EDW_M_PROD_SYNC_RELA_OFFSET_M        Cost=383        Cardinality=1        Bytes=78

    解决方法:使带变量的语句执行效率与替换变量单独执行的语句相同,再测试程序,发现执行时间很快

    因执行时间短的语句用到全表扫描,所以此语句也用全表扫描的优化方法,结果执行时间很快,提高了执行效率。

    在其它情况下,可根据执行效率高的语句执行计划来改变相应的hints

    SELECT /*+FULL(E1) FULL(B)*/2101,B.BUNDLE,0,0,0,0,0,0,0,0,0,0,

    COUNT( Distinct CASE WHEN (substr(FAMILY_NUM_CREATE_T,1,6)<=&avc_acct_month AND SUBSTR(nvl(FAMILY_NUM_REMOVE_T,299912),1,6)>&avc_acct_month)

    THEN  E1.gsm_nbr END),

    COUNT(DISTINCT Case When    TO_CHAR(E1.GSM_INNET_DATE,'YYYYMM') = SUBSTR(E1.FAMILY_NUM_CREATE_T,1,6) AND

    SUBSTR(NVL(E1.FAMILY_NUM_REMOVE_T,'299912'),1,6) > &avc_acct_month AND

    SUBSTR(E1.FAMILY_NUM_CREATE_T,1,6) <= &avc_acct_month THEN

    E1.GSM_NBR END),

    COUNT(DISTINCT Case  WHEN TO_CHAR(E1.GSM_INNET_DATE,'YYYYMM') <> SUBSTR(E1.FAMILY_NUM_CREATE_T,1,6) AND

    SUBSTR(NVL(E1.FAMILY_NUM_REMOVE_T,'299912'),1,6) > &avc_acct_month AND

    SUBSTR(E1.FAMILY_NUM_CREATE_T,1,6) <= &avc_acct_month THEN

    E1.GSM_NBR  END),

    COUNT(DISTINCT Case  WHEN SUBSTR(NVL(E1.FAMILY_NUM_REMOVE_T,'299912'),1,6) = NVL(TO_CHAR(E1.GSM_REMOVE_DATE,'YYYYMM'),'299912') AND

    NVL(TO_CHAR(E1.GSM_REMOVE_DATE,'YYYYMM'),'299912') <= &avc_acct_month THEN

    E1.GSM_NBR END),

    COUNT(Distinct  CASE WHEN  SUBSTR(E1.FAMILY_NUM_CREATE_T,1,6)=&avc_acct_month

    THEN  E1.GSM_NBR END),

    COUNT(Distinct  CASE WHEN  SUBSTR(E1.FAMILY_NUM_REMOVE_T,1,6)=&avc_acct_month

    THEN  E1.GSM_NBR END),

    COUNT( Distinct CASE WHEN (E1.GSM_BRAND = '1' And substr(E1.FAMILY_NUM_CREATE_T,1,6)<=&avc_acct_month AND SUBSTR(nvl(E1.FAMILY_NUM_REMOVE_T,299912),1,6)>&avc_acct_month)

    THEN  E1.gsm_nbr END)

    FROM EDW_M_PROD_SYNC_RELA_OFFSET_M E1,(SELECT S.SERV_ID,s.subscription_id,COUNT(S.GSM_NBR) BUNDLE FROM EDW_M_PROD_SYNC_RELA_OFFSET_M S

    WHERE S.LATN_ID=2101

    AND S.ACCT_MONTH=&avc_acct_month

    AND SUBSTR(S.SERV_TYPE,1,4)='1110'

    AND S.PROD_TYPE='FAMILY_NUM'

    AND SUBSTR(S.GSM_NBR, 1, 3) IN

    ('130', '131', '132', '156', '155', '186')

    GROUP BY S.SERV_ID,s.subscription_id) B

    Where E1.SUBSCRIPTION_ID=B.SUBSCRIPTION_ID

    AND SUBSTR(E1.SERV_TYPE,1,4)='1110'

    AND E1.LATN_ID=2101

    AND E1.ACCT_MONTH=&avc_acct_month

    AND E1.PROD_TYPE='FAMILY_NUM'

    AND SUBSTR(E1.GSM_NBR, 1, 3) IN

    ('130', '131', '132', '156', '155', '186')

    AND SUBSTR(E1.SERV_TYPE,1,4)='1110'

    GROUP BY B.BUNDLE

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

    展开全文
  • 存储过程主要是执行一条update sql语句,单独将语句拿出来,clp命令行执行很快,2-3s即可执行完成。执行的SP:call pdw.P_OCS_ACTIVE_UPDATE('20120304',?)存储过程主要业务SQL:/**********...

    其实这个问题是以前同一个客户遇见的问题,当时一个工程师解决后记录的过程如下:

    应用同事反映但是对应到执行存储过程,执行了2,3个小时了,还没出来结果。

    存储过程主要是执行一条update sql语句,单独将语句拿出来,clp命令行执行很快,2-3s即可执行完成。

    执行的SP:

    call pdw.P_OCS_ACTIVE_UPDATE('20120304',?)

    存储过程主要业务SQL:

    /***********************开始实现业务******************************/

    /*******/

    SET vn_Step=1;--

    call papp.p_debug(txdate,vn_PrcName,vn_Step,vv_sql); --

    UPDATE PODS.T_ODS_PAR_CUSTMSG a

    SET run_code='UU'

    WHERE sm_code in ('o3','os','om','ol','ox') AND NOT EXISTS

    (SELECT * FROM PODS.T_ODS_PAR_OCSACTIVEMSG b where a.ID_NO=b.ID_NO );

    COMMIT;--

    /************************结束业务逻辑******************************/

    根据了解,这个存储过程有些时候了,最近无改动,以前都正常。

    根据具体情况,第一反应是这个存储过程中语句的执行计划不正确了。静态sql的访问计划是在第一次编译后存储在数据库的包中的,之后运行都是使用包中的执行计划。解决办法很简单,对存储过程包重新绑定一下,使用最新的数据库统计信息生成最新的访问计划。

    先查出此存储过程对应的包:

    SELECT   bname,

    pkgname,

    BSCHEMA

    FROM     syscat.packagedep

    WHERE    btype='T'

    AND      pkgname in(select bname from sysibm.sysdependencies where dname in (select specificname from syscat.procedures where procname='P_OCS_ACTIVE_UPDATE'

    AND PROCSCHEMA='PDW'))

    [DWE3:/tmp]db2 "SELECT   bname,

    >          pkgname,

    >          BSCHEMA

    > FROM     syscat.packagedep

    > WHERE    btype='T'

    > AND      pkgname in(select bname from sysibm.sysdependencies where dname in (select specificname from syscat.procedures where procname='P_OCS_ACTIVE_UPDATE'

    >         AND PROCSCHEMA='PDW'))

    > "

    BNAME                         BSCHEMA

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

    T_ODS_PAR_CUSTMSG             P8414315                             PODS

    T_ODS_PAR_OCSACTIVEMSG        P8414315                             PODS

    2 record(s) selected.

    对包执行rebind,操作前需连库

    [DWE3:/tmp]time db2 rebind package pdw.P8414315

    DB20000I  The REBIND PACKAGE command completed successfully.

    real    0m0.63s

    user    0m0.02s

    sys     0m0.00s

    对存储过程包重新绑定后,存储过程几秒钟即执行完成,恢复正常。

    拿出sql单独执行计划:

    [DWE3:/newdb2home/db2inst3/fengsh]more 2.out

    DB2 Universal Database Version 9.1, 5622-044 (c) Copyright IBM Corp. 1991, 2006

    Licensed Material - Program Property of IBM

    IBM DB2 Universal Database SQL and XQUERY Explain Tool

    ******************** DYNAMIC ***************************************

    ==================== STATEMENT ==========================================

    Isolation Level          = Cursor Stability

    Blocking                 = Block Unambiguous Cursors

    Query Optimization Class = 5

    Partition Parallel       = Yes

    Intra-Partition Parallel = No

    SQL Path                 = "SYSIBM", "SYSFUN", "SYSPROC", "SYSIBMADM",

    "DB2INST3"

    Statement:

    UPDATE PODS.T_ODS_PAR_CUSTMSG a SET run_code='UU'

    WHERE sm_code in ('o3' , 'os' , 'om' , 'ol' , 'ox' )AND NOT EXISTS

    (SELECT *

    FROM PODS.T_ODS_PAR_OCSACTIVEMSG b

    where a.ID_NO=b.ID_NO )

    Section Code Page = 1386

    Estimated Cost = 1512832.000000

    Estimated Cardinality = 183703.968750

    Coordinator Subsection - Main Processing:

    Distribute Subsection #1

    |  Broadcast to Node List

    |  |  Nodes = 1, 2, 3, 4, 5, 6, 7

    Subsection #1:

    Access Table Name = PODS.T_ODS_PAR_OCSACTIVEMSG  ID = 11,3174

    |  #Columns = 1

    |  Skip Inserted Rows

    |  Skip Deleted Rows

    |  Relation Scan

    |  |  Prefetch: Eligible

    |  Lock Intents

    |  |  Table: Intent Share

    |  |  Row  : Next Key Share

    |  Sargable Predicate(s)

    |  |  Process Build Table for Hash Join

    Anti Left Outer Hash Join

    |  Early Out: Single Match Per Outer Row

    |  Estimated Build Size: 7584000

    |  Estimated Probe Size: 6960000

    |  Access Table Name = PODS.T_ODS_PAR_CUSTMSG  ID = 11,155

    |  |  #Columns = 3

    |  |  Skip Inserted Rows

    |  |  Skip Deleted Rows

    |  |  Evaluate Block/Data Predicates Before Locking Row

    |  |  Relation Scan

    |  |  |  Prefetch: Eligible

    Isolation Level: Read Stability

    |  |  Lock Intents

    |  |  |  Table: Intent Exclusive

    |  |  |  Row  : Update

    |  |  Sargable Predicate(s)

    |  |  |  #Predicates = 1

    |  |  |  Process Probe Table for Hash Join

    Establish Row Position

    |  Access Table Name = PODS.T_ODS_PAR_CUSTMSG  ID = 11,155

    Update:  Table Name = PODS.T_ODS_PAR_CUSTMSG  ID = 11,155

    End of section

    Optimizer Plan:

    UPDATE

    (   2)

    /---------/      \

    FETCH                 Table:

    (   3)                PODS

    /-------/      \               T_ODS_PAR_CUSTMSG

    HSJOIN            Table:

    (   4)            PODS

    /---/      \--\        T_ODS_PAR_CUSTMSG

    TBSCAN               TBSCAN

    (   5)               (   6)

    |                    |

    Table:             Table:

    PODS               PODS

    T_ODS_PAR_CUSTMSG  T_ODS_PAR_OCSACTIVEMSG

    rebind后存储过程中此update语句执行计划:

    db2expln -d newdssdb -g -c pdw -p P8414315 -s 0 -t>2.explain_rebind

    -------------------- SECTION ---------------------------------------

    Section = 8

    Statement:

    UPDATE PODS.T_ODS_PAR_CUSTMSG A

    SET RUN_CODE='UU'

    WHERE

    SM_CODE in ('o3' , 'os' , 'om' , 'ol' , 'ox' )AND NOT

    EXISTS

    (SELECT *

    FROM PODS.T_ODS_PAR_OCSACTIVEMSG B

    where A.ID_NO=B.ID_NO )

    Section Code Page = 1386

    Estimated Cost = 1512832.000000

    Estimated Cardinality = 183703.968750

    Coordinator Subsection - Main Processing:

    Distribute Subsection #1

    |  Broadcast to Node List

    |  |  Nodes = 1, 2, 3, 4, 5, 6, 7

    Subsection #1:

    Access Table Name = PODS.T_ODS_PAR_OCSACTIVEMSG  ID = 11,3174

    |  #Columns = 1

    |  Skip Inserted Rows

    |  Skip Deleted Rows

    |  Relation Scan

    |  |  Prefetch: Eligible

    |  Lock Intents

    |  |  Table: Intent Share

    |  |  Row  : Next Key Share

    |  Sargable Predicate(s)

    |  |  Process Build Table for Hash Join

    Anti Left Outer Hash Join

    |  Early Out: Single Match Per Outer Row

    |  Estimated Build Size: 7584000

    |  Estimated Probe Size: 6960000

    |  Access Table Name = PODS.T_ODS_PAR_CUSTMSG  ID = 11,155

    |  |  #Columns = 3

    |  |  Skip Inserted Rows

    |  |  Skip Deleted Rows

    |  |  Evaluate Block/Data Predicates Before Locking Row

    |  |  Relation Scan

    |  |  |  Prefetch: Eligible

    Isolation Level: Read Stability

    |  |  Lock Intents

    |  |  |  Table: Intent Exclusive

    |  |  |  Row  : Update

    |  |  Sargable Predicate(s)

    |  |  |  #Predicates = 1

    |  |  |  Process Probe Table for Hash Join

    Establish Row Position

    |  Access Table Name = PODS.T_ODS_PAR_CUSTMSG  ID = 11,155

    Update:  Table Name = PODS.T_ODS_PAR_CUSTMSG  ID = 11,155

    End of section

    Optimizer Plan:

    UPDATE

    (   2)

    /---------/      \

    FETCH                 Table:

    (   3)                PODS

    /-------/      \               T_ODS_PAR_CUSTMSG

    HSJOIN            Table:

    (   4)            PODS

    /---/      \--\        T_ODS_PAR_CUSTMSG

    TBSCAN               TBSCAN

    (   5)               (   6)

    |                    |

    Table:             Table:

    PODS               PODS

    T_ODS_PAR_CUSTMSG  T_ODS_PAR_OCSACTIVEMSG

    展开全文
  • 当前位置:我的异常网» Sql Server»SQL 存储过程施行很慢,但是复制出来单独执行很快!SQL 存储过程施行很慢,但是复制出来单独执行很快!为什么呢(2)www.myexceptions.net网友分享于:2013-12-17浏览:479次)...

    当前位置:我的异常网» Sql Server » SQL 存储过程施行很慢,但是复制出来单独执行很快!

    SQL 存储过程施行很慢,但是复制出来单独执行很快!为什么呢(2)

    www.myexceptions.net  网友分享于:2013-12-17  浏览:479次

    ) A where A.YYYYMM=YYMonthHL.YM and A.A0188=YYMonthHL.A0188 and A.YYYYMM=@YM

    and YYMonthHL.A0188 in (select A0188 from A01 where A01KQKS in (@KQKS))

    --计算本月工作

    update YYMonthHL set BYGZ=A.GZ

    from

    (select A0188,YYYYMM,SUM(GZ) as GZ from (

    select A0188,CONVERT(varchar(6), KQDate, 112) AS YYYYMM,round(cast(COUNT(KQ) as numeric(10,2))/2,2) as GZ

    from ZSYY_KQ_HZ

    where KQ in(select ID from YyZD where GZ=1 )

    group by (A0188),CONVERT(varchar(6), KQDate, 112)

    ) kk group by A0188,YYYYMM)A where A.YYYYMM=YYMonthHL.YM and A.A0188=YYMonthHL.A0188 and A.YYYYMM=@YM

    and YYMonthHL.A0188 in (select A0188 from A01 where A01KQKS in (@KQKS))

    --计算夜班次数

    update YYMonthHL set BYYB=A.JYB

    from

    (select A0188,CONVERT(varchar(6), KQDate, 112) AS YYYYMM, round(cast(COUNT(KQ) as numeric(10,2)),2) as JYB from ZSYY_KQ_HZ

    where KQ in(select ID from YyZD where JYB=1 ) and Type='NT'

    group by (A0188),CONVERT(varchar(6), KQDate, 112))A

    where A.YYYYMM=YYMonthHL.YM and A.A0188=YYMonthHL.A0188 and A.YYYYMM=@YM

    and YYMonthHL.A0188 in (select A0188 from A01 where A01KQKS in (@KQKS))

    --补假天数

    ----PS:先计算上班天数大于模板中的上班天数,例如周六日勾选出勤累计积假。

    update YYMonthHL set BYBJ=case when (isnull(BYGZ,0)-round(cast(A.HZ as numeric(10,2))/2,2))<0 then 0

    else isnull(BYGZ,0)-round(cast(A.HZ as numeric(10,2))/2,2) end

    from (select

    SUM( case when [am] in (64) then 1 else 0 end)+

    SUM( case when [pm] in (64) then 1 else 0 end)+

    SUM( case when [nt] in (64) then 1 else 0 end)+

    0 as HZ,@YM YM from YYMB

    where month=SUBSTRING(@YM,0,5)+'-'+SUBSTRING(@YM,5,7) and mode=1 group by month ) A

    where A.YM=YYMonthHL.YM and A.YM=@YM

    and YYMonthHL.A0188 in (select A0188 from A01 where A01KQKS in (@KQKS))

    ----PS:加上本月正补假天数

    update YYMonthHL set BYBJ=BYBJ+A.ZBXTS

    from (

    select KK.A0188,kk.YYYYMM,SUM(kk.ZBXTS) as ZBXTS  from (

    select A0188,CONVERT(varchar(6), KQDate, 112) AS YYYYMM,

    sum(BXTS) as ZBXTS from ZSYY_KQ_HZ,YyZD

    where BXTS>0 and ZSYY_KQ_HZ.KQ=YyZD.ID

    group by (A0188),CONVERT(varchar(6), KQDate, 112)

    UNION ALL

    select A0188,CONVERT(varchar(6), KQDate, 112) AS YYYYMM,

    count(A0188)*1 as ZBXTS  from ZSYY_KQ_HZ

    where Type='NT' and KQ='64' group by (A0188),CONVERT(varchar(6), KQDate, 112)

    ) KK group by A0188,YYYYMM) A

    where A.YYYYMM=YYMonthHL.YM and A.A0188=YYMonthHL.A0188 and A.YYYYMM=@YM

    and YYMonthHL.A0188 in (select A0188 from A01 where A01KQKS in (@KQKS))

    --本月积假天数

    ----本月补假天数

    update YYMonthHL set JJTS=BYBJ where YM=@YM

    文章评论

    展开全文
  • 为什么这么设计(Why’s THE Design)是一系列关于计算机领域...机械硬盘(Hard Disk Drive、HDD)和固态硬盘(Solid State Drive、SSD)是两种最常见的硬盘,作为计算机的外部存储,CPU 想要访问它们存储的数据需要长时...
  • 这些远程物联网设备普遍通过固件完成设置,这些固件有可能存储在主机MCU中,也有可能存储在外置非易失性存储器的用户空间中。而这些非易失性存储器中的内容则是恶意攻击的主要对象。对于所有全新开发的物联网设备来...
  • 文章来源:MySQL - 常用存储引擎区别总结(2020最新版)原文作者:陈哈哈来源平台:CSDN存储引擎是数据库的核心,在MySQL中,存储引擎是以插件的形式运行的。支持的引擎有十几种之多,但我们实战常用到的,大概只有...
  • 现象描述:关于oracle Dblink 查询的效率的问题,起初直接使用select * from tab@dblink 查询效率很快,由于想通过定时任务执行,因此写了存储过程 insert into tab select * from tab@dblink where inftime>b...
  • 查阅慢日志发现一个存储过程执行很慢,但里面的语句都很简单,相关表对应的主键和索引也都有,而且把语句拿出来单独执行很快。请教大家知道是什么问题不? 存储过程为: CREATE DEFINER = `wegameroot2016`@`%`...
  • 写了一个存储过程,用游标返回结果集的,在plsql里面单独执行调用很快,为什么java调用该存储过程很慢
  • SQL 存储过程执行很慢,但是复制出来单独执行很快!为什么呢? 存储过程中没有循环,没有游标,只是几次Update。
  • 3.把存储过程里的查询单独拿出来查询速度很快,但是放在存储过程函数中就很慢。2.原因:数据库表中的字段是utf-8,而数据库字符集后来改成了utf8mb4。存储过程中定义参数时,没有指定字符集,会默认读取创建存储过程...
  • 存储过程执行很慢单独拎出来执行很快1.一开始是直接写的存储过程,然后执行,卡了很久,大概10分钟左右才执行出来2.后面我尝试将插入的数据插入到临时表中,大概5秒就执行出来了3.但我发现,执行出来的结果跟我...
  • 3.把存储过程里的查询单独拿出来查询速度很快,但是放在存储过程函数中就很慢。 2.原因: 数据库表中的字段是utf-8,而数据库字符集后来改成了utf8mb4。 存储过程中定义参数时,没有指定字符集,会默认读取创建...
  • 曾经发现这样一种情况,存储过程中的语句提取出来单独执行很快,但在存储过程中执行就很慢。----************* 存储过程中的语句,变量为 avc_acct_monthSELECT 2101,B.BUNDLE,COUN...
  • 一个存储过程中调用a、b、c、d、e、f五个子存储。...执行单独执行这个五个子存储都很快,但是用总存储调用的时候,到c会执行很慢,将c和a位置互换,d的执行效率很低,请问有遇到这种情况的大神吗?
  • 在我们开始深入研究如何处理参数嗅探相关的性能问题之前,由于这个课题...有时会看到论坛上有人说,某个存储过程很慢,但是把相同的语句提取出来单独执行很快。真相就是:语句涉及了变量,可能是本地变量或者参数...
  • XXX系统中的XXX功能用户反应很慢,但是通过使用Profiler截取到的一系列的存储过程执行速度很快都在0.1秒级别附近,并无明显的性能瓶颈,无法重现性能问题。为了重现问题,使用LoadRunner中的ODBC协议对这个功能进行...
  • 5.4.5 存储过程 77 5.4.6 MySQL Help(帮助文档) 77 第6章 phpMyAdmin 78 6.1 phpMyAdmin的安装与配置 79 6.1.1 安装phpMyAdmin文件 79 6.1.2 配置phpMyAdmin 79 6.1.3 config身份验证模式 80 6.1.4 http和...
  • SSO-WebDemo

    2013-08-12 20:25:57
    正是因为有了无状态的特性,每个连接资源能够很快被其他客户端所重用,一台Web服务器才能够同时服务于成千上万的客户端。 但是我们通常的应用是有状态的。先不用提不同应用之间的SSO,在同一个应用中也需要保存用户...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    � 基于 QEMU 开发的模拟器调试手段不十分丰富,只支持通话、SMS等,速度。 � 暂不具备 Push Mail 和 Office(DataViz 、 QuickOffice 计划近期推出 ) 功能,目前主要面向的是普通消费 者 用户,对商业用户支持...

空空如也

空空如也

1 2
收藏数 21
精华内容 8
关键字:

存储过程很慢单独执行很快