oracle 10g 数据库性能优化的调整
1.内存优化
1.1 数据缓冲调整
查看数据库内存参数
select name,value from v$parameter where name in ('db_cache_size','db_block_size','shared_pool_size','sort_area_size');
查看数据缓冲区数据存储状况(物理读的数据越接近于0,说明越多在缓冲区读出)
select name,value from v$sysstat
where name in ('db block gets','consistent gets','physical reads');
1 db block gets 7071300
2 consistent gets 146208357
3 physical reads 23213790
1.2 共享池调整
如果运行较多的SQL PL/SQL则较多用到共享池。 由shared_pool_size 参数决定的
select to_number(v$parameter.value) value,
v$sgastat.bytes,
(v$sgastat.bytes/v$parameter.value)*100 as "占比"
from v$sgastat,v$parameter
where v$sgastat.name='free_memory' and
v$parameter.name='shared_pool_size';
1.3 日志缓冲调整
如果内存资源十分大时,可以增加日志缓冲区
select name,sum(gets),sum(misses)
from v$latch
where name like 'redo%'
group by name;
失败表示在进入日志缓冲区时存在等待。
1.4 排序区调整
用到以下语句的
CREATE INDEX
SELECT ...... ORDER BY
SELECT ...... DISTINCT
SELECT ...... GROUP BY
SELECT ...... UNION
参数SORT_AREA_SIZE用于设置排序区的大小
select name,value from v$sysstat where name like '%sort%'
然后算出失败率=SORT(DISKS)/SORT(MEMORY) *100% 这个应该5%以内。如果不是的话 调整SORT_AREA_SIZE
2.磁盘I/O优化与调整
运用以下语句在数据库读写最繁忙的时候查询磁盘的读写情况
select substr(a.file#,1,2) ,
a.status,
a.bytes,
b.phyrds,
b.phywrts,
substr(a.name,1,50)
from v$datafile a,v$filestat b
where a.file#=b.file#
调整后 I/O的竞争应该趋于平衡。
3.CPU调整问题
4.SQL语句优化问题
4.1 分析SQL语句的执行过程
4.2 将常用的实体驻留内存
4.3 创建索引
4.4 创建聚簇
4.5 创建哈希索引
4.6SQL优化器
5.数据库参数的动态统计
6.小结