热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

Oracle12CRAC的optimizer_adaptive_features数据插入超时

使用10046事件追踪方式,直接生成上传时的数据库事件日志进行分析,发现主要区别在于以下两条sql语句在每次长时间上传时都有出现,并且执行用户不是上传用户,而是数据库SYS用户。

问题分析

使用10046事件追踪方式,直接生成上传时的数据库事件日志进行分析,发现主要区别在于以下两条sql语句在每次长时间上传时都有出现,并且执行用户不是上传用户,而是数据库SYS用户。


********************************************************************************

SQL ID: frjd8zfy2jfdq Plan Hash: 510421217

SELECT executions, end_of_fetch_count,              elapsed_time/px_servers
  elapsed_time,        cpu_time/px_servers     cpu_time,
  buffer_gets/executions  buffer_gets
FROM
 (SELECT sum(executions)   as executions,                            sum(case
  when px_servers_executions > 0                              then
  px_servers_executions                                  else executions end)
  as px_servers,                sum(end_of_fetch_count) as end_of_fetch_count,
                sum(elapsed_time) as elapsed_time,
  sum(cpu_time)     as cpu_time,                     sum(buffer_gets)  as
  buffer_gets            FROM   gv$sql
  WHERE executions > 0                                 AND sql_id = :1
                              AND parsing_schema_name = :2)


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse       64      0.00       0.00          0          0          0           0
Execute     64      0.24       0.91          0          0          0           0
Fetch       64      0.14       0.42          0          0          0          64
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse       64      0.00       0.00          0          0          0           0
Execute     64      0.24       0.91          0          0          0           0
Fetch       64      0.14       0.42          0          0          0          64
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total      192      0.39       1.34          0          0          0          64

Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: SYS   (recursive depth: 1)
Number of plan statistics captured: 64

Rows (st) Rows (avg) Rows (max)  Row Source Operation
---------- ---------- ----------  ---------------------------------------------------
         1          1          1  VIEW  (cr=0 pr=0 pw=0 time=20602 us)
         1          1          1   SORT AGGREGATE (cr=0 pr=0 pw=0 time=20596 us)
         0          0          0    PX COORDINATOR  (cr=0 pr=0 pw=0 time=20573 us)
         0          0          0     PX SEND QC (RANDOM) :TQ10000 (cr=0 pr=0 pw=0 time=0 us)
         0          0          0      VIEW  GV$SQL (cr=0 pr=0 pw=0 time=0 us)
         0          0          0       FIXED TABLE FIXED INDEX X$KGLCURSOR_CHILD (ind:2) (cr=0 pr=0 pw=0 time=0 us)


Elapsed times include waiting on following events: Event waited on                             Times   Max. Wait  Total Waited ----------------------------------------   Waited  ----------  ------------ PX Deq: reap credit                          1448        0.00          0.02
  PX Deq: Join ACK                              193        0.00          0.25
  IPC send completion sync                      128        0.00          0.08
  PX Deq: Parse Reply                           128        0.06          0.24
  PX Deq: Execute Reply                         128        0.00          0.06
  reliable message                               64        0.00          0.06
  PX Deq: Signal ACK EXT                        128        0.00          0.01
  PX Deq: Slave Session Stats                   128        0.00          0.01
  enq: PS - contention                           66        0.00          0.09
  KJC: Wait for msg sends to complete             5        0.00          0.00
  latch: shared pool                              1        0.00          0.00
********************************************************************************

SQL ID: b4wp0a8dvkf0 Plan Hash: 4033942373

SELECT executions, end_of_fetch_count,              elapsed_time/px_servers
  elapsed_time,        cpu_time/px_servers     cpu_time,
  buffer_gets/executions  buffer_gets
