SQL tuning

坑爹的笔记还没有做完…………

 

PGA&SGA

 

   PGA:(program global area)程序全局区主要包括两个部分:session areaprivate SQL area

   Session area:包括会话信息,比如说:跟踪信息、使用alter session的命令修改的环境参数、打开的DB Links、会话拥有的角色(role)等。

Private SQL area:每个执行的SQL都会申请一个private SQL area,这些内存又可以分为两个部分:persisten AreaRun-time Area

Persisten Area:区域主要是存放绑定变量、数据类型转换等cursor信息,一旦cursor关闭之后,这块区域也被释放。

Run-time Area区域在SQL运行过程中使用,其大小依赖于SQL语句的操作方式(sort或者是hash-join)、要处理的数据行数和每行记录的大小。

PGA的调整也是对private SQL area调整中的run-time-area调整。

 

查看PGA的使用情况:

SQL> select spid,program,pga_max_mem,pga_alloc_mem alloc,pga_used_mem used, pga_freeable_mem free 

from V$process where spid in

 (

select spid from v$process where addr in

 (

select paddr from V$session where sid in 

(

select distinct sid from v$mystat

)

)

);

 

SPID   PROGRAM                     PGA_MAX_MEM  ALLOC   USED   FREE

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

4536 oracle@pioncare91.domain.com (TNS V1-V3) 39049513 2499185 1043949    1048576

 

V$process_menmory中查看PGS各个分区的分配大小

 

SQL>  select p.program,p.spid,pm.category,pm.allocated,pm.used,pm.max_allocated

 from V$process p ,V$process_memory pm 

where p.pid=pm.pid and p.spid in 

(

 select spid from v$process where addr in

 (

select paddr from v$session  where sid in

 (

select distinct sid from v$mystat

)

)

);

 

PROGRAM            SPID   CATEGORY  ALLOCATED  USED MAX_ALLOCATED

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

oracle@pioncare91.domain.com (TNS V1-V3)  4536 SQL  208884  146072     1030084

oracle@pioncare91.domain.com (TNS V1-V3)  4536 PL/SQL 26316  21380     30468

oracle@pioncare91.domain.com (TNS V1-V3)  4536 Other   2460593         37988961

 

 

 

SQL语法执行过程:

1、synatic:语法分析,检查SQL语法是否错误,有没有拼写错误。

2、Semantic:语义分析,检查要查询的对象是否存在,以及用户是否有对应对象的操作权限。

3、Parent cursor:在library cache中检查语句中的cursor是否存在,如果存在可重用的cursor,则可以把PGA中的private SQL Area和其关联,然后跳至第八步,此过程叫做软解析;如果不存在则申请一个parent cursorparent cursor就是用来保存SQL语句的,然后进行第四布

4、View Merge:如果用户的语句中用到了视图,则把视图语句合并到用户语句中;

5、Statement transformation:把复杂的SQL转换成简单的SQL语句,比如展开子查询等;

45又可以叫做logical optimization

6、Optimization:确定最佳的访问路径,选择最小代价的访问方式;physical optimization

7、QEP generation:(生成执行计划),QEP query Execution Plan,也就是产生child cursor执行计划会保存在child cursor中,并和parent cursor相关联;

8、QEP Execution:执行语句,生成结果。

 

 

从某本书中SQL tuning里面还没有看到实际操作,MBmark一下下次继续奋战

posted @ 2011-11-15 04:49    阅读(362)  评论(0编辑  收藏  举报