<<Oracle数据库性能优化艺术(第五期)>> 第15周 基于Oracle RAC架构的性能优化

来源:互联网 发布:郑州七中分校知乎 编辑:程序博客网 时间:2024/04/19 05:25

1.演示通过设置不同的服务,达到RAC业务分割的效果。

[oracle@rac3 ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    rac3        
ora....C3.lsnr application    ONLINE    ONLINE    rac3        
ora.rac3.gsd   application    ONLINE    ONLINE    rac3        
ora.rac3.ons   application    ONLINE    ONLINE    rac3        
ora.rac3.vip   application    ONLINE    ONLINE    rac3        
ora....SM2.asm application    ONLINE    ONLINE    rac4        
ora....C4.lsnr application    ONLINE    ONLINE    rac4        
ora.rac4.gsd   application    ONLINE    ONLINE    rac4        
ora.rac4.ons   application    ONLINE    ONLINE    rac4        
ora.rac4.vip   application    ONLINE    ONLINE    rac4        
ora.racdb.db   application    ONLINE    ONLINE    rac4        
ora....b1.inst application    ONLINE    ONLINE    rac3        
ora....b2.inst application    ONLINE    ONLINE    rac4        
[oracle@rac3 ~]$ srvctl add service -d racdb -s rac_fin -r "racdb1"
[oracle@rac3 ~]$ srvctl add service -d racdb -s rac_mfg -r "racdb2"

[oracle@rac3 ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    rac3        
ora....C3.lsnr application    ONLINE    ONLINE    rac3        
ora.rac3.gsd   application    ONLINE    ONLINE    rac3        
ora.rac3.ons   application    ONLINE    ONLINE    rac3        
ora.rac3.vip   application    ONLINE    ONLINE    rac3        
ora....SM2.asm application    ONLINE    ONLINE    rac4        
ora....C4.lsnr application    ONLINE    ONLINE    rac4        
ora.rac4.gsd   application    ONLINE    ONLINE    rac4        
ora.rac4.ons   application    ONLINE    ONLINE    rac4        
ora.rac4.vip   application    ONLINE    ONLINE    rac4        
ora.racdb.db   application    ONLINE    ONLINE    rac4        
ora...._fin.cs application    OFFLINE   OFFLINE               
ora....db1.srv application    OFFLINE   OFFLINE               
ora...._mfg.cs application    OFFLINE   OFFLINE               
ora....db2.srv application    OFFLINE   OFFLINE   
            
ora....b1.inst application    ONLINE    ONLINE    rac3        
ora....b2.inst application    ONLINE    ONLINE    rac4        
[oracle@rac3 ~]$ crs_stat -v | egrep 'fin|mfg'
NAME=ora.racdb.rac_fin.cs
NAME=ora.racdb.rac_fin.racdb1.srv
NAME=ora.racdb.rac_mfg.cs
NAME=ora.racdb.rac_mfg.racdb2.srv

[oracle@rac3 ~]$ srvctl start service -d racdb -s "ora.racdb.rac_fin.cs,ora.racdb.rac_mfg.cs"
PRKP-1025 : The service ora.racdb.rac_fin.cs does not exist.
PRKP-1025 : The service ora.racdb.rac_mfg.cs does not exist.
[oracle@rac3 ~]$ srvctl start service -d racdb -s "ora.racdb.rac_fin.racdb1.srv,ora.racdb.rac_mfg.racdb2.srv"
PRKP-1025 : The service ora.racdb.rac_fin.racdb1.srv does not exist.
PRKP-1025 : The service ora.racdb.rac_mfg.racdb2.srv does not exist.
[oracle@rac3 ~]$ srvctl start service -d racdb -s "rac_fin,rac_mfg"
[oracle@rac3 ~]$ crs_stat -t
Name           Type           Target    State     Host        
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    rac3        
ora....C3.lsnr application    ONLINE    ONLINE    rac3        
ora.rac3.gsd   application    ONLINE    ONLINE    rac3        
ora.rac3.ons   application    ONLINE    ONLINE    rac3        
ora.rac3.vip   application    ONLINE    ONLINE    rac3        
ora....SM2.asm application    ONLINE    ONLINE    rac4        
ora....C4.lsnr application    ONLINE    ONLINE    rac4        
ora.rac4.gsd   application    ONLINE    ONLINE    rac4        
ora.rac4.ons   application    ONLINE    ONLINE    rac4        
ora.rac4.vip   application    ONLINE    ONLINE    rac4        
ora.racdb.db   application    ONLINE    ONLINE    rac4        
ora...._fin.cs application    ONLINE    ONLINE    rac3        
ora....db1.srv application    ONLINE    ONLINE    rac3        
ora...._mfg.cs application    ONLINE    ONLINE    rac4        
ora....db2.srv application    ONLINE    ONLINE    rac4   
     
ora....b1.inst application    ONLINE    ONLINE    rac3        
ora....b2.inst application    ONLINE    ONLINE    rac4        
[oracle@rac3 ~]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 09-JAN-2014 00:12:00

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER_RAC3
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                08-JAN-2014 20:35:05
Uptime                    0 days 3 hr. 36 min. 55 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/ora10g/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /opt/ora10g/product/10.2.0/db_1/network/log/listener_rac3.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.203)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.103)(PORT=1521)))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
Service "+ASM_XPT" has 1 instance(s).
  Instance "+ASM1", status BLOCKED, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "RACDB" has 2 instance(s).
  Instance "racdb1", status READY, has 2 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
