首页 > 其他分享 >关于 SPL 性能问题一例

关于 SPL 性能问题一例

时间:2024-04-26 13:55:44浏览次数:22  
标签:10 USED 300 一例 性能 -------------------- num SPL NULL

sql

SELECT   COUNT(1)
  FROM (select distinct a.project_number "project_number",
                 a.project_name "project_name",
                 b.contract_number "contract_number",
                 b.contract_name "contract_name",
                 a.account_number "account_number",
                 a.account_name "account_name",
                 b.class_grade "class_grade", (select (v1.cost + v1.interest_adj + v1.mkt_value_chg + v1.cost_impairment_provision)
                    from (select v.*,
                                  row_number() over(order by v.event_date desc) num
                             from xxt_sl_entry_balances_v v
                            where v.account_id = a.account_id) v1
                   where v1.num = 1) "asset_value_balance" ,
        to_char(h.gl_date,'YYYY-MM') "gl_date",
                 b.init_date "init_date"
            from amc_project_devalue_info_b a
       left join amc_inter_asset_devalue_b b
              on a.souce_id = b.devalue_id
       left join amc_bill_asset_head_b h
                  on a.bill_id = h.bill_id) TMP_COUNT;

执行计划

1   #NSET2: [20, 1, 300] 
2     #PIPE2: [20, 1, 300] 
3       #PRJT2: [10, 1, 300]; exp_num(1), is_atom(FALSE) 
4         #AAGR2: [10, 1, 300]; grp_num(0), sfun_num(1), distinct_flag[0]; slave_empty(0)
5           #PRJT2: [10, 1189, 300]; exp_num(0), is_atom(FALSE) 
6             #DISTINCT: [10, 1189, 300]
7               #PRJT2: [9, 1189, 300]; exp_num(10), is_atom(FALSE) 
8                 #INDEX JOIN LEFT JOIN2: [9, 1189, 300]  ret_null(0)
9                   #HASH LEFT JOIN2: [1, 1189, 300]; key_num(1), partition_keys_num(0), ret_null(0), mix(0) KEY(exp_cast(A.SOUCE_ID)=B.DEVALUE_ID)
10                    #CSCN2: [1, 1189, 300]; INDEX33557668(AMC_PROJECT_DEVALUE_INFO_B as A); btr_scan(1)
11                    #CSCN2: [1, 2264, 222]; INDEX33557467(AMC_INTER_ASSET_DEVALUE_B as B); btr_scan(1)
12                  #BLKUP2: [7, 1, 30]; INDEX33557203(H)
13                    #SSEK2: [7, 1, 30]; scan_type(ASC), INDEX33557203(AMC_BILL_ASSET_HEAD_B as H), scan_range[A.BILL_ID,A.BILL_ID]
14      #SPL2: [10, 1, 3170]; key_num(1), spool_num(0), is_atom(TRUE), has_var(1), sites(-)
15        #PRJT2: [10, 1, 3170]; exp_num(1), is_atom(TRUE) 
16          #SLCT2: [10, 1, 3170]; V1.NUM = var2
17            #PRJT2: [10, 25, 3170]; exp_num(5), is_atom(FALSE) 
18              #AFUN: [10, 25, 3170]; afun_num(1); partition_num(0); order_num(1)[V.EVENT_DATE]
19                #SORT3: [10, 25, 3170]; key_num(1), is_distinct(FALSE), top_flag(0), is_adaptive(0)
20                  #PRJT2: [10, 1000, 3170]; exp_num(5), is_atom(FALSE) 
21                    #REMOTE SCAN: [10, 1000, 3170]; TMPREMOTETAB889693717@TOEBS, condition(TMPREMOTETAB889693717.ACCOUNT_ID = exp_param(no:0))

AUTOTRACE 和 ET

行号     COUNT(1)
---------- --------------------
1          1044


