[20171028]测试大量子光标对性能影响.txt

[20171028]测试大量子光标对性能影响.txt

--//做一个测试例子说明存在大量子光标对性能影响.

1.环境:
SCOTT@test01p> @ ver1

PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

CREATE TABLE t (n NUMBER);
INSERT INTO t VALUES (1);
COMMIT;
execute dbms_stats.gather_table_stats(user,'t')

2.建立测试脚本:
> cat tt1.sql
DECLARE
    l_count PLS_INTEGER;
BEGIN
    FOR i IN 1..100
    LOOP
    EXECUTE IMMEDIATE 'ALTER SESSION SET optimizer_index_caching = '||i;
    FOR j IN 1..1000
    LOOP
        EXECUTE IMMEDIATE 'ALTER SESSION SET optimizer_index_cost_adj = '||j;
        EXECUTE IMMEDIATE 'SELECT count(*) FROM t' into l_count;
    END LOOP;
    END LOOP;
END;
/

> cat tt2.sql
DECLARE
    l_count PLS_INTEGER;
BEGIN
    FOR i IN 1..100
    LOOP
    EXECUTE IMMEDIATE 'ALTER SESSION SET optimizer_index_caching = '||0;
    FOR j IN 1..1000
    LOOP
        EXECUTE IMMEDIATE 'ALTER SESSION SET optimizer_index_cost_adj = '||100;
        EXECUTE IMMEDIATE 'SELECT count(*) FROM t' into l_count;
    END LOOP;
    END LOOP;
END;
/
--//注:第2个例子使用常量.

3.测试一:
SCOTT@test01p> set timing on
SCOTT@test01p> @ spid

       SID    SERIAL# SPID                     PID  P_SERIAL# C50
---------- ---------- -------------------- ------- ---------- --------------------------------------------------
       251         37 4912                      22          5 alter system kill session '251,37' immediate;

SCOTT@test01p> @ d:\temp\tt1.sql
--//等待...

SCOTT@test01p> @ wait
P1RAW            P2RAW            P3RAW                    P1         P2         P3        SID    SERIAL#       SEQ# EVENT                STATE               WAIT_TIME_MICRO SECONDS_IN_WAIT
---------------- ---------------- ---------------- ---------- ---------- ---------- ---------- ---------- ---------- -------------------- ------------------- --------------- ---------------
000000000AC62B80 000000000000018E 00                180759424        398          0        251         37         69 latch: shared pool   WAITED SHORT TIME                21               0
--//等待时间是latch: shared pool

SCOTT@test01p> select count(*) from v$sql where sql_id='5tjqf7sx5dzmj';
  COUNT(*)
----------
      1225

SCOTT@test01p> select count(*) from v$sql where sql_id='5tjqf7sx5dzmj';
  COUNT(*)
----------
      1247

SCOTT@test01p> select count(*) from v$sql where sql_id='5tjqf7sx5dzmj';
  COUNT(*)
----------
      1671

SCOTT@test01p> select count(*) from v$sql where sql_id='5tjqf7sx5dzmj';
  COUNT(*)
----------
      1550
--//可以发现子光标数量在发生变化.

SCOTT@test01p> @ d:\temp\tt1.sql
PL/SQL procedure successfully completed.
Elapsed: 00:03:04.36
--//需要3分钟以上.

4.测试二:
SCOTT@test01p> alter system flush shared_pool;
System altered.
Elapsed: 00:00:00.08

SCOTT@test01p> @ d:\temp\tt2.sql
PL/SQL procedure successfully completed.
Elapsed: 00:00:09.96
--//很快9秒就执行完成了.

SCOTT@test01p> @ wait
no rows selected

SCOTT@test01p> select count(*) from v$sql where sql_id='5tjqf7sx5dzmj';
  COUNT(*)
----------
         1

--//另外11g以后增加一个参数_cursor_obsolete_threshold,限制产生子光标的数量.缺省1024.从前面的测试看瞬间还是存在超过1024的可能性.
--//注:前面的测试曾经达到16XX.