Service "RACDB_PR" has 2 instance(s).
  Instance "racdb1", status READY, has 2 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
Service "RACDB_PR_XPT" has 2 instance(s).
  Instance "racdb1", status READY, has 2 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
Service "rac_fin" has 1 instance(s).
  Instance "racdb1", status READY, has 2 handler(s) for this service...
Service "rac_mfg" has 1 instance(s).
  Instance "racdb2", status READY, has 1 handler(s) for this service...

Service "racdbXDB" has 2 instance(s).
  Instance "racdb1", status READY, has 1 handler(s) for this service...
  Instance "racdb2", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@rac3 ~]$ cd $ORACLE_HOME/network/admin
[oracle@rac3 admin]$ vim tnsnames.ora
[oracle@rac3 admin]$ tail -32 tnsnames.ora

rac_fin =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac3-vip)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac_fin)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )
rac_mfg =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac4-vip)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rac_mfg)
      (FAILOVER_MODE =
        (TYPE = SELECT)
        (METHOD = BASIC)
        (RETRIES = 180)
        (DELAY = 5)
      )
    )
  )

[oracle@rac3 admin]$ sqlplus system/oracle@rac_fin

SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jan 9 00:17:22 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
racdb1

SQL> select sid,SERVICE_NAME from v$session where sid=(select sid from v$mystat where rownum=1);

       SID SERVICE_NAME
---------- ----------------------------------------------------------------
       138 rac_fin

SQL> conn system/oracle@rac_mfg

Connected.
SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
racdb2

SQL> select sid,SERVICE_NAME from v$session where sid=(select sid from v$mystat where rownum=1);

       SID SERVICE_NAME
---------- ----------------------------------------------------------------
       147 rac_mfg

SQL>


通过以上步骤可以看到两个rac节点已被分割成了rac_fin和rac_mfg两个服务(业务).


--EOF--


2.对比将并行操作放在RAC多个节点执行和单个节点执行的效率。

INSTANCE_GROUPS和PARALLEL_INSTANCE_GROUP都是RAC参数,并且只能用于并行模式.
INSTANCE_GROUPS指定了节点属于哪个/哪些并行group,PARALLEL_INSTANCE_GROUP指定并行在哪个group里面的节点之间运行.

sqlplus / as sysdba
alter system set instance_groups='node1','allnodes' scope=spfile sid='racdb1';
alter system set instance_groups='node2','allnodes' scope=spfile sid='racdb2';
srvctl stop database -d racdb -o immediate
srvctl start database -d racdb

[oracle@rac3 admin]$ sqlplus scott/tiger

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jan 11 23:20:52 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> show parameter groups

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
asm_diskgroups                 string
instance_groups              string     node1, allnodes
SQL> show parameter instance_name

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
instance_name                 string     racdb1
SQL> create table t as select * from dba_objects;

Table created.

SQL> exec dbms_stats.gather_table_stats(user,'T');

PL/SQL procedure successfully completed.

SQL> alter session set tracefile_identifier = racpx;

Session altered.