1   #NSET2: [12, 1->1, 300]
2     #PIPE2: [12, 1->1, 300]
3       #PRJT2: [2, 1->1, 300]; exp_num(1), is_atom(FALSE)
4         #AAGR2: [2, 1->1, 300]; grp_num(0), sfun_num(1), distinct_flag[0]; slave_empty(0)
5           #PRJT2: [2, 1189->1044, 300]; exp_num(0), is_atom(FALSE)
6             #DISTINCT: [2, 1189->1044, 300], MEM_USED(8872KB), DISK_USED(0KB)
7               #PRJT2: [1, 1189->1189, 300]; exp_num(9), is_atom(FALSE)
8                 #HASH LEFT JOIN2: [1, 1189->1189, 300]; key_num(1); col_num(9); partition_keys_num(0); mix(0); MEM_USED(12735KB), DISK_USED(0KB) KEY(exp_cast(A.SOUCE_ID)=B.DEVALUE_ID)
9                   #CSCN2: [1, 1189->1189, 300]; INDEX33557668(AMC_PROJECT_DEVALUE_INFO_B); btr_scan(1)
10                  #CSCN2: [1, 2264->2264, 222]; INDEX33557467(AMC_INTER_ASSET_DEVALUE_B); btr_scan(1)
11      #SPL2: [10, 1, 3170]; key_num(1), spool_num(0), has_variable(1), sites(-)
12        #PRJT2: [10, 1->1189, 3170]; exp_num(1), is_atom(TRUE)
13          #SLCT2: [10, 1->1189, 3170]; V1.NUM = var2
14            #PRJT2: [10, 25->54866, 3170]; exp_num(5), is_atom(FALSE)
15              #AFUN: [10, 25->54866, 3170]; afun_num(1)
16                #SORT3: [10, 25->54866, 3170]; key_num(1), is_distinct(FALSE), is_adaptive(0), MEM_USED(30720KB), DISK_USED(0KB)
17                  #PRJT2: [10, 1000->54866, 3170]; exp_num(5), is_atom(FALSE)
18                    #REMOTE SCAN: [10, 1000->54866, 3170] TMPREMOTETAB889665089@TOEBS

Statistics
-----------------------------------------------------------------
        0           data pages changed
        0           undo pages changed
        144         logical reads
        0           physical reads
        0           redo size
        138         bytes sent to client
        3442        bytes received from client
        1           roundtrips to/from client
        1189        sorts (memory)
        0           sorts (disk)
        1           rows processed
        0           io wait time(ms)
        167010      exec time(ms)


已用时间: 00:02:47.010. 执行号:21056406.
SQL> 2   3   4   et(21056406);

行号     OP    TIME(US)             PERCENT RANK                 SEQ         N_ENTER     MEM_USED(KB)         DISK_USED(KB)
---------- ----- -------------------- ------- -------------------- ----------- ----------- -------------------- --------------------
           HASH_USED_CELLS      HASH_CONFLICT        DHASH3_USED_CELLS DHASH3_CONFLICT HASH_SAME_VALUE
           -------------------- -------------------- ----------------- --------------- --------------------
1          PIPE2 1                    0%      12                   2           5           0                    0
           0                    0                    NULL              NULL            0

2          DLCK  3                    0%      9                    0           2           0                    0
           0                    0                    NULL              NULL            0

3          SPL2  3                    0%      9                    11          1           0                    0
           0                    0                    NULL              NULL            0


行号     OP    TIME(US)             PERCENT RANK                 SEQ         N_ENTER     MEM_USED(KB)         DISK_USED(KB)
---------- ----- -------------------- ------- -------------------- ----------- ----------- -------------------- --------------------
           HASH_USED_CELLS      HASH_CONFLICT        DHASH3_USED_CELLS DHASH3_CONFLICT HASH_SAME_VALUE
           -------------------- -------------------- ----------------- --------------- --------------------
4          PRJT2 3                    0%      9                    5           10          0                    0
           0                    0                    NULL              NULL            0

5          PRJT2 4                    0%      8                    3           4           0                    0
           0                    0                    NULL              NULL            0

6          AAGR2 25                   0%      7                    4           7           0                    0
           0                    0                    NULL              NULL            0


行号     OP    TIME(US)             PERCENT RANK                 SEQ         N_ENTER     MEM_USED(KB)         DISK_USED(KB)
---------- ----- -------------------- ------- -------------------- ----------- ----------- -------------------- --------------------
           HASH_USED_CELLS      HASH_CONFLICT        DHASH3_USED_CELLS DHASH3_CONFLICT HASH_SAME_VALUE
           -------------------- -------------------- ----------------- --------------- --------------------
7          NSET2 45                   0%      6                    1           3           0                    0
           0                    0                    NULL              NULL            0

8          CSCN2 580                  0%      5                    9           5           0                    0
           0                    0                    NULL              NULL            0

9          CSCN2 1232                 0%      4                    10          9           0                    0
           0                    0                    NULL              NULL            0


行号     OP    TIME(US)             PERCENT RANK                 SEQ         N_ENTER     MEM_USED(KB)         DISK_USED(KB)
---------- ----- -------------------- ------- -------------------- ----------- ----------- -------------------- --------------------
           HASH_USED_CELLS      HASH_CONFLICT        DHASH3_USED_CELLS DHASH3_CONFLICT HASH_SAME_VALUE
           -------------------- -------------------- ----------------- --------------- --------------------