FROM
 (SELECT sum(executions_delta) as EXECUTIONS,
  sum(case when px_servers_execs_delta > 0
  then px_servers_execs_delta                                       else
  executions_delta end) as px_servers,
  sum(end_of_fetch_count_delta) as end_of_fetch_count,
  sum(elapsed_time_delta) as ELAPSED_TIME,              sum(cpu_time_delta)
  as CPU_TIME,                      sum(buffer_gets_delta) as BUFFER_GETS
       FROM   DBA_HIST_SQLSTAT s,
  V$DATABASE d,                                         DBA_HIST_SNAPSHOT sn
                           WHERE  s.dbid = d.dbid
       AND  bitand(nvl(s.flag, 0), 1) = 0                    AND
  sn.end_interval_time >                                   (select
  systimestamp at TIME ZONE dbtimezone                  from dual) - 7
                         AND  s.sql_id = :1
   AND  s.snap_id = sn.snap_id                           AND
  s.instance_number = sn.instance_number           AND  s.dbid = sn.dbid
                             AND  parsing_schema_name = :2)


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse       64      0.00       0.00          0          0          0           0
Execute     64      0.08       0.08          0          0          0           0
Fetch       64      0.13       0.27          0       1170          0          64
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total      192      0.21       0.36          0       1170          0          64

Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: CHOOSE
Parsing user id: SYS   (recursive depth: 1)
Number of plan statistics captured: 3

Rows (st) Rows (avg) Rows (max)  Row Source Operation
---------- ---------- ----------  ---------------------------------------------------
         1          1          1  VIEW  (cr=18 pr=0 pw=0 time=6289 us cost=17 size=78 card=1)
         1          1          1   SORT AGGREGATE (cr=18 pr=0 pw=0 time=6282 us)
         0          0          0    NESTED LOOPS  (cr=18 pr=0 pw=0 time=6263 us cost=15 size=124 card=1)
         0          0          0     NESTED LOOPS  (cr=18 pr=0 pw=0 time=6258 us cost=15 size=124 card=1)
         0          0          0      HASH JOIN  (cr=18 pr=0 pw=0 time=6256 us cost=14 size=97 card=1)
         0          0          0       NESTED LOOPS  (cr=18 pr=0 pw=0 time=6244 us cost=14 size=97 card=1)
         0          0          0        STATISTICS COLLECTOR  (cr=18 pr=0 pw=0 time=6241 us)
         0          0          0         NESTED LOOPS  (cr=18 pr=0 pw=0 time=6223 us cost=13 size=81 card=1)
         1          1          1          MERGE JOIN CARTESIAN (cr=0 pr=0 pw=0 time=5648 us cost=0 size=10 card=1)
         1          1          1           FIXED TABLE FULL X$KCCDI (cr=0 pr=0 pw=0 time=3449 us cost=0 size=10 card=1)
         1          1          1           BUFFER SORT (cr=0 pr=0 pw=0 time=2187 us cost=0 size=0 card=1)
         1          1          1            FIXED TABLE FULL X$KCCDI2 (cr=0 pr=0 pw=0 time=2136 us cost=0 size=0 card=1)
         0          0          0          PARTITION RANGE ITERATOR PARTITION: KEY KEY (cr=18 pr=0 pw=0 time=568 us cost=13 size=71 card=1)
         0          0          0           TABLE ACCESS BY LOCAL INDEX ROWID BATCHED WRH$_SQLSTAT PARTITION: KEY KEY (cr=18 pr=0 pw=0 time=511 us cost=13 size=71 card=1)
         0          0          0            INDEX RANGE SCAN WRH$_SQLSTAT_INDEX PARTITION: KEY KEY (cr=18 pr=0 pw=0 time=477 us cost=11 size=0 card=2)(object id 8299)
         0          0          0        TABLE ACCESS BY INDEX ROWID WRM$_SNAPSHOT (cr=0 pr=0 pw=0 time=0 us cost=1 size=16 card=1)
         0          0          0         INDEX UNIQUE SCAN WRM$_SNAPSHOT_PK (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 8695)
         0          0          0       TABLE ACCESS FULL WRM$_SNAPSHOT (cr=0 pr=0 pw=0 time=0 us cost=1 size=16 card=1)
         0          0          0      INDEX UNIQUE SCAN WRM$_SNAPSHOT_PK (cr=0 pr=0 pw=0 time=0 us cost=0 size=0 card=1)(object id 8695)
         0          0          0     TABLE ACCESS BY INDEX ROWID WRM$_SNAPSHOT (cr=0 pr=0 pw=0 time=0 us cost=1 size=27 card=1)
         0          0          0      FAST DUAL  (cr=0 pr=0 pw=0 time=0 us cost=2 size=0 card=1)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  Disk file operations I/O                        3        0.00          0.00
  control file sequential read                  448        0.00          0.18