SYS@test01p> @ hide %cursor%threshold
NAME                                     DESCRIPTION                                                        DEFAULT_VALUE          SESSION_VALUE          SYSTEM_VALUE
---------------------------------------- ------------------------------------------------------------------ ---------------------- ---------------------- ----------------------
_cursor_obsolete_threshold               Number of cursors per parent before obsoletion.                    TRUE                   1024                   1024
_cursor_reload_failure_threshold         Number of failed reloads before marking cursor unusable            TRUE                   0                      0

5.继续测试三:
--//修改_cursor_obsolete_threshold =64看看.

SYS@test> alter system set "_cursor_obsolete_threshold"=64 scope=spfile;
System altered.

--//重新启动数据库看看.

SYS@test> @ hide %cursor%threshold
NAME                                     DESCRIPTION                                                        DEFAULT_VALUE          SESSION_VALUE          SYSTEM_VALUE
---------------------------------------- ------------------------------------------------------------------ ---------------------- ---------------------- -------------------
_cursor_obsolete_threshold               Number of cursors per parent before obsoletion.                    FALSE                  64                     64
_cursor_reload_failure_threshold         Number of failed reloads before marking cursor unusable            TRUE                   0                      0

SCOTT@test01p> set timing on
SCOTT@test01p> @spid

       SID    SERIAL# SPID                     PID  P_SERIAL# C50
---------- ---------- -------------------- ------- ---------- --------------------------------------------------
       369         65 976                       55          6 alter system kill session '369,65' immediate;

SYS@test01p> @ wait
P1RAW            P2RAW            P3RAW                    P1         P2         P3        SID    SERIAL#       SEQ# EVENT                STATE               WAIT_TIME_MICRO SECONDS_IN_WAIT
---------------- ---------------- ---------------- ---------- ---------- ---------- ---------- ---------- ---------- -------------------- ------------------- --------------- ---------------
000000000B0C2B80 000000000000018E 00                185346944        398          0        369         65        397 latch: shared pool   WAITED SHORT TIME                 5               0

SYS@test01p> select count(*) from v$sql where sql_id='5tjqf7sx5dzmj';
  COUNT(*)
----------
       268

SYS@test01p> select count(*) from v$sql where sql_id='5tjqf7sx5dzmj';
  COUNT(*)
----------
       532

SYS@test01p> select count(*) from v$sql where sql_id='5tjqf7sx5dzmj';
  COUNT(*)
----------
       564
--//密集的调用执行,还是超过限制许多...

SCOTT@test01p> @ d:\temp\tt1.sql
PL/SQL procedure successfully completed.
Elapsed: 00:02:01.87

--//需要2分钟以上.但是还是比前面3分钟快许多.

时间: 2024-09-28 07:13:54

[20171028]测试大量子光标对性能影响.txt的相关文章

[20171102]测试大量子光标对性能影响2.txt

[20171102]测试大量子光标对性能影响2.txt --//跟开发讲关于绑定变量的问题,总有人讲不是有一个参数cursor_sharing能快捷简单地解决问题,设置cursor_sharing=force, --//实际上合理的使用绑定变量才是王道. --//许多开发人员设置这个参数带来的各种bug,我第一次在8i下使用差点到处服务器cpu资源耗尽,好在我知道我当时的改动,修改回来一些正常. --//我当时还记得设置这个参数报ora-00600错误. --//我想起以前10g下遇到设置cur

[20151203]关于grd对性能影响.txt

[20151203]关于grd对性能影响.txt --前几天写了1篇,统计分析对grd的影响,提到一些大表在晚上分析后会出现资源重新分配,参考链接 --blog.itpub.net/267265/viewspace-1851145/ --我们的生产系统业务并不是很忙,今天做一点"危险"的测试,让另外1个实例掌控某些另外实例经常访问的对象. --先看看没有切换的awr报表(昨天的10-11点)rac部分: RAC Statistics  DB/Inst: xxxx/xxxx1  Snap

盘点 Oracle 11g 中新特性带来的10大性能影响

盘点 Oracle 11g 中新特性带来的10大性能影响 原创 2017-08-02 盖国强 数据和云 Oracle的任何一个新版本,总是会带来大量引人瞩目的新特性,但是往往在这些新特性引入之初,首先引起的是一些麻烦,因为对于新技术的不了解.因为对于旧环境的不适应,从Oracle产品到技术服务运维,总是要走过一个磨合的长期过程. 请注意:我们并不推荐大家盲目的关闭和摒弃Oracle的新特性,我们建议大家在遇到问题时,做出适合自己的调整. 就此盘点一下 Oracle 11g 中,那些新特性带来的新