10         DIST  1538                 0%      3                    6           15          8872                 0
           1042                 2                    NULL              NULL            0

11         HLO2  1600                 0%      2                    8           24          12735                0
           1133                 0                    NULL              NULL            57


行号     OP    TIME(US)             PERCENT RANK                 SEQ         N_ENTER     MEM_USED(KB)         DISK_USED(KB)
---------- ----- -------------------- ------- -------------------- ----------- ----------- -------------------- --------------------
           HASH_USED_CELLS      HASH_CONFLICT        DHASH3_USED_CELLS DHASH3_CONFLICT HASH_SAME_VALUE
           -------------------- -------------------- ----------------- --------------- --------------------
12         PRJT2 166996896            100%    1                    7           20          0                    0
           0                    0                    NULL              NULL            0


12 rows got

分析

分析得知耗时100%在相关子查询上。

spl次数是1189次。

同样步骤分析oracle trace。

REMOTE SCAN 扫描次数574次。DM 比 ORACLE 多一倍。

通过分析,猜测 oracle 可能做了缓存或者去重,所以时间上oracle快一倍。

标签:10,USED,300,一例,性能,--------------------,num,SPL,NULL
From: https://www.cnblogs.com/lixiaomeng/p/18159914

相关文章

  • nginx高性能负载均衡集群
    高性能负载均衡集群一、集群是什么简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一......
  • 使用 ForAttributeWithMetadataName 提高 IIncrementalGenerator 增量 Source Generat
    本文将告诉大家如何使用ForAttributeWithMetadataName方法用来提高IIncrementalGenerator增量SourceGenerator源代码生成的开发效率以及提高源代码生成器的运行效率这是一个在2022的6月15才合入的新功能。原因是Roslyn团队发现了大量的源代码生成器和分析器项目都......
  • Pycharm图形化性能测试工具Profile
     在部署模型的时候遇到一个需要加速的问题,为了搞清楚模型调用过程中最耗时的操作以定位优化,同事告诉了我一个调优的工具,叫profile。搜集整理如下: 1.PyCharm图形化性能测试工具ProfilePyCharm提供了图像化的性能分析工具,使用方法见利用PyCharm的Profile工具进行Python性......
  • 深入解析JavaScript的块级作用域和for循环的性能考量
    "当然,以下是一篇关于JavaScript中块级作用域和循环的深入分析的博客文章草稿:深入解析JavaScript的块级作用域和for循环的性能考量块级作用域的基本理解在JavaScript中,块级作用域是由大括号{}定义的作用域,限定了变量的可见性和生命周期。通常情况下,如if、try...catch以及with等......
  • CBM:Cooperative Branch Migration: A Mechanism for Flexible Control of DNA Strand
    作者引入了一种名为“协同分支迁移”(cooperativebranchmigration,CBM)的调控工具,通过调节分支迁移域的互补性来控制DNA链置换。引入的未配对域,后记为UD,作为分离互补区域的间隔物,不仅控制结合亲和力,而且控制链位移动力学。由于未配对域的存在,仅有I时,它很难将P从PS中取代。为了......
  • 性能监控之cpu、内存
    1、top命令top命令经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。包括进程ID、内存占用率、CPU占用率等第一行:top-06:18:40up3:15,1user,loadaverage:0.06,0.02,0.00含义分别是:系统时间、运行时间、登录终端数、系统......
  • Unity性能优化——字符串和文本
    字符串和文本字符串和文本的处理不当是Unity项目中性能问题的常见原因。在C#中,所有字符串均不可变。对字符串的任何操作均会导致分配一个完整的新字符串。这种操作的代价相对比较高,而且在大型字符串上、大型数据集上或紧凑循环中执行时,接连不断的重复的字符串可能发展成性能......
  • springboot+mybatisplus+dynicDatasource 从数据库表中查询数据源 动态添加
    1、pom依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version><relativePath/><!--lookuppa......
  • mysql系列04---索引及性能分析
    1、索引的结构 mysql索引的数据结构,对经典的B+Tree进行了优化,在原B+Tree上增加了一个指向相邻叶子结点的链表指针,就形成了一个带有顺序指针的B+Tree,提高了区间访问的性能。 选择B+Tree的优点:a、相对于二叉树,层级更少,搜索效率更高b、相对于B-Tree,B+Tree只在叶子节点上存储......
  • 性能问题分析优化实践案例
    星球同学问了这样一个性能分析的问题:他们有一个地图服务,数据都存储在同一个sqlserver实例中,访问量过高导致服务挂了,开发的解决方案是将地图服务的内存从4G升级到8G,问题就解决了。她的问题是开发的这种解决办法是否是最优解,有没有更好的解决方案。由于我对他们的系统架构......