1.数据库优化的时期:数据库的优化从设计,数据库的安装已经开始。
2.数据库性能的主要指标是响应时间。影响数据库增长率的表的种类:
A 静态参数表(应用相关表):相对稳定
B动态数据表(事务相关表):缓慢增长
C数据表(事务表):增长的主要因素
D临时/接口表
3.数据库优化的主要方法:
A网络
B硬件优化 主要在应用程序调整的初期。
C操作系统的优化
.Unix系统
调整参数:共享内存和信号灯
监测工具:
工具 主要关心的参数
iostat bps和tps
vmstat page fault,page pin,page pount
.WindowNT
使不必要的服务失效
取消屏幕保护
只将机器用做数据库服务器
如果是WINDOWSNT系统
控制面扳中Network tool –Properties下面四个选项中选择Maximize Throughput for Network Application
控制面扳中System tool—Performance中boost选择None,减少文件系统缓冲
利用性能监视器监视数据库服务器,分析性能瓶颈
利用微软资源工具箱(resources pake)中的工具(Process Viewer、Process Explode、Quick Slice、Process Stat)监视数据库服务器,决定操作系统是否优化
D数据库系统优化
原理:合理的分配内存大小;合理的设置表空间体系和内部空间参数。
内存结构的优化是通过int.ora文件的环境参数来配置。
主要参数:db_block_size可增大,Shared_pool_size性能指标free memory,log_buffer
监测工具:a.toad或tora(linux) b.Utlbstat和utlestat这两个文件在oracle_home/rdbms/admin下,在运行脚本前注意更改tiemed_statistic为true,运行后查看report文件。
经验:表空间设计的时候应遵循oracle的最优化体系结构建议;db_block_buffers和library_cache都要保证合理的命中率;为了使全表扫描的效率最高,每个extent(数据区)都应该db_block_size*db_fiel_multiblock_read_count的倍数;如果是非常大的表,做sql*loader或者export操作时要使用direct选项,创建非常大的表和索引时要使用nologing选项。SELECT Segment_Name,BYTES/1024/1024,BLOCKS,EXTENTS FROM USER_SEGMENTS where Segment_Name = '&table_name';可以查看表的大小,占用多少个数据块,在segment上的extent数目;select Segment_Name,extent_id,bytes/64,blocks from user_extents where Segment_Name = '&table_name'可以查看每个extents上有多少数据块,每个extent需要做多少次多块读取。
E应用程序优化
批处理应用的优化:使用存储过程,经常使用的小表缓存(可创建表的时候缓存或在select中使用cache hint),对大表整理(比如排序)。
单条Sql语句的优化:查找最影响性能的sql语句的方法
select Executions,
Disk_Reads,
Buffer_Gets,
Round((Buffer_Gets - Disk_Reads) / Buffer_Gets, 2) Hit_Radio,
Round(Disk_Reads / Executions, 2) Reads_Per_Run,
Sql_Text
from V$sqlarea
where Executions > 0
and Buffer_Gets > 0
and (Buffer_Gets - Disk_Reads) / Buffer_Gets < 0.8
order by 4 desc;
对大表创建索引:使用选择性高的索引,同时要控制索引的大小。