技术开发 频道

Oracle数据库优化之系统全局区(SGA)

  【IT168 技术文档】

  调整操作系统的内存需求

   减少页的换入换出;

   将SGA置于主存之中

  使用SGA的主要目的是为了在内存中存储数据,以利于快速访问。通过设置初始化参数PRE_PAGE_SGA=YES,在数据库启动时,可以将整个SGA读入内存,这样会减少在启动后ORACLE达到全部性能的总的时间。

  使用如下命令可以查看SGA所分配的内存以及其内部的结构:

  SVRMGR> SHOW SGA

  Total System Global Area 107720688 bytes

  Fixed Size 69616 bytes

  Variable Size 90701824 bytes

  Database Buffers 16777216 bytes

  Redo Buffers 172032 bytes

   为单个用户分配足够的内存

  调整redo log缓冲区

  参数LOG_BUFFER指定了REDO LOG的缓冲区的保留大小。LOG写进程(LGWR)在该缓冲区被填充时总是运行的,在新的LOG进入缓冲区时,原来的LOG应已经写入磁盘。

  调整私有sql和pl/sql区

   标识不必要的语法分析调用

  1. 在sql跟踪工具有效时运行应用

  2. 查看视图V$SQLAREA view

  SVRMGR> select sql_text,parse_calls,executions from v$sqlarea ;

  如果parse_calls值接近execution值,可能就是不断地对sql语句进行语法分析

  3. 执行如下查询:

  select *from v$statname where name in (‘parse_count(hard)’,’execute_count’);

  其结果类似于:

  statistic#, name

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

  100 parse_count

  90 execute_count

  然后执行如下查询:

  select * from v$sesstat where statistics# in(90,100) order by value , sid ;

   减少不必要的语法分析调用

  初始化参数open_cursors的最大值依赖于操作系统,最少值为5

0
相关文章