双通道还是高主频 实测内存对A10-7890K性能影响

  众所周知,双通道.高主频内存对APU性能的发挥有着比较大的影响,尤其是在游戏体验中表现明显.今天我们就来测试一下AMD新款旗舰APU A10-7890K在不同内存频率和通道数量下的性能表现,看看内存对APU性能影响有多大. 关于 A10-7890K 处理器 A10-7890K是AMD今年推出的新款旗舰APU处理器,采用了四核设计,默认主频为4.1GHz,加速可达4.3GHz. 图形方面,A10-7890K内置Radeon R7 GPU,具备512个流处理器,核心频率866MHz,官方内存频率

SqlServer(索引)--创建复合索引时,复合索引列顺序对查询的性能影响[转]

http://www.cnblogs.com/wy123/p/5604400.html SQL Server创建复合索引时,复合索引列顺序对查询的性能影响 说说复合索引 写索引的博客太多了,一直不想动手写,有一下两个原因: 一是觉得有炒剩饭的嫌疑,有兄弟曾说:索引吗,只要在查询条件上建索引就行了,真的可以这么暴力吗? 二来觉得,索引是个非常大的话题,很难概括出所有的情况,你不整出点新意来,倒是有抄袭照搬的嫌疑 既然写了,就写一点稍微不一样的东西出来, 好了,废话打住, /* 20160814备注

MSSQL · 实现分析 · Extend Event实现审计日志对SQL Server性能影响

背景 在上一篇月报分享中,我们介绍了SQL Server实现审计日志功能的四种方法,最终的结论是使用Extend Event(中文叫扩展事件)实现审计日志方法是最优选择,详情参见MSSQL · 实现分析 · SQL Server实现审计日志的方案探索.那么,使用Extend Event实现审计日志的方案会面对如下疑问: Extend Event是否满足可靠性要求 Extend Event是否满足吞吐量要求 Extend Event对SQL Server本身语句查询性能影响到底有多大 这篇文章就是

SQL Server创建复合索引时,复合索引列顺序对查询的性能影响

原文:SQL Server创建复合索引时,复合索引列顺序对查询的性能影响    说说复合索引 写索引的博客太多了,一直不想动手写,有一下两个原因: 一是觉得有炒剩饭的嫌疑,有兄弟曾说:索引吗,只要在查询条件上建索引就行了,真的可以这么暴力吗? 二来觉得,索引是个非常大的话题,很难概括出所有的情况,你不整出点新意来,倒是有抄袭照搬的嫌疑 既然写了,就写一点稍微不一样的东西出来, 好了,废话打住,开搞   搭建测试环境: 创建一张表,模拟实际业务中的一个表,往里面填入数据, 时间字段上,相对按照时间

测试应用定价对收入的影响:应用收入和定价无关?

文章描述:应用收入跟定价无关? 编者按:本文作者Oliver Reichenstein是一位应用开发者,最近他在对一款由他所开发的应用进行调价测试,并对这一价格测试结果进了描述,以下是它在Google+上发表的内容. 最近我们在测试应用定价对收入的影响,而一次又一次的测试表明无论应用被定以何种价格,我们最后的收入是一样的. 下面我附上了两张图来说明这一结论,最近我降低了iA Write iPad版应用的价格,从5美元降低到了1美元.起初它的销量猛增,但最后收入又回到了先前的水品.价格降低到原来5

DX12对CPU要求高吗 CPU对DX12游戏性能影响

  Win10内置的DX12有利于提升游戏体验,不过高版本的DX也对CPU与显卡提出了更高的要求.微软的DirectX一路走来,已经经历了12个版本,无论是硬件还是游戏,也都发生了天翻地覆的变化,先进的技术也给我们带来了更好的游戏体验. DX12对CPU要求高吗?老司机实测CPU对DX12游戏性能影响 早在2014年,微软在GDC上正式发布了新一代的API DirectX12(简称DX12),DX12最重要的变化就是更底层API,具体包括:应用可追踪GPU流水线.控制资源状态转换.控制资源重命名