SQL> alter session set events '10046 trace name context forever,level 12';

Session altered.

SQL> alter session set parallel_instance_group='allnodes';

Session altered.

SQL> select /*+ parallel(t,20) */ count(*) from t;

  COUNT(*)
----------
     46409

SQL> alter session set parallel_instance_group='node1';

Session altered.

SQL> select /*+ parallel(t,20) */ count(*) from t;

  COUNT(*)
----------
     46409

SQL> alter session set events '10046 trace name context off';

Session altered.

SQL> exit


[oracle@rac3 udump]$ tkprof racdb1_ora_6388_RACPX.trc racdb1_ora_6388_RACPX.trc.prf sys=no aggregate=no

TKPROF: Release 10.2.0.1.0 - Production on Sat Jan 11 23:36:50 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


[oracle@rac3 udump]$
...
********************************************************************************

alter session set parallel_instance_group='allnodes'


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       1        0.00          0.00
  SQL*Net message from client                     1        0.00          0.00
********************************************************************************

select /*+ parallel(t,20) */ count(*)
from
 t


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.02       1.09          0          3          0           0
Fetch        2      0.02       0.07          0          0          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.04       1.17          0          3          0           1

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 47

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  SORT AGGREGATE (cr=3 pr=0 pw=0 time=1171723 us)
     16   PX COORDINATOR  (cr=3 pr=0 pw=0 time=1167642 us)
      0    PX SEND QC (RANDOM) :TQ10000 (cr=0 pr=0 pw=0 time=0 us)
      0     SORT AGGREGATE (cr=0 pr=0 pw=0 time=0 us)
      0      PX BLOCK ITERATOR (cr=0 pr=0 pw=0 time=0 us)
      0       TABLE ACCESS FULL T (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  ----------  ------------
  KJC: Wait for msg sends to complete             2        0.00          0.00
  reliable message                                4        0.00          0.00
  enq: KO - fast object checkpoint                4        0.00          0.00
  enq: PS - contention                           28        0.00          0.01
  DFS lock handle                                49        0.19          0.93 (等待49次,最长一次耗时0.19秒,总共等待了0.93秒)
  PX Deq: reap credit                           431        0.00          0.01
  PX Deq: Join ACK                                7        0.01          0.03
  PX Deq Credit: send blkd                       17        0.01          0.02
  PX Deq: Parse Reply                            16        0.05          0.05
  SQL*Net message to client                       2        0.00          0.00
  PX Deq: Execute Reply                          33        0.00          0.05
  PX Deq: Signal ACK                              9        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
********************************************************************************

alter session set parallel_instance_group='node1'


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        2      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       1        0.00          0.00
  SQL*Net message from client                     1        0.00          0.00
********************************************************************************

select /*+ parallel(t,20) */ count(*)
from
 t


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.01          0          3          0           0
Fetch        2      0.00       0.02          0          0          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.04          0          3          0           1

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  SORT AGGREGATE (cr=3 pr=0 pw=0 time=46627 us)
      7   PX COORDINATOR  (cr=3 pr=0 pw=0 time=45644 us)
      0    PX SEND QC (RANDOM) :TQ10000 (cr=0 pr=0 pw=0 time=0 us)
      0     SORT AGGREGATE (cr=0 pr=0 pw=0 time=0 us)
      0      PX BLOCK ITERATOR (cr=0 pr=0 pw=0 time=0 us)
      0       TABLE ACCESS FULL T (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  ----------  ------------
  rdbms ipc reply                                 4        0.00          0.00
  KJC: Wait for msg sends to complete             1        0.00          0.00
  reliable message                                1        0.00          0.00
  enq: KO - fast object checkpoint                4        0.00          0.00
  enq: PS - contention                            8        0.00          0.00
  PX Deq: Join ACK                                3        0.00          0.00
  PX Deq: Parse Reply                             1        0.00          0.00
  SQL*Net message to client                       2        0.00          0.00
  PX Deq: Execute Reply                          46        0.00          0.02
  PX Deq: Signal ACK                              3        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
********************************************************************************
...


从以上trace可以看出本例中单节点的并行执行效率大大高于多节点的效率


参考
如何控制RAC跨节点并行计算
http://space6212.itpub.net/231499/viewspace-1045349/


--EOF--


3.演示RAC的cache fusion对数据块访问效率的影响。

通过trace以下两种情况来查看cache fusion对数据块访问效率的影响:

  a. 在节点1查询t2

  b. 在节点2更新t2表后,再次在节点1运行同样的查询

比较两次查询的资源消耗情况与等待事件.

[oracle@rac3 udump]$ sqlplus scott/tiger@racdb1

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jan 12 00:33:56 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> drop table t2 purge;

Table dropped.

SQL> create table t2 as select * from dept;

Table created.

SQL> exec dbms_stats.gather_table_stats(user,'T2');

PL/SQL procedure successfully completed.

SQL> alter session set tracefile_identifier = CF;

Session altered.

SQL> alter session set events '10046 trace name context forever,level 12';

Session altered.

SQL> select * from t2;

    DEPTNO DNAME      LOC
---------- -------------- -------------
    10 ACCOUNTING      NEW YORK
    20 RESEARCH      DALLAS
    30 SALES      CHICAGO
    40 OPERATIONS      BOSTON

SQL> select 'update t2 in another node and commit' notes from dual;

NOTES
------------------------------------
update t2 in another node and commit

+========================================================+
在节点2更新t2并提交,此处在另一个session中运行:
[oracle@rac4 ~]$ sqlplus scott/tiger@racdb2

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jan 12 00:29:01 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> update t2 set loc='testloc';

4 rows updated.

SQL> commit;

Commit complete.

SQL>
+========================================================+

以下回到节点1:
SQL> select * from t2;

    DEPTNO DNAME      LOC
---------- -------------- -------------
    10 ACCOUNTING      testloc
    20 RESEARCH      testloc
    30 SALES      testloc
    40 OPERATIONS      testloc

SQL> alter session set events '10046 trace name context off';

Session altered.

SQL> exit

[oracle@rac3 udump]$ tkprof racdb1_ora_32125_CF.trc racdb1_ora_32125_CF.trc.prf sys=no aggregate=no


TKPROF: Release 10.2.0.1.0 - Production on Sun Jan 12 00:36:13 2014

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


[oracle@rac3 udump]$ view racdb1_ora_32125_CF.trc.prf
...
********************************************************************************

alter session set events '10046 trace name context forever,level 12'


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        0      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        0      0.00       0.00          0          0          0           0
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        1      0.00       0.00          0          0          0           0

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       1        0.00          0.00
  SQL*Net message from client                     1        0.00          0.00
********************************************************************************

select *
from
 t2


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          4          0           4
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          0          4          0           4

Misses in library cache during parse: 1
Optimizer mode: ALL_ROWS
Parsing user id: 47

Rows     Row Source Operation
-------  ---------------------------------------------------
      4  TABLE ACCESS FULL T2 (cr=4 pr=0 pw=0 time=38 us)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
********************************************************************************

select 'update t2 in another node and commit' notes
from
 dual


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          0          0          0           1
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          0          0          0           1

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Rows     Row Source Operation
-------  ---------------------------------------------------
      1  FAST DUAL  (cr=0 pr=0 pw=0 time=5 us)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
  library cache lock                              1        0.00          0.00
********************************************************************************

select *
from
 t2


call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.00       0.00          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch        2      0.00       0.00          4          4          0           4
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total        4      0.00       0.00          4          4          0           4

Misses in library cache during parse: 0
Optimizer mode: ALL_ROWS
Parsing user id: 47

Rows     Row Source Operation
-------  ---------------------------------------------------
      4  TABLE ACCESS FULL T2 (cr=4 pr=4 pw=0 time=2262 us)


Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                       2        0.00          0.00
  gc cr multi block request                       2        0.00          0.00
  db file scattered read                          1        0.00          0.00
  SQL*Net message from client                     2        0.00          0.00
********************************************************************************
...


从trace可以看出本例中cache fusion使得查询消耗的时间增加了60倍, 极大地降低了数据块访问效率.


--EOF--


4.写出你对RAC的性能以及适用场景的观点。

通过把并行进程分散到rac的节点能更加充分的利用各个节点的计算能力,可能能够提升程序的性能,但是如果cache fusion情况严重,则可能损害性能.

因此部署rac的主要目的应是通过实例冗余实现高可用,而不是提高性能.


--EOF--

0 0
原创粉丝点击