********************************************************************************

经过资料分析,这两条语句是由于开通了Oracle 12C的新功能而产生的,此功能为“optimizer_adaptive_features”。其主要功能是为了在语句执行过程中实时收集表的统计信息,方便Oracle选择更准确的执行计划。

但是,这个功能在RAC非常损耗性能,因为它需要查找全局视图gv$sql的数据,在多个实例的情况下会进行并发执行,参考这篇资料。

因为“optimizer_adaptive_features”参数宣称在OLAP数据仓库环境中可以获得较好的效果,实际在重上传轻查询的OLTP系统上,可以关闭这项新功能。

实验测试

因为该参数支持会话级别和系统级别调整,因为可以在单独一个会话内测试下插入时间和查询时间。

  • 插入测试

采用同时提交多条TARGETTABLE数据。
打开“optimizer_adaptive_features”时为2.2秒,关闭该功能时为0.375。

  • 查询测试

采用系统中执行最多的语句进行测试。

打开“optimizer_adaptive_features”时为0.05秒,关闭该功能时为0.02秒。

  • 关闭方式

因为“optimizer_adaptive_features”为动态参数,在系统级别修改时不需要重启。已在测试环境试验可用。

执行语句为

 alter system set optimizer_adaptive_features=false scope=both;


推荐阅读
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • This pull request introduces the ability to provide comprehensive paragraph configurations directly within the Create Note and Create Paragraph REST endpoints, reducing the need for additional configuration calls. ... [详细]
  • 本文介绍如何从包含多个记录的会员表中,筛选出同时拥有BookID为10和14的会员。通过SQL查询语句,可以有效地获取符合条件的MemberID。 ... [详细]
  • 在进行QT交叉编译时,可能会遇到与目标架构不匹配的宏定义问题。例如,当为ARM或MIPS架构编译时,需要确保使用正确的宏(如QT_ARCH_ARM或QT_ARCH_MIPS),而不是默认的QT_ARCH_I386。本文将详细介绍如何正确配置编译环境以避免此类错误。 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • 本文介绍 SQL Server 的基本概念和操作,涵盖系统数据库、常用数据类型、表的创建及增删改查等基础操作。通过实例帮助读者快速上手 SQL Server 数据库管理。 ... [详细]
  • 本文详细探讨了 org.apache.hadoop.ha.HAServiceTarget 类中的 checkFencingConfigured 方法,包括其功能、应用场景及代码示例。通过实际代码片段,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 福克斯新闻数据库配置失误导致1300万条敏感记录泄露
    由于数据库配置错误,福克斯新闻暴露了一个58GB的未受保护数据库,其中包含约1300万条网络内容管理记录。任何互联网用户都可以访问这些数据,引发了严重的安全风险。 ... [详细]
  • JavaScript 中创建对象的多种方法
    本文详细介绍了 JavaScript 中创建对象的几种常见方式,包括对象字面量、构造函数和 Object.create 方法,并提供了示例代码和属性描述符的解释。 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文介绍如何使用SAS根据输入数据集自动生成并执行SQL查询,其中CASE语句依据另一个数据集中的观测值动态调整。 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • Oracle中NULL、空字符串和空格的处理与区别
    本文探讨了在Oracle数据库中使用NULL、空字符串('')和空格('_')时可能遇到的问题及解决方案。重点解释了它们之间的区别,以及在查询和函数中的行为。 ... [详细]
  • Oracle 数据导出为 SQL 脚本的详细步骤
    本文介绍如何使用 PL/SQL Developer 工具将 Oracle 数据库中的数据导出为 SQL 脚本,包括详细的步骤和注意事项。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
author-avatar
秦schueler
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有